phpMyAdmin для MySQL 8.0

Я установил сервер MySQL 8.0 и phpMyAdmin, но когда я пытаюсь получить к нему доступ из браузера, возникают следующие ошибки:

#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

Я полагаю, что это должно иметь какое-то отношение к сильным паролям и относительной свежесть версии MySQL.

Но я ничего не знаю о самой передовой конфигурации драйвера и подключения.

Кто-то столкнулся с той же проблемой и решил ее? : D

редактировать
установленный с apt

apt-get install mysql-server phpmyadmin

Ответ 1

Войдите в консоль MySQL от имени пользователя root:

[email protected]:/# mysql -u root -pPASSWORD

и измените плагин аутентификации с паролем там:

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

Вы можете прочитать больше информации о Предпочтительном Плагине Аутентификации в Справочном руководстве MySQL 8.0

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 -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

Теперь вы можете войти в phpMyAdmin по адресу http://localhost: 8080, используя root/PASSWORD.


MySQL/MySQL-сервер

Если вы используете mysql/mysql-server docker image

Но помните, это просто "быстрое и грязное" решение в среде разработки. Не стоит менять плагин MySQL Preferred Authentication.

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

Обновленное решение на 10/04/2018

Измените подключаемый модуль аутентификации MySQL по умолчанию, раскомментировав параметр default_authentication_plugin=mysql_native_password в /etc/my.cnf

Используйте на свой риск

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

Обновленный обходной путь на 30/01/2019

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 exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

default_authentication_plugin

Ответ 2

Новый MySQL 8.0.11 использует caching_sha2_password качестве метода аутентификации по умолчанию. Я думаю, что phpMyAdmin не может понять этот метод аутентификации. Вам нужно создать пользователя с одним из старых методов проверки подлинности, например, CREATE USER [email protected] IDENTIFIED WITH mysql_native_password BY 'passw0rd'.

Подробнее здесь https://dev.mysql.com/doc/refman/8.0/en/create-user.html и здесь https://dev.mysql.com/doc/refman/8.0/en/authentication-plugins.html

Ответ 3

Другая идея: до тех пор, пока phpmyadmin и другие инструменты php не работают с ней, просто добавьте эту строку в свой файл /etc/mysql/my.cnf

default_authentication_plugin = mysql_native_password

См. Также: Mysql Ref

Я знаю, что это проблема безопасности, но что делать, если инструменты не работают с caching_sha2_password?

Ответ 4

Я решил эту проблему, выполнив следующие действия:

  1. Добавьте default_authentication_plugin = mysql_native_password в
    [mysqld] раздела my.cnf
  2. Введите mysql и создайте нового пользователя, выполнив что-то вроде CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
  3. При необходимости предоставляйте привилегии. Например, GRANT ALL PRIVILEGES ON *. * TO 'root'@'localhost'; GRANT ALL PRIVILEGES ON *. * TO 'root'@'localhost'; а затем FLUSH PRIVILEGES;
  4. Войдите в phpmyadmin с новым пользователем

Ответ 5

Я пошел в систему

предпочтения → mysql → инициализировать базу данных → использовать устаревшее шифрование пароля (вместо сильного) → ввести тот же пароль

как мой файл config.inc.php, перезапустил сервер Apache, и он сработал. Я все еще подозревал об этом, поэтому я остановил сервер apache и mysql и начал их снова, и теперь он работает.

Ответ 6

Я решил свою проблему в основном с ответом Андраса:

1- Войдите в консоль MySQL с пользователем root:

[email protected]:/# mysql -u root -pPASSWORD

И введите пароль root для auth.

2- Я создал нового пользователя:

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

3- Предоставьте всем привилегии новому пользователю:

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

4- Измените плагин аутентификации с паролем:

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

Теперь phpmyadmin отлично работает, регистрируя нового пользователя.

Ответ 7

Чтобы исправить эту проблему, я просто запускаю один запрос в моей консоли mysql.

Для этого входа в консоль mysql, используя этот

mysql -u {username} -p{password}

После этого я просто запускаю один запрос, как показано ниже:

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

когда я запускаю этот запрос, я получил сообщение, которое выполнил запрос. Затем войдите в PHPMYADMIN с именем пользователя/паролем.

Ответ 8

У меня была эта проблема, я не нашел ни одного ini файла в Windows, но решение, которое работало для меня, было очень простым.
1. Откройте установщик mysql.
2. Переконфигурируйте сервер mysql, это первая ссылка.
3. Перейти к методу аутентификации.
4. Выберите "Устаревшая аутентификация".
5. Дайте свой пароль (следующее поле).
6. Примените изменения.

Вот и все, надеюсь, что мое решение тоже подойдет вам!

Ответ 9

Я решил эту проблему, выполнив следующие действия:

  1. Войдите в системные настройки → mysql

  2. Выберите "Инициализировать базу данных" и введите новый пароль root, выбрав "Использовать шифрование устаревших паролей".

  3. Войдите в phpmyadmin с новым паролем.

Ответ 10

Как упоминалось в @kgr, MySQL 8.0.11 внесла некоторые изменения в метод аутентификации.

Я открыл отчет об ошибке phpMyAdmin об этом: https://github.com/phpmyadmin/phpmyadmin/issues/14220.

MySQL 8.0.4-rc отлично работал для меня, и я как бы считаю смешным для MySQL сделать такое изменение в выпуске уровня патча.

Ответ 11

Если вы используете официальный контейнер mysql docker, существует простое решение:

Добавьте следующую строку в службу поддержки докеров:

command: --default-authentication-plugin=mysql_native_password

Пример конфигурации:

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

Ответ 12

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

Авторизуйтесь через командную строку, после этого все будет работать.

Ответ 14

Я решил это с помощью MySQL 8.0.12, выполнив:

mysql_upgrade -u root

Ответ 15

в моем случае, чтобы исправить это, я предпочел создать нового пользователя для использования с PhpMyAdmin, потому что изменение пользователя root вызвало проблемы с собственным входом в другие приложения, такие как MySQL WorkBench.

Вот что я сделал:

  • Войдите в консоль MySQL от имени пользователя root: mysql -u root -p, введите свой пароль.
  • Давайте создадим нового пользователя в оболочке MySQL:
CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
  • На этом этапе имя newMysqlUsername не имеет права что-либо делать с базами данных. Поэтому необходимо предоставить пользователю доступ к информации, которая ему потребуется.
GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';
  • После того, как вы завершили разрешения, которые хотите настроить для своих новых пользователей, всегда обязательно перезагрузите все привилегии.
FLUSH PRIVILEGES;
  • Выйдите из системы, введя quit или \q, и ваши изменения вступят в силу, мы можем войти в PhpMyAdmin с новым пользователем, и он получит доступ к базам данных.

  • Также вы можете войти в систему с помощью этой команды в терминале:

mysql -u newMySqlUsername -p

Ответ 16

Вы все благословение :) Спасибо за это исправление... Я ломал голову последние 40 минут...

Ответ 17

Я использовал ALTER USER [email protected] IDENTIFIED WITH mysql_native_password BY 'PASSWORD'; это сработало

Ответ 18

Вы можете изменить Аутентификацию, если вы работаете в Windows, переконфигурировав установку, запустив msi. Он попросит изменить аутентификацию по умолчанию на унаследованную, затем вы можете перейти к этой опции, чтобы изменить аутентификацию на унаследованную.