Usuarios y permisos en MySQL

Una de los puntos más importantes cuando trabajamos con una base de datos MySQL es la asignación de permisos y usuarios. De esta manera administraremos los accesos y la seguridad de nuestra base de datos.

En este artículo se explica como crear y borrar usuarios en MySQL así como también asignarles permisos.

Podemos asignar permisos actuando directamente sobre las tablas de la base de datos MySQL pero no es la forma mas cómoda ni mas segura. Lo indicado es, una vez hecho login como root, asignar permisos con el comando GRANT:

mysql> grant select, insert on *.* to tester@'%' identified by 'blah';
Query OK, 0 rows affected (0.17 sec''')

Con este comando creamos un usuario llamado tester que tiene el derecho de seleccionar e insertar datos en todas las bases de datos y tablas (*.*), con la contraseña blah.

Como ya sabeis el signo % despues del nombre de usuario significa que tester podrá hacer login desde cualquier máquina. Si en su lugar hubieramos escrito tester@localhost solo podria conectar en modo local; y si solo queremos dar permiso a tester desde una máquina remota, deberiamos haber escrito el nombre de dicha máquina: tester@mimaquina.midominio.org


El comando GRANT no solo concede permisos, sino que sirve para crear nuevos usuarios. Basta con conceder permisos a un usuario para que si este no existía, sea creado en la tabla user.

mysql> GRANT select, insert, update, create, alter, delete, drop ON directorio.* TO tester@localhost IDENTIFIED BY 'blah';

En este otro ejemplo damos permisos a tester si accede por localhost para seleccionar, insertar datos, actualizar, crear, modificar y borrar tablas en todas las tablas de la base de datos directorio (directorio.*)

mysql> GRANT all ON directorio.alfa To tester@localhost IDENTIFIED BY 'Blah';

concede todos (all) los permisos disponibles para la tabla alfa dentro de la base de datos directorio a tester

 

mysql> GRANT USAGE ON *.* To tester@localhost IDENTIFIED BY 'Blah';

permite la conexión a tester a cualquier base de datos y tablas, pero no concede ningun otro privilegio.

 

Finalmente si queremos retirar permisos, usamos REVOKE, de forma similar a GRANT:

mysql> REVOKE ALL ON *.* FROM tester@'5';