mysql - 从主机网络的sql-client连接到docker容器时出错

标签 mysql docker docker-compose

我正在使用撰写文件触发 mysql:

version: "3"
services:
  my-sql:
    image: mysql
    container_name: my-sql
    ports:
     - 3306:3306
    environment:
     MYSQL_ROOT_PASSWORD: passw0rd 
     MYSQL_USER: dbuser
     MYSQL_PASSWORD: pass1234
     MYSQL_DATABASE: connect_test

按以下方式查找容器的 IPAdress:

root@sevenos:~# docker inspect my-sql | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.18.0.2",

当我在容器外部连接my-sql client时,出现如下错误:

root@sevenos:~# mysql -uroot -ppassw0rd -h 172.18.0.2 -P 3306
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be 
loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

最佳答案

您可以使用以下命令初始化 docker 来加载默认身份验证插件:

mysql:
    image: mysql
    container_name: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
        - MYSQL_ROOT_PASSWORD=root
    volumes_from:
        - mysql-data
    ports:
        - "3306:3306"

在运行它之前,您必须删除所有 mysql 卷:

docker-compose rm
docker volume rm list_of_your_volumes
docker-compose up

您可以查看更多详细信息:https://github.com/passbolt/passbolt_docker/issues/103

关于mysql - 从主机网络的sql-client连接到docker容器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50212786/

相关文章:

mysql - SELECT DISTINCT 多个字段并全部显示

php - Codeigniter join 返回同一记录三次

docker - Kubernetes Pods 与内部/外部 IP 地址互通

Docker:无法执行二进制文件

linux - 如何更改docker容器中 'flink'上的默认用户 'root'?

php - 无法在DigitalOcean Droplet上访问MySQL数据库

mysql - 左连接条件

python - 如何在Windows机器上 pip 安装Linux软件包(适用于AWS Lambda)?

运行 Composer install 后 Docker 容器退出并显示代码 0

Docker compose 您是否正在尝试将目录挂载到文件上(或反之亦然)?