Académique Documents
Professionnel Documents
Culture Documents
Inicialmente slo hay un usuario creado, en muchas de las configuraciones tpicas, que es el usuario root. La lista de usuarios creados aparece en la parte de abajo de la barra de la izquierda. Podemos seleccionar cualquier usuario para editar sus propiedades.
User information: son los datos de login (nombre de usuario y contrasea de acceso) y otros datos personales del usuario, que es opcional completar. Schema Privileges: son los permisos asociados a ese usuario. Nos permite seleccionar los permisos de este usuario para cada base de datos de nuestro sistema Resources: son los recursos disponibles para ese usuario.
En la parte de debajo de la ventana encontraremos tres botones, para crear un nuevo usuario, para aplicar los cambios realizados en los formularios de edicin de un usuario y para descartarlos.
Si queremos crear un usuario podemos pulsar el botn de "Add New User" y se habilitara las propiedades del usuario, en la pestaa de User Information, para que introduzcamos el nombre para este usuario y la contrasea que vamos a asignar. La ventana de Schema Privileges nos permite seleccionar una base de datos y entonces accedemos a una lista con todos los privilegios posibles para permitir o denegar. Inicialmente, para un usuario nuevo, todos los permisos estn denegados, as que tendremos que seleccionar los que deseamos otorgar. Para ello simplemente seleccionamos entre los "avaliable privileges" (permisos disponibles) y los pasamos a "assigned privileges" (permisos asignados).
Nos conectamos utilizando -u para indicarle el usuario y si quisieramos indicarle un password, deberiamos poner -p (sin aadirle la contrasea), en este caso la cuenta root, al ser una mquina de desarrollo, est desprotegida. - Lanzamos la sentencia GRANT, indicando los permisos que otorgamos, la base de datos y los objetos de la misma sobre los que estamos asignando privilegios, el nombre del usuario y el password:
En este ejemplo permitimos al usuario adolfo que seleccione (SELECT) e inserte (INSERT) en todos los objetos (*) de la base de datos test, adems indicamos que el contexto sea la mquina local de la base de datos (localhost), lo que impedir que el usuario se conecte desde otras mquinas, y finalmente asignamos un password mediante IDENTIFIED BY. Si quisieramos que el usuario no tuviera un password, deberemos omitir la clusula IDENTIFIED BY. En el caso de que el modo SQL del servidor estuviera en NO_AUTO_CREATE_USER, la creacin de usuarios no estara permitida a no ser que tuvieran asignado un password no vaco. - Una vez hecho esto, podremos conectarnos con nuestro usuario y realizar las acciones para las que hemos asignado permisos:
Al igual que con la sentencia GRANT, el contexto 'localhost' define que el usuario solamente se puede conectar desde el servidor de MySQL, y el IDENTIFIED BY define el password del usuario, se puede omitir, para un usuario sin password, siempre que el modo SQL no sea NO_AUTO_CREATE_USER. Conexin con el usuario, utilizando la opcin -p:
CREATE USER
mysql.
El usuario recin creado no tiene privilegio alguno, por lo que deberemos asignarle permisos utilizando sentencias
Es necesario llamar a la funcin PASSWORD() para almacenar el password codificado, en los otros casos, el IDENTIFIED BY se encarga de hacer la codificacin. En este caso se le dan permisos globales de INSERT y SELECT, para saber a qu corresponde cada columna, se puede hacer un DESCRIBE user.
Para asignar privilegios a bases de datos especficas o tablas especficas, se debe usar GRANT. Utilizando este mtodo, tenemos que forzar que se refresquen las tablas de permisos usando FLUSH PRIVILEGES.
Otras consideraciones
Para saber con qu usuario estamos conectados en este momento, podemos usar la funcin CURRENT_USER() o USER().
Al crear un usuario, se define el contexto desde el que se puede conectar, por ejemplo 'adolfo'@'localhost' solamente se puede conectar desde el mismo servidor de la base de datos, para crear usuarios que se puedan conectar desde varias mquinas, se puede crear un usuario por cada mquina o usar el comodn '%', el usuario 'adolfo'@'%' se podra conectar desde cualquier mquina, y el usuario 'fernando'@'192.168.1.%' se podra conectar desde mquinas con una direccin IP comprendida entre 192.168.1.1 y 129.168.1.255. Por ejemplo:
En el caso de que estemos realizando la creacin de un usuario mediante el mtodo INSERT y nos aparezca el siguiente error:
ERROR 1136 (21S01): Column count doesn't match value count at row 1 La razn es que algunas de las columnas de la tabla user no tienen valor por defecto (por ejemplo ssl_type), y no las hemos informado todas, es necesario hacerlo.
PRIVILEGIOS
En MySQL existen cinco niveles distintos de privilegios: Globales: se aplican al conjunto de todas las bases de datos en un servidor. Es el nivel ms alto de privilegio, en el sentido de que su mbito es el ms general. De base de datos: se refieren a bases de datos individuales, 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 tabla. De columna: se aplican a una columna en una tabla concreta. De rutina: se aplican a los procedimientos almacenados.
El comando show privileges muestra detalladamente, todos los privilegios disponibles dentro de Mysql, con su descripcion detallada de que hace y que sirve para asignar o revokar permisos a un usuario.
Funcin GRANT y REVOKE La funcin GRANT es la que utilizaremos para conceder los privilegios. Su funcionamiento es el siguiente: GRANT privilegios ON base/tabla
TO usuario [IDENTIFIED by contrasea] [WITH GRANT OPTION]; Nota.- Los comandos que estn escritos dentro de corchetes son solo opcionales ya que bsicamente se puede usar el comando GRANT sin utilizar IDENTIFIED Y WITH. Vemoslo en ms detalle, analizando lnea por lnea de esta estructura: GRANT privilegios: A continuacin de GRANT, incluiremos todos los privilegios que queramos conceder a este usuario, separados por comas. ON base/tabla: A continuacin de ON escribimos la base de datos o tabla sobre la que tendr vigor el privilegio. Si queremos extender este privilegio a todas las bases de datos presentes en el servidor, lo indicaremos con *.*. TO usuario [IDENTIFIED BY contrasea]: Usuario indica el nombre que deber introducir para poder acceder al servidor MySQL, y contrasea, evidentemente, la contrasea que necesitar para acceder al servidor MySQL. WITH GRANT OPTION: Se usa para permitir al usuario conceder a otros sus mismos privilegios. Como regla general, es aconsejable no utilizarla nunca.
La funcin REVOKE se utiliza para retirar privilegios a los usuarios. Su sintaxis es muy similar a la de GRANT: REVOKE privilegios ON base/tabla FROM usuario El funcionamiento de cada una de las lneas es idntico al de GRANT. Lista de Privilegios Tenemos los siguientes privilegios: 1- Privilegios para usuarios 2- Privilegios para administradores 3- Privilegios especiales.
Privilegios para los usuarios SELECT- Selecciona los registros de la tabla/s. INSERT- Insertar registro en la tabla/s. UPDATE- Actualizar datos ya existentes en la tabla/s. ALTER- Modificar la estructura de la tabla/s.
CREATE- Crear nuevas tablas, bases datos. DROP- Eliminar tablas o BD.
Privilegios de administradores FILE- Permite al admin leer y gravar achivos en el server mySQL. PROCESS- Permite al administrador controlar los procesos. RELOAD- Permite al administrador reformar los acesos,privilegios... SHUTDOWN- Permite al admin apagar el servidor.
Privilegios especiales ALL- Todos los privilegios comentadas anteriormente. USAGE- Permite el acceso.