MySQL usuario de lectura

Resulta que crear un usuario de mysql con acceso desde hosts remotos no es tan intuitivo como podría pensarse. Durante la creación de un usuario en mysql, ya sea con el comando apropiado o mediante utilidades como «mysql_setpermission», se debe indicar si el usuario mysql podrá conectar con el motor SQL únicamente desde el localhost, o si por el contrario, tendrá acceso desde un host remoto específico o desde cualquier host (%).

Sin embargo, para que el acceso remoto funcione, deberá crearse primero el usuario localhost y posteriormente el mismo usuario para %:

mysql> create user ‘readonly’@’localhost’ identified by ‘mipassword’;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to ‘readonly’@’localhost’;
Query OK, 0 rows affected (0.00 sec)

mysql> create user ‘readonly’@’%’ identified by ‘mipassword’;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to ‘readonly’@’%’;
Query OK, 0 rows affected (0.00 sec)

 

Esto se puede leer en la documentación oficial de MySQL:

«It is necessary to have both accounts for monty to be able to connect from anywhere as monty

Con estas instrucciones se habrá creado un usuario llamado «readonly» con únicamente permisos de lectura (selects) contra todas las bases de datos existentes, tanto desde el host local como desde cualquier otro host remoto.