Eliminar Cuentas de Usuario Anónimas
Por defecto, algunas instalaciones de MySQL crean cuentas de usuario anónimas, que tienen un nombre de usuario vacío. Estas cuentas representan un riesgo de seguridad porque pueden permitir acceso no autorizado. Es una práctica de seguridad crítica verificar y eliminarlas si existen.
Puede identificar usuarios anónimos consultando la tabla mysql.user en busca de entradas con un nombre de usuario en blanco.
SELECT User, Host FROM mysql.user WHERE User = '';
Si existen usuarios anónimos, esta consulta los listará. Una instalación nueva en Ubuntu podría incluir uno, pero las versiones más recientes de MySQL/MariaDB a menudo no tienen usuarios anónimos por defecto.
Si ve resultados como:
+------+-----------+
| User | Host |
+------+-----------+
| | localhost |
+------+-----------+
1 row in set (0.00 sec)
Entonces debería eliminar el usuario anónimo con la sentencia DROP USER, especificando tanto el nombre de usuario (que es una cadena vacía '') como el host:
DROP USER ''@'localhost';
Debería ver esta confirmación:
Query OK, 0 rows affected (0.01 sec)
Sin embargo, si su consulta devuelve un conjunto vacío como:
Empty set (0.00 sec)
Esto significa que no hay usuarios anónimos en su base de datos, lo cual ya es seguro. En este caso, si intenta eliminar un usuario anónimo inexistente, obtendrá un error:
ERROR 1396 (HY000): Operation DROP USER failed for ''@'localhost'
Este error es esperado si no existe ningún usuario anónimo, y puede proceder con seguridad.
Después de verificar la existencia de usuarios anónimos y eliminarlos si es necesario, vacíe los privilegios para asegurar que se apliquen los cambios:
FLUSH PRIVILEGES;
Verifique nuevamente que no queden usuarios anónimos ejecutando la consulta SELECT:
SELECT User, Host FROM mysql.user WHERE User = '';
Esta consulta debería devolver un conjunto vacío, confirmando que no existen usuarios anónimos:
Empty set (0.00 sec)
Ha verificado y abordado con éxito una posible vulnerabilidad de seguridad en su servidor. Ahora puede salir del shell de MySQL.
exit;