为了账号安全,请及时绑定邮箱和手机立即绑定

php连接docker mysql 8.0出错authentication method unknown

php连接docker mysql 8.0出错authentication method unknown

PHP
泛舟湖上清波郎朗 2019-03-18 15:37:25
完整错误: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client docker-compose.xml mysql: image: mysql:8.0 volumes: - ./mysql/data:/var/lib/mysql - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf ports: - 3306:3306 env_file: - ./.env my.cnf innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M innodb_log_file_size = 5M innodb_log_buffer_size = 8M PHP版本是7.1
查看完整描述

4 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

自己看文档解决了,新的验证方式Caching SHA-2
所以在my.cnf中加一句:

default_authentication_plugin=mysql_native_password

变成原来的验证方式即可

查看完整回答
反对 回复 2019-03-18
?
冉冉说

TA贡献1877条经验 获得超1个赞

这个问题是由于新的mysql账号密码解锁机制跟老的不兼容造成的。 你查一下你的用户,如果密码是16位的就是老账号了,要重新设一遍新的密码。

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='你的用户名' // 根据设定,你可能要测试所有的用户
查看完整回答
反对 回复 2019-03-18
?
皈依舞

TA贡献1851条经验 获得超3个赞

在my.cnf设置任何用户登录都可以获得全部的权限
在[mysqld]的段中加上一句:skip-grant-tables 然后重启mysql

然后执行修改密码的sql:
UPDATE user SET Password = password ('new-password') WHERE User = 'root';
flush privileges;

再次重启mysql,这下应该就好了

查看完整回答
反对 回复 2019-03-18
?
翻阅古今

TA贡献1780条经验 获得超5个赞

解决了吗楼主?

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 1107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号