Gestión de Usuarios y Permisos en MySQL: Control de Acceso Detallado

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,55 KB

Usuarios y Privilegios en MySQL

El usuario root es el administrador y dispone de todos los privilegios en MySQL. No es recomendable que todos los usuarios tengan acceso al servidor con todos los privilegios. Para mantener la integridad de los datos y de las estructuras, es conveniente que solo algunos usuarios puedan realizar determinadas tareas.

Usuarios y privilegios están íntimamente relacionados. No se pueden crear usuarios sin asignarles privilegios al mismo tiempo. MySQL permite definir diferentes usuarios, asignando a cada uno determinados privilegios en distintos niveles o categorías.

Niveles de Privilegios

  • Globales: Aplican al conjunto de todas las bases de datos en un servidor. Es el nivel más alto de privilegio, en el sentido de que su ámbito es el más general.
  • De base de datos: Se aplican a bases de datos individuales, y por extensión, a todos los objetos que contiene cada base de datos.
  • De tabla: Se aplican a tablas individuales y, por lo tanto, a todas las columnas de esas tablas.
  • De columna: Se aplican a una columna en una tabla concreta.
  • De rutina: Se aplican a los procedimientos almacenados. En MySQL se pueden almacenar procedimientos consistentes en varias consultas SQL.

Crear Usuarios

Para crear usuarios, se utiliza la sentencia CREATE USER. En versiones anteriores, se usaba exclusivamente la sentencia GRANT para crearlos. Al crear un usuario mediante CREATE USER, posteriormente hay que usar una sentencia GRANT para concederle privilegios.

Usando GRANT podemos crear un usuario y, al mismo tiempo, concederle los privilegios que tendrá. Para crear un usuario sin privilegios, usaremos la sentencia:

mysql> GRANT USAGE ON *.* TO 'anonimo'@'localhost' IDENTIFIED BY 'clave';

La contraseña debe ir entre comillas.

Conceder Privilegios

Para que un usuario pueda hacer algo más que consultar algunas variables del sistema, debe tener algún privilegio. Para conceder el privilegio para seleccionar datos de una tabla concreta, se usa la sentencia GRANT, que también se usa para añadir privilegios a un usuario existente. Por ejemplo, para dar al usuario 'anonimo' el privilegio de ejecutar sentencias SELECT sobre la tabla 'gente' de la base de datos 'prueba':

mysql> GRANT SELECT ON prueba.gente TO 'anonimo'@'localhost';

Una vez concedido el privilegio, el usuario que se identifique como 'anonimo' podrá ejecutar estas sentencias:

mysql> USE prueba;
DATABASE changed
mysql> SELECT * FROM gente;

Para conceder privilegios globales, se usa ON *.*, para indicar que los privilegios se conceden en todas las tablas de todas las bases de datos.

Para conceder privilegios en bases de datos, se usa ON nombre_db.*, indicando que los privilegios se conceden sobre todas las tablas de la base de datos.

Privilegios Comunes

  • ALL: Para conceder todos los privilegios.
  • CREATE: Permite crear nuevas tablas.
  • DELETE: Permite usar la sentencia DELETE.
  • DROP: Permite borrar tablas.
  • INSERT: Permite insertar datos en tablas.
  • UPDATE: Permite usar la sentencia UPDATE.

Entradas relacionadas: