docker-compose:mariadb - 连接被拒绝

Posted

技术标签:

【中文标题】docker-compose:mariadb - 连接被拒绝【英文标题】:docker-compose: mariadb - Connection refused 【发布时间】:2020-02-22 21:53:28 【问题描述】:

步骤一)mysql5 & phpmyadmin

镜像下面的mysql-phpmyadmin配置:

version: '3.6'

services:

  db:
    image: mysql:5.7.24
#    image: mysql:8.0.18
#    image: mariadb:10.4.8
#    command: --default-authentication-plugin=mysql_native_password
    restart: always
    volumes:
    - ./mysql5:/var/lib/mysql
#    - ./mysql8:/var/lib/mysql
#    - ./mariadb:/var/lib/mysql
    environment:
    - MYSQL_ROOT_PASSWORD=test
    - MYSQL_DATABASE=test
    - MYSQL_USER=test
    - MYSQL_PASSWORD=test

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.8.5
    restart: always
    depends_on:
    - db
    environment:
    - PMA_HOST=db
    - PMA_PORT=3306
    - PMA_USER=test
    - PMA_PASSWORD=test
    ports:
    - "3333:80"

我可以通过 phpmyadmin 访问我的 mysql-database:http://localhost:3333/

第二步)mysql8 & phpmyadmin

现在我切换到 mysql8,我只使用图像和卷,并添加了 command-option 和 mysql_native_password-plugin:

version: '3.6'

services:

  db:
#    image: mysql:5.7.24
    image: mysql:8.0.18
#    image: mariadb:10.4.8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    volumes:
#    - ./mysql5:/var/lib/mysql
    - ./mysql8:/var/lib/mysql
#    - ./mariadb:/var/lib/mysql
    environment:
    - MYSQL_ROOT_PASSWORD=test
    - MYSQL_DATABASE=test
    - MYSQL_USER=test
    - MYSQL_PASSWORD=test

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.8.5
    restart: always
    depends_on:
    - db
    environment:
    - PMA_HOST=db
    - PMA_PORT=3306
    - PMA_USER=test
    - PMA_PASSWORD=test
    ports:
    - "3333:80"

我可以通过 phpmyadmin 访问我的 mysql-database:http://localhost:3333/

第三步)mariadb & phpmyadmin

现在我用下面的配置切换到mariadb,我只改变了图像和音量:

version: '3.6'

services:

  db:
#    image: mysql:5.7.24
#    image: mysql:8.0.18
    image: mariadb:10.4.8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    volumes:
#    - ./mysql5:/var/lib/mysql
#    - ./mysql8:/var/lib/mysql
    - ./mariadb:/var/lib/mysql
    environment:
    - MYSQL_ROOT_PASSWORD=test
    - MYSQL_DATABASE=test
    - MYSQL_USER=test
    - MYSQL_PASSWORD=test

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.8.5
    restart: always
    depends_on:
    - db
    environment:
    - PMA_HOST=db
    - PMA_PORT=3306
    - PMA_USER=test
    - PMA_PASSWORD=test
    ports:
    - "3333:80"

现在我无法通过 phpmyadmin 访问我的 ma​​riadb-database

按照docker hub 上的mariadb-README,环境配置应与mysql5-container 相同。我假设,我还需要启用mysql_native_password,它不适用于 mysql8-container。

我错过了什么?这是一个错误还是我错过了什么?

【问题讨论】:

【参考方案1】:

你应该在 /etc/mysql/my.conf 中启用 bind-ip。 取消注释 bind-ip 0.0.0.0

【讨论】:

【参考方案2】:

它适用于mariadb--default-authentication-plugin=mysql_native_password,只是容器启动很慢。

[编辑] 这是一个 MWE,它适用于不同的 mysql 版本(5 和 8)和最新的 mariadb(10):

https://github.com/boldt/docker-compose-mariadb-mysql-phpmyadmin

【讨论】:

【参考方案3】:

MariaDB 没有default-authentication-plugin 选项。可能是这个原因

【讨论】:

【参考方案4】:

您的 docker-compose 文件有效。我启动 MySQL 容器而不是切换到 MariaDB 图像,它工作正常。我认为您应该查看 docker 日志。答案就在那里

【讨论】:

以上是关于docker-compose:mariadb - 连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Mariadb docker容器无法使用Python连接到主机上的MySQL服务器(111连接被拒绝)

从 mariadb:10 切换到 mariadb:10.4 映像时,docker 容器不断重启

使用 docker-compose 与 docker run 的不同结果

Docker-compose mysql:导入 .sql

mariadb 作为 docker 容器 - 主机挂载绑定上的启动损坏

docker-compose:无法从我的 LEMP 堆栈访问 phpMyAdmin