为什么Docker-MySQL 8监听错误的端口?

0wi1tuuw  于 12个月前  发布在  Docker
关注(0)|答案(2)|浏览(123)

我的MySQL 8.0.31数据库运行在端口33060上,这工作得很好。但不幸的是,我不能从另一个服务器访问数据库。当我检查

root:~#  sudo lsof -i -P -n | grep 33060
docker-pr 1226664            root    4u  IPv4 13558339      0t0  TCP 127.0.0.1:33060 (LISTEN)

我看到如果监听127.0.0.1,但不是预期的0.0.0.0:33060。我在my.cnf中的配置看起来像这样:

[mysqld]
bind-address=0.0.0.0

skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid
sql-mode=""

server-id=3333333
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=demo

gtid_mode                = ON
enforce-gtid-consistency = ON

ft_min_word_len=2

[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

我已经尝试删除bind-address或将其设置为不同的值,如*或访问服务器的IP地址,但一切似乎都被忽略了。
我有另一个服务器具有相同的配置,它工作正常。为什么bind-address被忽略,我如何强制设置0.0.0.0

toe95027

toe950271#

我认为你配置了数据库网络监听0.0.0.0,但Docker容器监听的是127.0.0.1(默认)。
如果是这种情况,则应将以下标志添加到docker run命令中

-p 33060:33060

之后,当你运行docker ps时,你应该在你的容器上看到0.0.0.0:33060->33060/tcplsof也应该验证这一点。

olmpazwi

olmpazwi2#

同时,我找到了一个通用的解决方案:只需从/etc/docker/daemon.json中删除{"ip":"127.0.0.1"}行即可解决此问题。

相关问题