我想启用对我的 MySQL 服务器的远程访问,因此我在 [mysqld] 下设置了 bind-address 选项,如下所示:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=**.**.**.66
port=3306
# skip-networking
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
当我注释掉 bind-address 时,服务器正常启动。但是,当我将其注释掉时,它不会重新启动。端口已打开并处于监听状态。
你能帮我解决这个问题吗?谢谢
答案1
您认为为什么需要使用bind-address
来启用远程访问?
不使用 bind-address 选项,尝试运行命令netstat -ntlp | grep 3306
。如果您看到如下输出,则 mysql 正在监听与计算机关联的每个 IP。
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 23465/mysqld
你真正需要的只是绑定地址如果您想监听特定 IP。如果您想监听所有地址的请求,则应将其注释掉或将其设置为0.0.0.0
。一些打包版本的 mysql 附带启动/维护脚本,这些脚本将尝试访问 127.0.0.1 上的 mysql。如果您使用 bind-address 选项,则 mysql 将仅绑定到该特定 IP,而不会绑定到其他任何 IP,这可能会破坏您当前拥有的任何脚本。
答案2
也许这会对一些人有所帮助:
看起来,如果bind-address
在两处声明,服务就无法重新启动。
也许您快速浏览了/etc/conf/my.cnf
文件,并没有看到第二个bind-address
。但是,请注意,该文件可能包含!includedir
指令,并且其中一些包含的文件可能包含第二个bind-address
。
答案3
确保没有已启动的停滞的 mysqld 实例。检查
ps aux|grep mysqld
并终止所有进程
kill -9
然后尝试再次启动mysqld。注意mysqld进程是否处于“Sl”状态。