No se puede conectar a través de MySQL Workbench a localhost en Ubuntu 16.04 (root sin contraseña)

17

El sitio web de Oracle parece implicar que solo funciona en 15 y 14. http://dev.mysql.com/downloads/workbench/

Además, dos de mis máquinas Ubuntu 16.04 no parecen poder conectarse (errores de acceso denegado para root)

Imagen

Se instala bien. Se abre bien. Pero no se conectará a localhost.

Alguien tiene suerte?

Jonathan
fuente
¿Lo construiste desde la fuente? ¿Cuál es el error exacto dado? ¿Similar a cuando especifica una contraseña incorrecta?
Si es similar. Pero root no tiene contraseña. Y puedo conectarme a la raíz en la línea de comando correctamente. Y verifiqué dos veces todos los privilegios y corrí. FLUSH PRIVILEGES; En este punto tengo curiosidad por saber si alguien puede conectarse a localhost desde el 16, ya que el sitio de Oracle dice explícitamente solo 14 y 15
Jonathan
No vi a Oracle hacer un reclamo de que no funciona, simplemente no vi un binario para Xenial. Sin embargo, sí veo mysql-workbench aquí, packages.ubuntu.com/xenial/mysql-workbench . Ese error no parece un error de compatibilidad de software. Active el inicio de sesión en mysql y aumente el nivel de registro a 2 y vea si el registro muestra su solicitud.
@ bc2946088 mysql-workbenchestá en el repositorio del universo para el enlace
Videonauth
¿Marcó alguna de las 4 opciones? ;-) WB funciona perfectamente bien para mí (con 5.7 por cierto). Prueba a continuación.
Rinzwind

Respuestas:

27

El problema probablemente se deba a que la autenticación de socket está habilitada para el usuario raíz de forma predeterminada cuando no se establece una contraseña, durante la actualización a 16.04. Esta importante advertencia está documentada en las notas de la versión 16.04 :

El comportamiento de la contraseña cuando la contraseña raíz de MySQL está vacía ha cambiado. El paquete ahora habilita la autenticación de socket cuando la contraseña raíz de MySQL está vacía. Esto significa que un usuario no root no puede iniciar sesión como usuario root de MySQL con una contraseña vacía.

Por alguna razón, el MySQL Workbench que viene con 16.04 no funciona de inmediato con el servidor MySQL, al menos para mí. Intenté usar "Local Socket / Pipe" para conectarme de diferentes maneras, pero fue en vano.

La solución es volver a la autenticación de contraseña nativa. Puede hacerlo iniciando sesión en MySQL utilizando la autenticación de socket haciendo:

sudo mysql -u root

Una vez conectado:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

que volverá a la autenticación de contraseña nativa (antigua predeterminada). Si ha intentado algún otro método para solucionar el problema, querrá asegurarse de que el campo "plugin" en mysql.user esté configurado en "auth_token", lo que puede requerir el uso de mysqld_safe para iniciar sesión en MySQL en caso de que He estado jugando con cosas, como lo hice yo.

Gracias a la publicación del blog de Miguel Nieto por esta solución.

Mike M
fuente
Increíble, nunca me habría dado cuenta de esto.
Jonathan
Esto lo solucionó, pero la próxima vez que ejecuté apt update se rompió nuevamente.
Jonathan
¿Cuál fue el resultado de la actualización de apt?
Mike M
No lo vi, porque no me di cuenta hasta la próxima vez que ejecuté mysql, mucho más tarde
Jonathan
Me pregunto si esto es algo de Ubuntu 16.04 o mysql 5.7 (¿fue Oracle o Canonical quien hizo este cambio?)
Jonathan
22

MySQL 5.7 y versiones posteriores no admiten la conexión como "root", por mysql-workbenchlo que debe crear un usuario normal y conectarse a través de eso.

sudo mysql -u root -p

Cree un usuario llamado "admin" y úselo para conectarse mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Jonathan
fuente
Esta respuesta fue perfecta para mí, gracias Jonathan.
Chris Evans
2
Esto funciona para Ubuntu 18.04
tadeubarbosa
Perfecto. Gracias (18.04.2)
Ron Nuni
4

Esta pregunta podría tener dos años, pero mi trabajo con mysql-workbench esta noche parece haberme dado la respuesta.

usuario root ahora usuarios autenticación auth_socket por defecto. La única forma en que root puede obtener acceso es iniciando sesión como root.

Lo descubrí ejecutándome mysql -u rootcomo usuario root y como usuario estándar.

No funcionaría con un usuario estándar.

Entonces mi siguiente pregunta fue: ¿con qué usuario se ejecuta mysql-workbench? Resulta que se ejecuta como usuario estándar de forma predeterminada. Para que se ejecute como usuario root, debe ejecutarse desde root. Así que entré en la CLI del usuario root y escribí 'mysql-workbench'.

Luego tuve que ir a la configuración del usuario root como se muestra aquí. La ubicación del archivo es válida para una instalación de ubuntu 18.04.

Configuración de conexión raíz mysql-workbench.

Si esa ubicación del socket no es válida, deberá ingresar a la CLI de mysql desde la raíz o sudo y ejecutar el siguiente comando.

Comando MySQL CLI para encontrar el socket.

Después de tener la configuración correcta, pruebe la conexión. Debería tener éxito y estás listo para comenzar.

George Tasker
fuente
¡Gracias por esto! No debería tener que revertir los cambios relacionados con la seguridad a la autenticación para admitir una herramienta más antigua, cuando solo puedo decirle a esa herramienta que se conecte utilizando el método más nuevo.
Aaron
¿Logro una conexión local de esta manera? No entiendo por qué no podemos conectarnos a través de TCP / IP.
john gonidelis
2

Funciona bien para mí y no hice nada especial. Instalado mysql-server-5.7y workbench tanto desde la línea de comando como configurando un usuario con una contraseña y configurando los permisos normales de la base de datos (también con el método normal).

ingrese la descripción de la imagen aquí

Y con una base de datos y una tabla:

ingrese la descripción de la imagen aquí

Rinzwind
fuente
Interesante. Me encanta la referencia del mundo del disco. Cuando vuelvo a configurar los paquetes mysql, no recibo un mensaje para cambiar la contraseña. ¿Vos si? Me inclino a pensar que tengo una instalación corrupta o algún conflicto. Creo que se supone que debo recibir un mensaje para cambiar la contraseña de root.
Jonathan
1

Cree una cuenta de usuario con los privilegios administrativos apropiados que se pueden conectar a través de mysql workbench utilizando el complemento auth_socket. Tenga en cuenta que esto no funciona para conexiones raíz al servidor mysql .

Inicie sesión en mysql desde una sesión de terminal:

$sudo mysql

Si puede hacer esto, el complemento auth_socket está habilitado y la cuenta raíz se autentica utilizando este complemento. Tenga en cuenta que esta es la configuración predeterminada al instalar mysql en ubuntu después de haber ejecutado el script de instalación segura.

Primero cree un usuario mysql para su cuenta 'valerie':

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

Habilite los privilegios administrativos para la cuenta:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

Salga de la cáscara:

mysql> exit

Luego en mysql workbench:

  1. Crea una nueva conexión
  2. Seleccione el método de conexión como enchufe local / tubería
  3. Establezca la ruta Socket / Pipe en: /var/run/mysqld/mysqld.sock (tenga en cuenta que esta es la ruta para un sistema Debian / Ubuntu y cambios para otros sabores de Linux)
  4. Establezca el nombre de usuario ('valerie' en este ejemplo)

Debería poder conectarse al servidor mysql con esta conexión.

David
fuente
0

prueba esto

seleccione la base de datos mysql

1: usa mysql;

2: ACTUALIZAR el conjunto de usuarios plugin = 'mysql_native_password' donde Usuario = 'root';

3: privilegios de descarga;

4: salida;

~ $ sudo service mysql restart

URI
fuente
0

Servidor MySQL en host AWS con Ubuntu 16.04; mysql-workbench en una computadora portátil Ubuntu 16.04; usa la conexión KeyPair.

Después de configurar la conexión Test db estaba funcionando. Pero la conexión real siempre fallaba con un mensaje como el publicado por Jonathan Leaders. Revisé el registro en ~/.mysql/workbench/logy encontré algunos mensajes de "permiso denegado" .

Ahora puedo hacer que mysql-workbench funcione con: sudo mysql-workbench

Y luego puedo ir y chmodlos directorios que necesitan permiso.

Usman Suleman
fuente
2
¿Es esta una respuesta a la pregunta?
George Udosen