如何让 MySQL 服务器仅在 Ubuntu 20.04 LTS 上绑定到本地主机?

如何让 MySQL 服务器仅在 Ubuntu 20.04 LTS 上绑定到本地主机?

在 Ubuntu 20.04.3 LTS 上使用 apt 包管理版本的 MySQL 服务器,并默认安装 MySQL。

netstat显示 MySQL 服务器绑定到公共 IPv6 接口:

tcp6       0      0 :::33060                :::*                    LISTEN      2485/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      2485/mysqld

但是,/etc/mysql/mysql.conf.d/mysqld.cnf显示(为简洁起见删除了注释行):

[mysqld]
user            = mysql

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

我已经设置了 iptables 和上游防火墙规则,拒绝外部访问未经批准的端口(如 MySQL),但我希望 MySQL 本身根据配置文件绑定到系统上的正确接口。

在另一个今年升级到 20.04.3 的系统上,配置文件几乎相同,并netstat显示:

tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      1349/mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1349/mysqld

答案1

通过将权限更改为/etc/mysql.cnf0644 解决了这个问题。我猜 MySQL 服务器不喜欢将该文件标记为全球可写/可执行。它被标记为 0777,而我绝对没有这样做。它是通过 apt 包以这种方式安装在系统上的mysql-server

这可能意味着目前(截至 2021 年 12 月)有许多 Ubuntu Server 20.04.3 LTS 系统通过 apt 安装 MySQL,并意外向外界开放了 3306 端口。由于默认情况下没有 root 密码,这也可能意味着 MySQL 可能很快从远程系统受到攻击。

相关内容