MySQL docker-compose : The server requested authentication method unknown to the client错误

MySQL docker-compose : The server requested authentication method unknown to the client错误

在使用docker-compose运行MySQL容器时,有时会遇到以下错误信息:

“`Error: The server requested authentication method unknown to the client“`

这通常在使用MySQL版本8以上时会发生。原因是默认的身份验证插件从”mysql_native_password”变为”caching_sha2_password”。解决这个问题的方法是在创建容器时指定身份验证插件为“mysql_native_password”。

第一步:在docker-compose.yml文件中指定参数

docker-compose.yml中指定各参数,包括MYSQL_USER,MYSQL_PASSWORD,MYSQL_ROOT_PASSWORD以及MYSQL_DATABASE参数,以用来指定MySQL的用户、密码和数据库。我们可以使用下面的方法来指定”command”参数,使得启动容器时,使用”mysql_native_password”插件。

version: "3.8"
services:
  mysql:
    image: mysql:8.0.26
    restart: always
    environment:
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: my_database
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
    volumes:
      - ./data:/var/lib/mysql
    networks:
      - backend
networks:
  backend:
YAML

在这个docker-compose.yml文件中,我们设定MySQL的root用户为”root”,密码为”root”,数据库名为”my_database”。同时还指定MySQL使用”mysql_native_password”插件。

第二步:重启MySQL容器

在docker-compose.yml文件中指定好各参数并保存后,在docker-compose命令行工具中运行docker-compose命令,将启动MySQL容器。

docker-compose up -d
Mysql

请注意,为了指定新的身份验证插件,不能使用现有的数据库。如果您已经使用caching_sha2_password插件启动了容器,则必须使用以下命令重新启动容器:

docker-compose down
docker volume rm 容器名称_topic_db_data
docker-compose up -d
Mysql

以上命令将停止并删除Docker容器和数据卷,并重新启动MySQL容器。

第三步:使用新的身份验证插件登录

现在,您已经在docker-compose.yml文件中指定了新的身份验证插件,然后执行docker-compose up命令并重启MySQL容器。然后,您需要使用新身份验证插件登录:

docker exec -it [容器的名称] mysql -u root -p
Mysql

当您输入上述命令时,会提示您输入MySQL root用户的密码。您刚刚在docker-compose.yml文件中指定了该密码为”root”。因此请键入该密码。如果一切正常,您应该可以登录MySQL。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_database        |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
Mysql

现在,您已经成功地在docker-compose容器中运行了MySQL,并解决了”Error: The server requested authentication method unknown to the client”这个错误提示。

总结

在本文中,我们讨论了如何解决docker-compose运行MySQL容器时出现的“Error: The server requested authentication method unknown to the client”错误提示。我们通过在docker-compose.yml文件中使用“command: –default-authentication-plugin=mysql_native_password”的语法来指定新的身份验证插件。同时,我们还提供了一些实用命令,以便使用新的身份验证插件登录MySQL。最后,我们希望本文能够帮助读者更好地理解如何在docker-compose容器中有效地运行MySQL。

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册