
Usando a versão gerenciada pelo pacote apt do servidor MySQL no Ubuntu 20.04.3 LTS com uma instalação padrão do MySQL.
netstat
mostra o servidor MySQL vinculado à interface IPv6 pública:
tcp6 0 0 :::33060 :::* LISTEN 2485/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2485/mysqld
No entanto, /etc/mysql/mysql.conf.d/mysqld.cnf
mostra (linhas comentadas removidas por questões de brevidade):
[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
Eu tenho iptables e regras de firewall upstream que negam acesso externo a portas não aprovadas como MySQL, mas prefiro que o próprio MySQL esteja vinculado à interface correta no sistema de acordo com o arquivo de configuração.
Em outro sistema que foi atualizado este ano para 20.04.3, os arquivos de configuração são virtualmente idênticos e netstat
mostram:
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
Responder1
Resolvi isso alterando as permissões /etc/mysql.cnf
para 0644. Acho que o servidor MySQL não gosta se esse arquivo estiver marcado como gravável/executável mundialmente. Estava marcado como 0777 e eu definitivamente não fiz isso. Ele foi instalado no sistema dessa forma a partir do mysql-server
pacote apt.
Isso provavelmente significa que existem atualmente (em dezembro de 2021) vários sistemas Ubuntu Server 20.04.3 LTS por aí que instalam o MySQL via apt e acidentalmente abrem a porta 3306 para o mundo. Como não há senha de root por padrão, isso provavelmente também significa que o MySQL pode ser rapidamente comprometido a partir de um sistema remoto.