最近发布 MySQL 8.0 后,用户在访问 phpMyAdmin 时遇到了困难。此问题源于 phpMyAdmin 和服务器之间的身份验证方法差异。要解决此问题,请按照以下步骤操作:
首先,使用适当的命令以 root 用户身份登录到 MySQL 控制台:
mysql -u root -pPASSWORD
登录后,将身份验证插件更改为mysql_native_password 通过执行以下查询:
ALTER USER root IDENTIFIED WITH mysql_native_password BY '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
如果使用 mysql/mysql-server docker图片,请记住此解决方案仅适用于开发环境。
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
要永久更改身份验证插件,请在 /etc 中取消注释以下行/my.cnf 文件:
default_authentication_plugin=mysql_native_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 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
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
确保引号包含在内显示。
以上是如何修复 MySQL 8.0 的 phpMyAdmin 身份验证问题?的详细内容。更多信息请关注PHP中文网其他相关文章!