php连接docker mysql 8.0出错authentication method unknown

完整错误:

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

阅读 7k
3 个回答

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

default_authentication_plugin=mysql_native_password

变成原来的验证方式即可

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

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='你的用户名' // 根据设定,你可能要测试所有的用户
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题