mysql docker容器获取远程主机: Connection refused after container running

标签 mysql docker database-connection docker-container

我试图在一台主机服务器上运行多个 mysql docker 容器。设置第一个 mysql 容器后,它工作正常。我按照相同的步骤设置第二个并将运行端口从 3306 更改为 3307 并使用 dump.sql 的不同路径。容器启动后,我无法使用带有端口的容器 ip 远程登录容器,但我能够 ping 通该 ip。它显示连接被拒绝。尝试将行 bind-address=0.0.0.0 添加到/etc/my.cnf 并重新启动容器,问题仍然相同。我可以看到第二个 mysql 容器启动并且我能够在容器上执行一些命令但是大约 1 分钟后,容器自动停止

usr@ip-172-0-1-199:~/$ docker run --name=test-db -p 3310:3306 -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_USER=user -e MYSQL_DATABASE=db -e MYSQL_PASSWORD=pass -v dump.sql:/var/lib/mysql -d mysql/mysql-server:5.7
0e3fbcbd9126a726584549a13248eb07eb7d97fbeba4795fb5a924037a66b205
usr@ip-172-0-1-199:~/$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                               NAMES
0e3fbcbd9126        mysql/mysql-server:5.7   "/entrypoint.sh mysql"   29 seconds ago      Up 28 seconds       33060/tcp, 0.0.0.0:3310->3306/tcp   test-db
usr@ip-172-0-1-199:~/$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' test-db
172.17.0.4
usr@ip-172-0-1-199:~/$ telnet 172.17.0.4 3310
Trying 172.17.0.4...
telnet: Unable to connect to remote host: Connection refused
usr@ip-172-0-1-199:~/$ ping 172.17.0.4
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.037 ms
^C
--- 172.17.0.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.037/0.042/0.053/0.009 ms
usr@ip-172-0-1-199:~/$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED              STATUS              PORTS                               NAMES
0e3fbcbd9126        mysql/mysql-server:5.7   "/entrypoint.sh mysql"   About a minute ago   Up About a minute   33060/tcp, 0.0.0.0:3310->3306/tcp   test-db
usr@ip-172-0-1-199:~/$ docker ps -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED              STATUS                      PORTS                               NAMES
0e3fbcbd9126        mysql/mysql-server:5.7   "/entrypoint.sh mysql"   About a minute ago   Up About a minute           33060/tcp, 0.0.0.0:3310->3306/tcp   test-db
usr@ip-172-0-1-199:~/$ docker exec test-db "exec mysql -h 172.17.0.4 -u user -p"
Error response from daemon: Container 0e3fbcbd9126a726584549a13248eb07eb7d97fbeba4795fb5a924037a66b205 is not running
usr@ip-172-0-1-199:~/$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
usr@ip-172-0-1-199:~/$ docker ps -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                      PORTS                               NAMES
0e3fbcbd9126        mysql/mysql-server:5.7   "/entrypoint.sh mysql"   2 minutes ago       Exited (1) 37 seconds ago                                       test-db

最佳答案

设置 MYSQL_ROOT_HOST=% 以允许从任何 IP root 登录。

docker run --name mysql -p 3306:3306 \
-e MYSQL_RANDOM_ROOT_PASSWORD=yes \
-e MYSQL_ROOT_HOST=% -d mysql/mysql-server:latest

关于mysql docker容器获取远程主机: Connection refused after container running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133836/

相关文章:

java - JDBC 连接池建议

mysql - 如何在需要来自 super 查询的数据的 where 子句中使用带有 where 子句的 mysql 子查询

mysql 退出处理程序帮助

django - 使用 Dockerfile 复制代码或使用 docker-compose 挂载卷

python - 如何 git 安装而不是 pip 安装?

docker - docker下运行vue/cli app simple index.html打开

java - 字段未出现在 Firebase Android Studio 的数据库中

mysql - 在同一列中多次使用 "or","and"、 "like"

php - 具有多个父 ID 的 Laravel 查询

php - 无法连接到数据库