0

我已将 maria_db 服务安装为 Acumos 的 docker 组件。即使 docker 容器正在运行,我也无法执行以下命令:

mysql -h localhost -P 3306 --user=root --password=98dceddd-a364-4f76-abe0-b0dc7283fc7f -e 'SHOW DATABASES;'

因为我将错误视为错误:

ERROR 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysqld.sock' 连接到本地 MySQL 服务器 (2)

但是,如果我使用以下命令登录 docker 容器:

docker exec -it acumos_mariadb_db_service bash

并运行相同的命令,它可以工作。

如何从容器外部登录 MySQL 服务器而不会出现任何错误?

4

2 回答 2

0

我终于解决了这个问题。问题是 mariadb 服务器作为一个暴露端口 3306 的 docker 映像运行,并且 mariadb 客户端安装在同一台本地计算机上,也使用端口 3306。更改端口映射,如 0.0.0.0:3307->3306/tcp 解决了这个问题。

于 2020-08-04T12:00:10.733 回答
0

docker 是否在 localhost 上暴露了 3306 端口?

 docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag -p 3306:3306 

Docker 容器默认不向主机公开端口;你需要自己设置它们。在上面的示例中,您将容器的端口 3306 映射到本地计算机的 3306。

如何设置容器网络的详细信息在这里: https ://docs.docker.com/config/containers/container-networking/

于 2020-07-20T15:28:43.580 回答