mysql phpmyadmin database-connection mysql-8.0

phpMyAdmin en MySQL 8.0



database-connection mysql-8.0 (12)

Como muchos han señalado en otras respuestas, cambiar el complemento de autenticación predeterminado de MySQL a Native hace el truco.

Aún así, como no puedo usar el nuevo complemento caching_sha2_password , esperaré hasta que se desarrolle la compatibilidad para cerrar el tema.

He instalado el servidor MySQL 8.0 y phpMyAdmin, pero cuando intento acceder a él desde el navegador se producen los siguientes errores:

#2054 - The server requested authentication method unknown to the client mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

Me imagino que debe tener algo que ver con las contraseñas seguras implementadas y la relativa frescura de la versión de MySQL.

Pero no sé nada de la configuración más avanzada de controladores y conexiones.

¿Alguien ha enfrentado el mismo problema y lo ha resuelto? :RE

Editar
instalado con apt

apt-get install mysql-server phpmyadmin


Como se mencionó @kgr, MySQL 8.0.11 realizó algunos cambios en el método de autenticación.

He abierto un informe de error de phpMyAdmin sobre esto: https://github.com/phpmyadmin/phpmyadmin/issues/14220 .

MySQL 8.0.4-rc funcionaba bien para mí, y creo que es ridículo que MySQL haga tal cambio en una versión de nivel de parche.


El nuevo MySQL 8.0.11 está usando caching_sha2_password como método de autenticación predeterminado. Creo que phpMyAdmin no puede entender este método de autenticación. CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY ''passw0rd'' crear un usuario con uno de los métodos de autenticación más antiguos, por ejemplo, CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY ''passw0rd'' .

Más aquí https://dev.mysql.com/doc/refman/8.0/en/create-user.html y aquí https://dev.mysql.com/doc/refman/8.0/en/authentication-plugins.html


Fui al sistema

preferencias -> mysql -> inicializar base de datos -> usar cifrado de contraseña heredada (en lugar de fuerte) -> ingresó la misma contraseña

como mi archivo config.inc.php , reinició el servidor apache y funcionó. Todavía sospechaba de ello, así que detuve el servidor apache y mysql, los volví a iniciar y ahora está funcionando.


Inicie sesión en la consola MySQL con usuario root :

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

y cambie el complemento de autenticación con la contraseña allí:

mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY ''PASSWORD''; Query OK, 0 rows affected (0.08 sec)

Puede leer más información sobre el complemento de autenticación preferido en el Manual de referencia de MySQL 8.0

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

Funciona perfectamente en un entorno de acoplamiento:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest docker exec -it mysql bash mysql -u root -pPASSWORD ALTER USER root IDENTIFIED WITH mysql_native_password BY ''PASSWORD''; exit exit docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

Así que ahora puede iniciar sesión en phpMyAdmin en http: // localhost: 8080 con root / PASSWORD

mysql / mysql-server

Si está usando mysql/mysql-server docker image

Pero recuerde, es solo una solución "rápida y sucia" en el entorno de desarrollo. No es aconsejable cambiar el https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password .

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY ''PASSWORD'';" docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

Solución actualizada al 10/04/2018

Cambie el complemento de autenticación predeterminado de MySQL haciendo un comentario sobre la configuración default_authentication_plugin=mysql_native_password en /etc/my.cnf

Úselo bajo su propio riesgo

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest docker exec -it mysql sed -i -e ''s/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g'' /etc/my.cnf docker stop mysql; docker start mysql docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest


Otra idea: mientras phpmyadmin y otras herramientas de php no funcionen con él, simplemente agregue esta línea a su archivo /etc/mysql/my.cnf

default_authentication_plugin = mysql_native_password

Ver también: Mysql Ref.

Sé que esto es un problema de seguridad, pero ¿qué hacer si las herramientas no funcionan con caching_sha2_password?


Para solucionar este problema, acabo de ejecutar una consulta en mi consola mysql .

Para esto inicie sesión en la consola mysql usando este

mysql -u {username} -p{password}

Después de esto, simplemente ejecuto una consulta como se indica a continuación:

ALTER user ''{USERNAME}''@''localhost'' identified with mysql_native_password by ''{PASSWORD}'';

cuando ejecuto esta consulta recibí un mensaje que se ejecutó la consulta. Luego inicie sesión en PHPMYADMIN con nombre de usuario / contraseña.


Resolví este problema haciendo lo siguiente:

  1. Agregue default_authentication_plugin = mysql_native_password a la
    [mysqld] sección de my.cnf
  2. Ingrese mysql y cree un nuevo usuario haciendo algo como CREATE USER ''root''@''localhost'' IDENTIFIED BY ''password'';
  3. Otorgue privilegios según sea necesario. Por ejemplo, GRANT ALL PRIVILEGES ON * . * TO ''root''@''localhost''; GRANT ALL PRIVILEGES ON * . * TO ''root''@''localhost''; y luego los FLUSH PRIVILEGES;
  4. Inicie sesión en phpmyadmin con nuevo usuario

Resolví este problema haciendo lo siguiente:

  1. Entrar a las preferencias del sistema -> mysql

  2. Seleccione "Inicializar base de datos" e ingrese una nueva contraseña de root seleccionando "Usar cifrado de contraseña heredada".

  3. Inicie sesión en phpmyadmin con la nueva contraseña.


Resolví esto con MySQL 8.0.12 ejecutando:

mysql_upgrade -u root


Resolví mi problema básicamente con la respuesta de András:

1- Inicie sesión en la consola MySQL con usuario root:

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

Y escriba la contraseña de la raíz para autenticar.

2- Creé un nuevo usuario:

mysql> CREATE USER ''user''@''hostname'' IDENTIFIED BY ''password'';

3- Concede todos los privilegios al nuevo usuario:

mysql> GRANT ALL PRIVILEGES ON *.* To ''user''@''hostname'';

4- Cambie el complemento de autenticación con la contraseña:

mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY ''PASSWORD'';

Ahora, phpmyadmin funciona bien registrando al nuevo usuario.


Si está utilizando el contenedor oficial de mysql docker, hay una solución simple:

Agregue la siguiente línea a su servicio de composición acoplable:

command: --default-authentication-plugin=mysql_native_password

Ejemplo de configuración:

mysql: image: mysql:8 networks: - net_internal volumes: - mysql_data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=db command: --default-authentication-plugin=mysql_native_password