设置外部绑定地址后 MySQL 无法启动

设置外部绑定地址后 MySQL 无法启动

我想启用对我的 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”状态。

相关内容