
Usando la versión administrada del paquete apt del servidor MySQL en Ubuntu 20.04.3 LTS con una instalación MySQL predeterminada.
netstat
muestra el servidor MySQL vinculado a la interfaz pública IPv6:
tcp6 0 0 :::33060 :::* LISTEN 2485/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2485/mysqld
Sin embargo, /etc/mysql/mysql.conf.d/mysqld.cnf
muestra (líneas comentadas eliminadas por brevedad):
[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
Tengo iptables y reglas de firewall ascendentes que niegan el acceso externo a puertos no aprobados como MySQL, pero preferiría que MySQL esté vinculado a la interfaz correcta en el sistema según el archivo de configuración.
En otro sistema que se actualizó este año a 20.04.3, los archivos de configuración son prácticamente idénticos y netstat
muestran:
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
Respuesta1
Lo resolvió cambiando los permisos /etc/mysql.cnf
a 0644. Supongo que al servidor MySQL no le gusta si ese archivo está marcado como escribible/ejecutable en todo el mundo. Estaba marcado como 0777 y definitivamente no hice eso. Se instaló en el sistema de esa manera desde el mysql-server
paquete apt.
Esto probablemente significa que actualmente (a diciembre de 2021) hay un montón de sistemas Ubuntu Server 20.04.3 LTS que instalan MySQL a través de apt y accidentalmente abren el puerto 3306 al mundo. Dado que no existe una contraseña de root de forma predeterminada, también significa que MySQL puede verse rápidamente comprometido desde un sistema remoto.