
Использование управляемой пакетом apt версии сервера MySQL в Ubuntu 20.04.3 LTS с установкой 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.cnf
0644. Думаю, серверу MySQL не нравится, если этот файл помечен как доступный для записи/исполнения всем. Он был помечен как 0777, и я определенно этого не делал. Он был установлен в системе таким образом из пакета mysql-server
apt.
Вероятно, это означает, что в настоящее время (по состоянию на декабрь 2021 г.) существует ряд систем Ubuntu Server 20.04.3 LTS, которые устанавливают MySQL через apt и случайно открывают порт 3306 для всего мира. Поскольку по умолчанию нет пароля root, это также, вероятно, означает, что MySQL может быть быстро скомпрометирован из удаленной системы.