it-swarm.com.ru

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
32
Lucas Noetzold

Войдите в консоль 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/ru/upgrading-from-previous-series.html#upgrade-caching-sha2-password

Он отлично работает в среде docker:

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

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

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

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

46
András Szabácsik

Новый 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/ru /authentication-plugins.html

17
kgr

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

  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';, а затем FLUSH PRIVILEGES;
  4. Войдите в phpmyadmin с новым пользователем
12
user1706897

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

default_authentication_plugin = mysql_native_password

Смотрите также: Mysql Ref

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

12
sneaky

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

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

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

8
Claire

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

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

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

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

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 отлично работает, регистрируя нового пользователя.

5
Bruno Carazato

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

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

  2. Выберите «Initialize database» и введите новый корневой пароль, выбрав «Use Legacy Password Encryption».

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

4
Juan Pablo Venditti

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

Добавьте следующую строку в ваш сервис docker-compose:

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
3
Biró Dani

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

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

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

3
Isaac Bennetch

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

Вот и все, надеюсь, что мое решение работает хорошо и для вас!

2
Stephan

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

Для этого войдите в консоль MySQL, используя эту

mysql -u {username} -p{password}

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

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

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

2
Lucky Saini

Как указывалось в других ответах, изменение плагина аутентификации MySQL по умолчанию на native делает свое дело.

Тем не менее, поскольку я не могу использовать новый плагин caching_sha2_password, я подожду, пока не будет разработана совместимость, чтобы закрыть тему.

1
Lucas Noetzold

Я решил это с MySQL 8.0.12, запустив:

mysql_upgrade -u root
0
Pelmered