MySQL 5.7绑定地址不起作用


17

我一直成功地为MySQL 5.5设置了远程连接。

今天,我使用Ubuntu 16.04和MySQL 5.7安装了新服务器。但是由于某些原因,我无法使此MySQL安装监听其他主机127.0.0.1

这是我的/etc/mysql/conf.d/mysql.cnf

[mysqld]
bind-address = 0.0.0.0

我无法从远程主机连接到此MySQL服务器,当我检查时netstat,我意识到MySQL localhost仅侦听来自的连接。

lsof -Pni :3306 输出为:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  5302 mysql   25u  IPv4  37280      0t0  TCP 127.0.0.1:3306 (LISTEN)

问题是什么?


你跳了mysql吗?netstat -lntp的输出是什么?
Linuxx

@Linuxx我什至重新启动了整个机器。tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 13050/mysqld
2016年

我假设您在该文件中添加了该行。删除该行并编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf并在那里更改参数。
Linuxx

1
@Linuxx就像魔术一样工作:)我还没有注意到还有另一个* .conf.d目录。因此,基本上5.7将[mysql]配置保留在conf.d目录中,而[mysqld]配置保留在mysql.conf.d中。谢谢!请回答,我会接受的。
Hast

1
我已经更改了/etc/mysql/mysql.conf.d/mysqld.cnf和/etc/mysql/conf.d/mysql.cnf上的bind-address,重新启动了服务器,但仍然看到“ tcp 0 0 127.0”。 0.1:3306“,当我运行<netstat -tulpen
Chepech '02

Answers:


39

他们更改了MySQL软件包,使bind参数现在位于/etc/mysql/mysql.conf.d/mysqld.cnf中。请在那里更改bind参数,并删除您放置在/etc/mysql/conf.d/mysql.cnf中的任何内容。


这太荒谬了。“ conf.d”的目的是不编辑程序包提供的默认值,并由您自己的配置覆盖。但是,由于现在“ mysql.conf.d”已覆盖我们的库,因此除非我们编辑“ mysql.conf.d / mysqld.cnf”,否则没有可靠的方法可以确保我们的库最终出现。

@kenn:改为在mysql.conf.d /下添加您的配置,并将其命名为“ x-something”
贝尔

3
当然可以,但是“ conf.d”的意义何在?“ mysql.conf.d”不是软件包提供的默认值,应该被“ conf.d”覆盖吗?我认为应该在MySQL软件包级别的“ /etc/mysql/my.cnf”中反转“ conf.d”和“ mysql.conf.d”的加载顺序。
肯恩'17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.