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

阅读 3.4k
评论
    3 个回答

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

    default_authentication_plugin=mysql_native_password

    变成原来的验证方式即可

      • 1.8k

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

      SELECT
        Length(`Password`),
        Substring(`Password`, 1, 1)
      FROM
        `mysql`.`user`
      WHERE
        `user`='你的用户名' // 根据设定,你可能要测试所有的用户
        • 1
        • 新人请关照

        解决了吗楼主?

        该答案已被忽略,原因:无意义的内容:赞、顶、同问等毫无意义的内容,不符合答题规范:内容不是答案,可用评论、投票替代

          撰写回答

          登录后参与交流、获取后续更新提醒