Crear usuario en MYSQL con CREATE USER
Para crear un nuevo usuario en MySQL, necesitas acceso a la base de datos. Además, también debes contar con privilegios de usuario root, con los que puedes crear cuentas de usuario y gestionar los permisos asignados. Asimismo, es importante que sepas qué tipo de permiso vas a otorgar al nuevo usuario: permisos de lectura, permisos de escritura o incluso permisos de administrador.
Crear un usuario con MySQL
Al instalar el sistema gestor de bases de datos, MySQL crea una cuenta root con control total sobre las bases de datos, tablas y usuarios. Si necesitas ayuda con la instalación, encontrarás toda la información importante en la siguiente guía para aprender a utilizar MySQL.
Con una cuenta root, puedes crear nuevas cuentas de usuario MySQL y asignarles una serie de permisos. Es importante conocer que en los sistemas Ubuntu con MySQL 5.7 y versiones posteriores, la autenticación del usuario root no se realiza con contraseña, sino con el plugin auth_socket
. Para que la autenticación se lleve a cabo con éxito, el nombre del usuario del sistema que quiere usar el cliente MySQL debe coincidir con el nombre del usuario MySQL especificado en el comando. Es decir, para poder acceder a la cuenta root es importante anteponer el comando sudo
:
$ sudo mysql
bashPara crear un nuevo usuario en MySQL, usa el comando CREATE USER
, con el que podrás crear un usuario con un nombre de usuario y contraseña específicos:
mysql> CREATE USER 'nombreusuario'@'host' IDENTIFIED WITH authentication_plugin BY 'contraseña';
bashSustituye “nombreusuario” por un nombre de usuario de tu elección. A continuación, introduce en host
el nombre del host desde el que se conectará el nuevo usuario. Si el usuario solo va a poder acceder desde tu servidor Ubuntu local, puedes introducir localhost
.
Existen varias opciones disponibles de plugin de autenticación. Aunque el plugin auth_socket
ofrece un alto nivel de seguridad, ya que los usuarios deben introducir una contraseña para acceder a la base de datos, también impide las conexiones remotas. Esto puede desembocar en un mayor esfuerzo cuando programas externos necesitan interactuar con MySQL. Como alternativa, puedes omitir la parte del comando WITH authentication_plugin
para que el usuario realice la autenticación con el plugin estándar de MySQL caching_sha2_password
. El comando en este caso se muestra como sigue:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bashDespués de haber creado un nuevo usuario, llega el momento de asignarle una serie de permisos.
Asignar permisos de usuario con MySQL create user
Para garantizar la seguridad de los datos en MySQL, crear y gestionar permisos de usuario es muy importante. El comando para asignar permisos de usuario es:
mysql> GRANT PRIVILEGE ON database.table TO 'nombreusuario'@'host';
bashEl valor PRIVILEGE
determina de qué privilegios dispone el usuario en la base de datos y tabla especificadas. Puedes reemplazar este valor con los siguientes comandos, entre otros:
-
CREATE
: permite a los usuarios crear una base de datos o tabla. -
SELECT
: permite a los usuarios acceder a datos. -
INSERT
: permite a los usuarios añadir nuevas entradas a las tablas. -
UPDATE
: permite a los usuarios cambiar entradas existentes en las tablas. -
DEELETE
: permite a los usuarios borrar entradas de la tabla. -
DROP
: permite a los usuarios eliminar tablas completas de la base de datos.
También puedes otorgar varios privilegios de una vez a los nuevos usuarios. Utiliza el mismo comando, pero separa cada privilegio con una coma:
mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'nombre_usuario'@'host';
bashSi lo deseas, puedes conceder los privilegios estipulados para todas las bases de datos o tablas en un único comando. Solo tienes que introducir *
en lugar de los nombres de la base de datos y las tablas. En el siguiente comando, por ejemplo, se autoriza a un usuario a consultar datos en todas las bases de datos y tablas con SELECT
, así como a añadir nuevas entradas con INSERT
y a modificar entradas existentes con UPDATE
.
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO nombredeusuario@'host';
bashDespués de ejecutar en MySQL CREATE USER
o GRANT
, puedes utilizar el comando FLUSH PRIVILEGES
para actualizar la base de datos y actualizar las tablas de privilegios. De este modo, entran en vigor los nuevos permisos:
mysql> FLUSH PRIVILEGES;
bashSin embargo, es importante que los usuarios solo cuenten con los permisos que necesiten. Al fin y al cabo, otorgándole a los usuarios determinados privilegios, también estás aumentando el riesgo de seguridad.
Crear usuario MySQL: revocar permisos de usuario
El comando REVOKE
se utiliza para revocar permisos de usuario en MySQL. La sintaxis es similar a la del comando GRANT
. Sin embargo, en este caso debes utilizar FROM
en lugar de TO
:
mysql> REVOKE type_of_permission ON nombre_base_de_datos.nombre_tabla FROM 'nombreusuario'@'host';
bashPara mostrar los permisos actuales de un usuario, puedes utilizar el comando SHOW GRANTS
:
mysql> SHOW GRANTS FOR 'nombreusuario'@'host';
bashEl comando DROP
se utiliza para eliminar un usuario:
mysql> DROP USUARIO 'nombreusuario'@'localhost';
bashSin embargo, la eliminación de usuarios hay que llevarla a cabo con mucho cuidado, sobre todo en el caso de los usuarios con privilegios administrativos. Evita la pérdida accidental de datos asegurándote de que eliminas el usuario que realmente deseas.
Después de crear un nuevo usuario MySQL y otorgarle permisos, puedes salir del cliente MySQL:
mysql> exit
bash