Blog de Gonzalo

CREAR USUARIOS EN MYSQL

Siempre que se instala una base de datos MySQL siempre viene creada con un usuario root y sin ninguna contraseña pero hay veces que es necesario crear diferentes usuarios con diferentes permisos.
Los usuarios de MySQL se crean en la tabla user indicando el host desde donde se va a conectar (por defecto no se puede conectar fuera del servidor donde está MySQL instalado, para configurar conexiones externas el post sobre permitir conexiones externas en mysql, password y permisos o privilegios Ahora voy a explicar como crear usuarios en mysql con sus respectivos permisos:

CREAR USUARIO

Lo primero es ejecutar la sentencia CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'contrasena';. Después de ejecutar esta sentencia el usuario ya ha sido creado pero sin ningún permiso ni privilegio por lo que dará error al intentar acceder a cualquier base de datos. Por ello, lo primero que debemos hacer es porporcionarle el acceso requerido al usuario con la información que requiere.

Como se puede ver se ha añadido localhost y es para indicar que el usuario solo se va a poder conectar a la base de datos desde el propio servidor. Es la configuración más segura y habitual. Para permitir el acceso desde cualquier otra máquina que tenga acceso al servidor MySQL desde la red sería CREATE USER 'nombre_usuario'@'%' IDENTIFIED BY 'contrasena';

OTORGAR PERMISOS

Para otorgar permisos a un usuario hay que ejecutar la sentencia GRANT privilege ON base_de_datos.tabla TO 'nombre_usuario'@'localhost';.
Lista de permisos de MySQL

  • ALL PRIVILEGES: Este permiso permite acceder a todas las bases de datos.
  • CREATE: Este permiso permite crear nuevas tablas o bases de datos.
  • DROP: Este permiso permite eliminaenuevas tablas o bases de datos.
  • DELETE: Este permiso permite eliminar registros de tablas.
  • INSERT: Este permiso permite crear registros de tablas.
  • SELECT: Este permiso permite seleccionar registros de tablas.
  • UPDATE: Este permiso permite actualizar registros de tablas.
  • USAGE: Este permiso permite indicar desde donde se puede conectar el usuario a la base de datos: localhost (desde el propio servidor) o % (desde otro servidor).
  • GRANT OPTION: Este permite elminar permisos al usuario.

NOTA: Hay más permisos pero creo que estos son más interesantes.

Cada vez que se actualizas o cambian permisos, hay que refrescar los privilegios con la sentencia FLUSH PRIVILEGES;.

Para quitarle un permiso a un usuario hay que ejecutar la sentencia REVOKE permiso ON basedatos.tabla FROM 'usuario'@'localhost';.

Para eliminar un usuario hay que ejecutar la sentencia DROP USER 'nombre de usuario'@'localhost';.


Si no se quieren dar permisos a ciertos usuarios operar con las tablas de la base de datos se pueden crear vistas. Y luego dar permisos SELECT al usuario sobre las vistas deseadas.

Compartir en twitter