El blog de Alejandro Meroño

El blog de Alejandro Meroño Hernández

Gestionar usuarios en Mysql  

Cuando instalamos MySQL por defecto sólo se crea un usuario que es el usuario administrador (root). Este usuario dispone de todos los privilegios en el servidor de bases de datos MySQL. En ciertas situaciones puede ser necesario crear varios usuarios para que realicen ciertas tareas. Estos usuarios pueden tener ciertos privilegios sobre la base de datos.

Por ejemplo, se puede crear un usuario que sólo tenga posibilidad de consultar datos de una cierta tabla, pero que no pueda realizar modificaciones sobre ella. También podemos crear usuarios que dispongan de permisos de lectura e inserción sobre una tabla determinada de la base de datos pero no de modificación de registros sobre la tabla.

A continuación veremos como crear usuarios en MySQL y como conceder permisos a estos usuarios.

¿Cómo iniciar una sesión en MySQL? 

La forma general de iniciar una sesión en MySQL es:

  • mysql -h host -u usuario -p

Esta orden debe ejecutarse en la consola, en el directorio donde tengamos instalado el servidor de bases de datos. El parámetro -h sirve para indicar el ordenador donde se encuentra el servidor de bases de datos MySQL. El parámetro -u indica el nombre usuario que se va a conectar a la base de datos. El parámetro -p indica que se debe solicitar una clave para acceder al servidor. 

Creación de usuarios en MySQL 

La orden CREATE USER permite crear usuarios en una base de datos MySQL. Esta orden tiene la siguiente sintaxis:

CREATE USER user [IDENTIFIED BY [PASSWORD]] 'password'][, user [IDENTIFIED BY [PASSWORD] 'password']]

En el siguiente ejemplo se crea un usuario llamado ‘user1′ con contraseña ‘user1′.

  • create user user1 identified by ‘user1′;

 

Para que este usuario entre en la base de datos MySQL tendrá que escribir:

  • mysql -u user1 -p

Este usuario en principio no tiene ningún permiso sobre la bases datos.

Asignación de privilegios 

Existen dos tipos de privilegios: privilegios de sistema y privilegios sobre objetos. Los privilegios de sistema son permisos para poder realizar determinadas acciones sobre algún tipo genérico de objetos. Los privilegios sobre objetos nos permiten acceder y realizar cambios en los datos de otros usuarios.Los privilegios más importantes que pueden concederse se muestran a continuación:

  • CREATE USER: para crear usuarios.
  • CREATE: para crear tablas.
  • ALTER: para modificar tablas en la base de datos.
  • INDEX: permite crear y eliminar índices.
  • DROP: permite eliminar bases de datos y tablas.
  • CREATE TEMPORARY TABLES: para crear tablas temporales.
  • CREATE VIEW: permite crear vistas.
  • CREATE ROUTINE: permite crear el almacenamiento de rutinas.
  • ALL: para asignar todos los permisos salvo la creación de usuarios y la asignación de permisos.
  • DELETE: para eliminar registros de una tabla.
  • INSERT: para insertar registros en una tabla.
  • SELECT: para realizar consultas de selección.
  • UPDATE: para actualizar registros de una tabla de la base de datos.
  • FILE: permite importar y exportar datos de y hacia archivos.
  • GRANT OPTION: para realizar operaciones sobre los permisos y los usuarios de la base de datos.

La sintaxis general para asignar permisos a un usuario determinado es la siguiente:

  • grant permisoson objetosto usuarios;

La palabra clave GRANT va seguida de la lista de permisos, separados por comas, que se quiera conceder. Tras “on” especificamos sobre qué objeto de la base de datos en MySQL se van a asignar los permisos. Podemos utilizar *.* para otorgar todos esos permisos como los predeterminados para todas las bases de datos del servidor.

A continuación se muestran algunos ejemplos. Si, por ejemplo, queremos que el usuario user1 pueda consultar la tabla emple de la base de datos esi, la manera correcta sería:

  • grant select on esi.emple to user1;

Si queremos dar el privilegio para poder consultar todas las tablas, de la base de datos esi, escribiríamos:

  • grant select on esi.* to user1;

A continuación le damos al usuario user1 el permiso para insertar y borrar registros de la tabla emple de la base de datos esi:

  • grant insert,delete on esi.emple to user1;

Ahora concedemos al usuario user1 el permiso para poder actualizar el campo apellidos de la tabla emple:

  • grant update(apellidos) on esi.emple to user1;

Concedemos el privilegio para crear tablas en la base de datos esi:

  • grant create on esi.* to user1;

Ahora le damos al usuario user1 todos los permisos sobre la base de datos esi:

  • grant all on esi.* to user1;

Si queremos asignar el permiso para crear otros usuarios escribiremos:

  • grant create user on *.* to user1;

A la hora de conceder permisos existe una opción especial: WITH GRANT OPTION. Aquellos usuarios creados con esta opción podrán a su vez crear usuarios y otorgarles permisos. Si, por ejemplo, queremos que el usuario user1 tenga permisos para consultar datos sobre la tabla emple, y queremos también que este usuario pueda asignar este permiso a otros usuarios de la base de datos, la manera correcta sería:

  • grant select on esi.emple to user1 with grant option;

¿Cómo ver los permisos que tiene asignados un usuario? 

Para poder ver todos los permisos que tiene asociado un determinado usuario en MySQL se utiliza la orden show grants. Por ejemplo: show grants for user1;

Revocación de permisos. Orden REVOKE

Para quitar privilegios a un determinado usuario se usa la sentencia REVOKE. La sintaxis general es:

  • REVOKE permisosON objetosFROM lista_usuarios;

Algunos ejemplos se muestran a continuación.

Quitamos al usuario user1 el permiso de poder eliminar registros de la tabla emple:

  • revoke delete on esi.emple from anonimo;

Quitamos el permiso de crear tablas, en la base de datos esi, al usuario user1:

  •  revoke create on esi.* from user1;

Fuentes:

Popularity: 4% [?]


Otras entradas que te pueden interesar



Esta entrada tiene

2 comentarios

Escrito por Alejandro Meroño Hernández

Marzo 25th, 2007 at 7:22 pm

Categoría: Bases de datos

2 comentarios en 'Gestionar usuarios en Mysql'

Suscríbete a comentarios con RSS o TrackBack en 'Gestionar usuarios en Mysql'.

  1. Podiais ser mas explicitos conlo de los usuarios y las tablas,no? Podiais decirme si hay alguna manera de centralizar lass tblas en otro ordenador y no permitir su alteracion sin pedir permisos, y negas la eliminacion?

    rai

    22 Abr 08 at 11:16 am

  2. excelente tutorial muy completo y explicito
    gracias

    MARLON

    26 Ago 08 at 7:20 pm

Deja un comentario