我的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
?
2条答案
按热度按时间toe950271#
我认为你配置了数据库网络监听
0.0.0.0
,但Docker容器监听的是127.0.0.1
(默认)。如果是这种情况,则应将以下标志添加到
docker run
命令中之后,当你运行
docker ps
时,你应该在你的容器上看到0.0.0.0:33060->33060/tcp
。lsof
也应该验证这一点。olmpazwi2#
同时,我找到了一个通用的解决方案:只需从
/etc/docker/daemon.json
中删除{"ip":"127.0.0.1"}
行即可解决此问题。