Existen 4 formas diferentes de crear y/o modificar usuarios en MySQL:
- La sentencia GRANT
- La sentencia CREATE USER
- Insertando directamente en la tabla user
- Utilizando un administrador de MySQL como SQLyog
He aquí unas recomendaciones para crear usuarios, según la documentación oficial de MySQL:
- Los nombres de usuario pueden tener un máximo de 16 caracteres.
- Si se utiliza el modificar directamente la tabla user, tener cuidado de no modificar la estructura de ninguna tabla de la base mysql.
CREAR USUARIOS:
Aquí veremos como crear usuarios con la primer opción:
grant
La sentencia
grant nos permite crear cuentas de usuarios para MySQL y darles permiso, esta información es almacenada en las tablas de la base
mysql. Primero tenemos que ingresar a nuestro servidor de base de datos como root o con una cuenta con nivel de root.
$ mysql -u root -p
Con grant se pueden asignar permisos a diferentes niveles, he aquí algunos ejemplos:
Nivel Global
En este ejemplo se crea un usuario llamado
usuario con la contraseña
miclave que tiene permisos sobre todas las bases de datos de nuestro servidor
mysql> GRANT ALL ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'miclave';
Nivel de Base de datos
En este ejemplo se crea un usuario llamado
usuario1 con la contraseña
miclave que tiene permisos sobre todas las tablas de la base de datos
mibase
mysql> GRANT ALL ON mibase.* TO 'usuario1'@'localhost' IDENTIFIED BY 'miclave';
Nivel de Tabla
En este ejemplo se crea un usuario llamado
usuario2 con la contraseña
miclave que tiene permisos sobre la tabla
mitabla de la base de datos
mibase
mysql> GRANT ALL ON mibase.mitabla TO 'usuario2'@'localhost' IDENTIFIED BY 'miclave';
Con
grant podemos también indicar que tipo de permisos un usuario tendrá sobre un objeto, en el siguiente ejemplo creamos un usuario que tiene permisos de seleccionar e insertar en la tabla
tabla1 de la base de datos
mibase2:
mysql> GRANT SELECT, INSERT ON mibase2.mitabla1 TO 'miusuario'@'localhost' IDENTIFIED BY 'miclave';
Nota:
Después del
@ nosotros indicamos el contexto del usuario, en los ejemplos anteriores todos los usuarios podrán conectarse solo por la maquina local (localhost), es decir, que se impedirá conectarse de forma remota. Si queremos que se conecte el usuario desde cualquier equipo tendra que agregar el caracter %.
mysql> GRANT ALL ON mibase.* TO 'usuario'@'%' IDENTIFIED BY 'miclave';
ELIMINAR USUARIOS
Para eliminar usuarios utiliza el comando DROP USER, para utilizar este comando debe tener el permiso global de CREATE USER o el permiso DELETE para la base de datos mysql. Para borrar una cuenta y sus permisos la sintaxis es la siguiente:
mysql> DROP USER miusuario;
Si tiene el mismo usuario en diferentes ámbitos, solo necesitara especificar el usuario deseado en el ámbito correcto:
mysql> DROP USER miusuario@localhost;
NOTA:
En MySQL 5.0.0 DROP USER solo borra cuentas que no tienen permisos, para eliminar completamente la cuenta incluyendo sus permisos en estas versiones, tendrá que usar SHOW GRANTS para ver que permisos tiene ese usuario y con REVOKE tendrá que revocar sus permisos. A partir de MYSQL 5.0.2 ya se pueden eliminar cuentas que tienen permisos.
PERMISOS
| Permiso | Significado |
| ALL | Da todos los permisos simples, excepto GRANT OPTION |
| ALTER | Permite el uso de ALTER TABLE |
| CREATE | Permite el uso de CREATE TABLE |
| CREATE USER | Permite el uso de CREATE USER, DROP USER, RENAME USER y REVOKE ALL PRIVILEGES |
| CREATE VIEW | Permite el uso de CREATE VIEW |
| DELETE | Permite el uso de DELETE |
| DROP | Permite el uso de DROP TABLE |
| INSERT | Permite el uso de INSERT |
| SELECT | Permite el uso de SELECT |
| UPDATE | Permite el uso de UPDATE |
| GRANT OPTION | Permite dar privilegios |