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
Я решил эту проблему, выполнив следующие действия:
- Добавьте
default_authentication_plugin = mysql_native_password
в
[mysqld] раздела my.cnf - Введите mysql и создайте нового пользователя, выполнив что-то вроде
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
- При необходимости предоставляйте привилегии. Например,
GRANT ALL PRIVILEGES ON *. * TO 'root'@'localhost';
GRANT ALL PRIVILEGES ON *. * TO 'root'@'localhost';
а затем FLUSH PRIVILEGES;
- Войдите в 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
Я решил эту проблему, выполнив следующие действия:
-
Войдите в системные настройки → mysql
-
Выберите "Инициализировать базу данных" и введите новый пароль root, выбрав "Использовать шифрование устаревших паролей".
-
Войдите в 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';
Авторизуйтесь через командную строку, после этого все будет работать.
Ответ 13
Как указывалось в других ответах, изменение плагина аутентификации по умолчанию MySQL на native делает трюк.
Тем не менее, поскольку я не могу использовать новый плагин caching_sha2_password, я подожду, пока не будет разработана совместимость для закрытия темы.
Ответ 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. Он попросит изменить аутентификацию по умолчанию на унаследованную, затем вы можете перейти к этой опции, чтобы изменить аутентификацию на унаследованную.