Está en la página 1de 11

COMO CREAR UN USUARIO EN MYSQL

LEWIS VARGAS
ANDREA CANABAL
BENJAMIN PREZ
CARLOS CABARCAS

MYSQL
Es un sistema de gestin de bases de datos
claramente orientado a la web, y una de los sntomas
en su arquitectura ha venido siendo que lacreacin
de los usuariosse realiza en la misma sentencia que
el permiso (grant) de acceso a una o varias bases de
datos. La orientacin de mysql va cambiando con el
tiempo y el uso que se le da a las bases de datos cada
vez trasciende ms el entorno web.

FORMA CLSICA CON LA SENTENCIA GRANT


Utilizando la sentenciaGRANTpodemos crear un usuario a la par que otorgarle
uno o varios privilegios sobre los objetos de una base de datos, o la base de datos
completa.
Al encontrarse una sentencia de tipo GRANT, el motor de MySQL revisa si el
usuario existe previamente para el contexto que estamos asignndole permisos, y
si
dicho
usuario
no
est
presente
en
el
sistema,
lo
crea.
No entrar en detalles sobre todas las opciones que nos permite ejecutar la
sentencia GRANT, sino solo en las que se refieren a la creacin del usuario.
Pongamos unejemplo, queremos crear el usuario para la base de datos test:

En primer lugar, use el programamysqlpara conectar al servidor como el


usuarioroot:
shell> mysql --user=root mysql
Si ha asignado una contrasea a la cuentaroot, necesitar la opcin-passwordo-ppara este comandomysqly tambin para los mostrados a
continuacin en esta seccin.
Tras la conexin al servidor comoroot, puede aadir nuevas cuentas. El siguiente
comando usaGRANTpara inicializar nuevas cuentas:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

LA SENTENCIA CREATE USER


A partir de la versin MySQL 5.0.2 existe la posibilidad de crear usuarios sin
necesidad de asignarles privilegios, utilizando la sentenciaCREATE USER.
Por ejemplo, para crear el usuario Fernando:
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.0.67 Source distribution
mysql> CREATE USER 'fernando'@'localhost' IDENTIFIED BY 'fer_pass';

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:
mysql -u fernando -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Los privilegios necesarios para ejecutar la sentenciaCREATE USERson CREATE
USER
o
bien
INSERT
en
la
base
de
datosmysql.
El usuario recin creado no tiene privilegio alguno, por lo que deberemos asignarle
permisos utilizando sentenciasGRANT(esta vez sin la clusula IDENTIFIED BY).

MODO HARDCORE: INSERTANDO EN LA


TABLA USERS
Este es un mtodo que MySQL no recomienda demasiado, es un poco ms complejo
que los otros dos, pero va bien a la hora de resolver problemas, como que por
ejemplo alguno de las formas anteriores est dando algn problema extrao.
Para ello es necesario un usuario con privilegio INSERT en la base de datos mysql.
Tambin debo decir que se ha de tener mucho cuidado con esta base de datos, ya que
contiene toda la informacin de usuarios y permisos.

Ejemplo de creacin del usuario mariano usandoINSERTen nuestra base de datos.


Nos conectamos con un usuario con privilegios, en este caso root, y seleccionamos
la base de datos mysql mediante la sentenciaUSE.
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23
mysql> use mysql
Database changed
Y despus realizamos la sentencia de insercin para aadir nuestro usuario:
mysql> INSERT INTO user
VALUES('localhost','mariano',PASSWORD('pass_mariano'),'Y','Y',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'N','N','N','','','','',0,0,0,0);
Query OK, 1 row affected (0,00 sec)

Es necesario llamar a la funcinPASSWORD()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 unDESCRIBE user.
mysql> DESCRIBE user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |

OTRAS CONSIDERACIONES
Tambin se pueden crear usuarios desde la herramienta visual MySQL
Administrator, que forma parte de las GUI Tools que ofrece gratuitamente MySQL
y se pueden descargardesde aqu. (Es multiplataforma, pero en Mac funciona
bastante mal)
Para saber con qu usuario estamos conectados en este momento, podemos usar la
funcinCURRENT_USER()oUSER().
mysql> SELECT CURRENT_USER();
+------------------+
| CURRENT_USER() |
+------------------+
| adolfo@localhost |
+------------------+
1 row in set (0,00 sec)

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:
GRANT SELECT, INSERT ON test.* TO 'adolfo'@'%' IDENTIFIED BY 'pass_adolfo';
CREATE USER 'fernando'@'192.168.1.%' IDENTIFIED BY 'fer_pass';