MySQL es un sistema de gestión de bases de datos relacionales popular y ampliamente utilizado para diversas aplicaciones web. Una de las tareas importantes que deben realizar los administradores de bases de datos es crear nuevos usuarios de MySQL y otorgarles los derechos de acceso adecuados.
Los derechos de acceso o privileges son reglas que definen lo que un usuario puede hacer con una base de datos, tabla, columna u otro objeto. Al conceder los derechos de acceso adecuados, puede mejorar la seguridad y el rendimiento de la base de datos.
En este artículo, Bardimin discutirá cómo crear un nuevo usuario de MySQL y otorgar derechos de acceso a través de la línea de comandos. Bardimin también discutirá algunos comandos de MySQL que son útiles para administrar usuarios y derechos de acceso.
Paso 1: Iniciar sesión en MySQL como root
Antes de poder crear un nuevo usuario de MySQL u otorgar permisos, debe iniciar sesión en MySQL como usuario root u otro usuario que tenga derechos de acceso GRANT. El usuario root es el usuario que tiene todos los derechos de acceso a todas las bases de datos y objetos MySQL. Puede iniciar sesión en MySQL como root mediante el siguiente comando:
mysql -u root -p
Este comando le pedirá que ingrese la contraseña de root que creó al instalar MySQL. Una vez que hayas ingresado la contraseña correcta, verás un mensaje de MySQL como este:
mysql>
Paso 2: Crear un nuevo usuario de MySQL
Después de iniciar sesión en MySQL como root, puede crear un nuevo usuario de MySQL mediante el comando CREATE USER. El formato general de este comando es el siguiente:
CREATE USER ‘username»host’ IDENTIFIED BY ‘password’;
Aquí, debe reemplazar el username, host y password con los valores correspondientes. username es el nombre del usuario que desea crear. host es el nombre de host o la dirección IP desde la que un usuario puede conectarse a MySQL.
Puede usar % para indicar que los usuarios pueden conectarse desde cualquier lugar, o puede restringir a los usuarios para que se conecten solo desde hosts específicos. password es la contraseña que desea establecer para el usuario.
Por ejemplo, si desea crear un usuario llamado user1 que pueda conectarse desde cualquier lugar con una contraseña pass1, puede usar el siguiente comando:
CREATE USER 'user1''%' IDENTIFIED BY 'pass1';
Si el comando se ejecuta correctamente, verá un mensaje como este:
Query OK, 0 rows affected (0.01 sec)
Puede comprobar si el usuario se ha creado correctamente utilizando el comando SELECT en la tabla mysql.user:
SELECT User, Host FROM mysql.user;
Este comando mostrará todos los usuarios existentes de MySQL y sus hosts. Deberías ver resultados como este:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | mysql.session | localhost | | mysql.sys | localhost | | user1 | % | +------------------+-----------+ 4 rows in set (0.00 sec)
Aquí, puede ver que user1 usuario se ha creado con el host %.
Paso 3: Conceder derechos de acceso a los nuevos usuarios de MySQL
Después de crear un nuevo usuario de MySQL, debe conceder los permisos adecuados a ese usuario. Puede conceder permisos mediante el comando GRANT. El formato general de este comando es el siguiente:
GRANT privileges ON database.table TO ‘username»host’;
Aquí, debe reemplazar el privileges, database, table, username y host con los valores correspondientes. privileges es el derecho de acceso que desea conceder a un usuario. Puede conceder derechos de acceso específicos, como SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX, EXECUTE, GRANT OPTION y más.
También puede conceder derechos de acceso global como ALL PRIVILEGES o ALL que incluya todos los derechos de acceso existentes. database es el nombre de la base de datos a la que desea conceder derechos de acceso. Puede utilizar * para mostrar todas las bases de datos. table es el nombre de la tabla a la que desea conceder derechos de acceso. También puede usar * para mostrar todas las tablas. username y host son nombres de usuario y hosts que ha creado antes.
Por ejemplo, si desea conceder derechos de acceso a SELECT, INSERT, UPDATE y DELETE a user1 usuarios en todas las tablas de db1 base de datos, puede utilizar el siguiente comando:
GRANT SELECT, INSERT, UPDATE, DELETE ON db1.* TO 'user1''%';
Si el comando se ejecuta correctamente, verá un mensaje como este:
Query OK, 0 rows affected (0.01 sec)
Puede comprobar si los permisos se han concedido correctamente utilizando el comando SHOW GRANTS:
SHOW GRANTS FOR 'user1''%';
Este comando mostrará todos los derechos de acceso que posee el usuario user1. Deberías ver resultados como este:
+--------------------------------------------------------------+
| Grants for user1% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `user1``%` |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO `user1``%`|
+--------------------------------------------------------------+
2 rows in set (0.00 sec)
Aquí puede ver que user1 usuario tiene derechos de acceso SELECT, INSERT, UPDATE y DELETE en todas las tablas de db1 base de datos.
Otros artículos interesantes
Paso 4: Cambiar o revocar los derechos de acceso de un usuario de MySQL
Si desea cambiar o revocar los permisos de un usuario de MySQL, puede usar el comando REVOKE. El formato general de este comando es el siguiente:
REVOKE privileges ON database.table FROM ‘username»host’;
Aquí, debe reemplazar el privileges, database, table, username y host con los valores correspondientes. privileges es el derecho de acceso que desea cambiar o revocar del usuario. Puede utilizar derechos de acceso específicos o globales como se ha descrito anteriormente. database, table, username y host son los nombres de bases de datos, tablas, usuarios y hosts a los que se han concedido derechos de acceso anteriormente.
Por ejemplo, si desea revocar los permisos de DELETE de un usuario user1 en todas las tablas de db1 base de datos, puede utilizar el siguiente comando:
REVOKE DELETE ON db1.* FROM 'user1''%';
Si el comando se ejecuta correctamente, verá un mensaje como este:
Query OK, 0 rows affected (0.01 sec)
Puede comprobar si los derechos de acceso se han revocado correctamente utilizando el comando SHOW GRANTS:
SHOW GRANTS FOR 'user1''%';
Este comando mostrará todos los derechos de acceso que posee el usuario user1. Deberías ver resultados como este:
+--------------------------------------------------------------+ | Grants for user1% | +--------------------------------------------------------------+ | GRANT USAGE ON *.* TO `user1``%` | | GRANT SELECT, INSERT, UPDATE ON `db1`.* TO `user1``%` | +--------------------------------------------------------------+ 2 rows in set (0.00 sec)
Aquí puede ver que se han revocado DELETE derechos de acceso de user1 usuarios en todas las tablas de db1 base de datos.
Paso 5: Eliminar usuarios de MySQL
Si desea eliminar un usuario de MySQL, puede usar el comando DROP USER. El formato general de este comando es el siguiente:
DROP USER 'username''host';
Aquí, deberá reemplazar el username y el host con el nombre de usuario y el host que desea eliminar. Este comando elimina el usuario y todos los permisos que tiene.
Por ejemplo, si desea eliminar un usuario user1, puede utilizar el siguiente comando:
DROP USER 'user1''%';
Si el comando se ejecuta correctamente, verá un mensaje como este:
Query OK, 0 rows affected (0.01 sec)
Puede comprobar si un usuario se ha eliminado correctamente utilizando el comando SELECT de la tabla mysql.user:
SELECT User, Host FROM mysql.user;
Este comando mostrará todos los usuarios existentes de MySQL y sus hosts. Deberías ver resultados como este:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 3 rows in set (0.00 sec)
Aquí, puede ver que user1 usuario ha sido eliminado de la lista de usuarios de MySQL.
Conclusión
MySQL tiene varios comandos útiles para administrar usuarios y derechos de acceso. Con estos comandos, puede organizar su base de datos MySQL mejor y de forma más segura.
Espero que este artículo te resulte útil. Gracias por leer.