Testeando, los apenas descubiertos scripts de consultoría de Percona, los utilicé en un ambiente de prueba de mi trabajo para ver que me podían ofrecer, y la verdad es que quedé bastante contento, ya que brinda bastante información.
A ver… no es nada del otro mundo, es la información general que uno busca generalmente cuando tiene que resolver problemas en un servidor. Más un montón de información que no se ni que es.
Entre esa información, me llamó la atención uno de ellos, que busca los usuarios sin contraseña de MySQL. Y entre ellos estaba root. Y era cierto… si ejecutaba mysql -uroot podría ingresar sin escribir una contraseña. No sería dificil arreglar esto.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';
mysql> SELECT User, Host, HEX(authentication_string) FROM mysql.user;
+-----------+-----------+------------------------------------------------------------------------------------+
| User | Host | HEX(authentication_string) |
+-----------+-----------+------------------------------------------------------------------------------------+
| root | localhost | |```
Esto significa que todavía queda sin una contraseña seteada.
Si verificamos el usuario en la tabla User
mysql> SELECT * from user where User="root"
*************************** 1. row ***************************
Host: localhost
User: root
[...]
plugin: auth_socket
[...]
Si instalamos mysql 5.7 y no seteamos una password al instalarlo el usuario root queda configurado con el plugin auth_socket el cual, si se está conectado desde el usuario root de linux entonces permite entrar a mysql como root sin contraseña.
Por lo tanto debemos cambiar la contraseña y el plugin al mismo tiempo:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; ```
Y ahora si mysql solicitará la password del usuario aunque estemos logueados como root.
Disclaimer: Examples grabbed from this percona blog post