Este documento explica cómo crear y administrar usuarios y permisos en MySQL. Detalla los comandos para crear usuarios, otorgarles permisos sobre bases de datos y tablas específicas, modificar contraseñas y eliminar usuarios. También cubre la creación de usuarios para acceso remoto y un ejercicio práctico para crear usuarios con permisos específicos sobre la base de datos Clientes.
1. Bases de Datos Sección 403.
Práctica Creación de usuarios y privilegios
Conéctate a Mysql Server utilizando el usuario root
Verifica que ha iniciado con el usuario root con el comando select user();
Ahora digitashow databases, para que ver a cuantas bases de datos tiene acceso el usuario root
Creación de usuarios
La sintaxis para la creación de usuarios es la siguiente.
CREATE USER 'nombre_usuario'@'servidor' IDENTIFIED BY 'clave_usuario';
Donde: Nombre_usuario : Será el nombre de usuario el cual elijamos para el fin que deseemos.
Servidor: Para el caso de nuestras pruebas locales elegiremos localhost, a menos que se tenga un
servidor remoto con un nombre en específico Identified by : Es la clave que identifica al usuario
creado. La cual es encriptada por el sistema. Ejemplo: Crear un usuario llamado ´gerente´
utilizando la clave „123456‟ CREATE USER 'gerente'@'localhost' IDENTIFIED BY '123456'; Para
verificar los permisos de usuario y mostrar el password encriptado utilizamos la siguiente
sentencia: SHOW GRANTS FOR ‘gerente’@’localhost’
Ahora salir del usuario root con la sentencia exit; y volver al promt del sistema
1
2. Ahora ingresar con el usuario gerente que acabamos de crear con la siguiente sentencia: mysql –u
gerente –p
Verifica que has iniciado sesión con el usuario gerente con la sentencia select user();
Verifica a cuantas bases de datos tiene acceso ese usuario con show databases;
Como puede ver este usuario no posee ningún permiso sobre las bases de datos creadas
en mysql.
CREACION DE USUARIOS PARA ACCESO REMOTO
Al crear un usuario, se define el contexto desde el que se puede conectar, por ejemplo
'carlos'@'localhost' solamente se puede conectar desde el mismo servidor de la base de
datos, para crear usuarios que se puedan conectar desde varias máquinas, se puede
crear un usuario por cada máquina o usar el comodín '%', el usuario 'carlos'@'%' se
podría conectar desde cualquier máquina, y el usuario 'gerentelan'@'10.0.25.%' se podría
conectar desde máquinas con una dirección IP comprendida entre 10.0.25.1 y
10.0.25.255. Ejemplo:
El usuario puede acceder desde cualquier maquina comprendida entre 10.0.25.1 y
10.0.25.255 CREATE USER 'gerentelan'@'10.0.25.%' IDENTIFIED BY '123456';
Para poder acceder con usuarios remoto se utiliza la siguiente sentencia
mysql –ugerentelan –h10.0.25.5 –p
En la sintaxis vemos un nuevo parámetro –h, el cual indica el servidor al cual se desea conectar,
para acceso local se utiliza –hlocalhost aunque se puede obviar. En el ejemplo se intenta acceder a
la maquina con ip 10.0.25.5
Otorgar Permisos Sobre Bases de Datos
USE Clientes;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes TO
'gerente'@'localhost';
Con el ejemplo anterior primero se ha seleccionado la base de datos llamada Clientes,
luego con la palabra GRANT estamos otorgando permisos, seguido de ellos describimos
los modificadores que podrá tener sobre la base de datos, si queremos concederle todos
los permisos entonces en lugar de listarlos simplemente lo sustituimos por la palabra ALL,
tal como se muestra a continuación.
2
3. USE Clientes GRANT ALL ON Clientes TO 'gerente'@'localhost';
Con esta última opción se está asignando al usuario los permisos listados sobre todas las
tablas que contenga la base de datos, pero esto en alguna ocasiones no puede ser muy
recomendable ya que no siempre se desea crear usuarios que posean total control sobre
la base de datos Ahora salir y volver a conectarse al monitor de mysql nuevamente y
verifica si tienes acceso a la base de datos y a las tablas Todos los permisos se pueden
otorgar y quitar con el usuario root, por lo que a partir de esta parte en todas las
sentencias para otorgar y quitar privilegios, se deberá cambiar a root para manejar los
permisos y a gerente para verificar los cambios.
Remover permisos sobre bases de datos
La sentencia REVOKE sirve para quitar o remover los permisos otorgados mediante
GRANT. Si los permisos creados fueron de modo global sin especificar tablas en el
sistema deberá de usarse la siguiente sintaxis para quitar los permisos.
Use Clientes;
REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes FROM
'gerente'@'localhost' ;
Si en la definición de los permisos se utilizó * entonces se debe remover los permisos del
mismo modo indicando que será en todas las tablas de la base de datos en cuestión.
Use Clientes;
REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Cliente.* FROM
'gerente'@'localhost' ;
Nuevamente el usuario no tendrá permisos sobre el objeto anterior.
Otorgar permisos sobre tablas especificas de una base de datos Para limitar o
administrar el acceso de los usuarios a ciertas tablas podemos utilizar siempre la
instrucción GRANT pero en la definición del objeto sobre el cual delimitaremos los
permisos especificamos las tablas en cuestión. Tal y como se muestra a continuación.
USE Clientes;
GRANT SELECT, INSERT, UPDATE, DELETE ON Clientes.personas TO
'gerente'@'localhost';
Del mismo modo para poder agregar más, los mismos permisos en más de una tabla y
delimitar consultas máximas por hora, conexiones máximas por hora y otros delimitadores
se puede basar en el siguiente código:
GRANT SELECT,INSERT,UPDATE,DELETE ON Clientes.personas TO
'gerente'@'localhost' IDENTIFIED BY '123456' WITH MAX_QUERIES_PER_HOUR 20
MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5
MAX_USER_CONNECTIONS 20;
Con la definición anterior se estableció un máximo de consultas de 20 consultas por hora,
además máximo de 10 update por hora, máximo de 5 conexiones al servidor en menos de
3
4. una hora, y máximo de conexiones de usuario de 20. Con esto podemos delimitar mas el
acceso del usuario a la BD y en este caso a la tabla en especifico, el condicionante
IDENTIFIED BY puede ser incluido en las otorgaciones anteriores aunque no es
necesario.
Remover permisos sobre tablas específicas de una base de datos Para eliminar
los permisos otorgados anteriormente se utilizará una sintaxis similar.
REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON Clientes.personas
FROM 'gerente'@'localhost' IDENTIFIED BY '123456' ;
Cabe recordar que no es necesario especificar el password mediante IDENTIFIED BY,
esto es indiferente el agregarlo o no. El comando de igual forma funcionará. Revisar ahora
los resultados actualizados.
Remover Todos los permisos de forma general.
Para eliminar privilegios de modo global se puede utilizar la siguiente sintaxis
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'gerente'@'localhost';
Renombrar usuarios. Para renombrar un usuario se utiliza la sintaxis siguiente
RENAME USER 'usuario_anterior'@'nombre_servidor' TO
'usuario_nuevo'@'nombre_servidor'
Para realizar un ejemplo práctico renombrar el usuario llamado gerente identificándolo
como gerente_general
RENAME USER 'gerente'@'localhost' TO 'gerente_general'@'localhost'
Modificar Contraseñas de usuarios. Dentro de un sistema de seguridad no
debe de faltar el poder cambiar la contraseña de los usuarios de forma periódica, esto lo
pones en práctica en tu correo electrónico y en otras contraseñas para diferentes fines.
Por lo tanto es indispensable en cada inicio de sesión ya que se puede poner en riesgo la
seguridad del sistema y por lo tanto la seguridad laboral dentro de una empresa. Para
modificar la contraseña o clave de un usuario se utiliza la siguiente sintaxis:
SET PASSWORD FOR 'gerente_general'@'localhost' = PASSWORD('654321');
En donde se especifica el usuario a modificar luego con la palabra PASSWORD se debe
asegurar que el password a introducir sea cifrado en pase a la función PASSWORD que
viene integrada en MySQL Server.
Eliminar Usuarios del sistema. Para eliminar usuarios del sistema basta con especificar
DROP USER seguido del usuario a eliminar.
DROP USER 'gerente_general'@'localhost'
Ejercicio:
4
5. Crear los usuarios con los siguientes permisos
1. Usuario: user1
Permisos: Permite crear tablas en la base de datos Cliente (la cual debes crear, con la
tabla personas cuyos campos serán idpersona, nombre y domicilio y la tabla ciudades con
los campos id_ciudad, nombre, capital), permite solo realizar consultar a la tabla personas
2. Usuario: user2
Permisos: Permite borrar tablas en la base de datos Clientes, permite solo realizar
actualizaciones a la tabla ciudades e insertar datos en la tabla ciudades
3. Usuario: user3
Permisos: tiene todos los privilegios sobre la tabla ciudades de la BD clientes
4. Pregunta a tu compañero la ip de su computadora y créale un usuario que tenga
permisos para consultar, eliminar, insertar y modificar datos en la tabla personas de la
base de datos clientes para que pruebe el usuario por acceso remoto
Investigar
¿Qué es un trigger?
Ventajas y desventajas
Sintaxis
Presentar un ejemplo con la base de datos Clientes en Mysql
Definir los id de las tablas de tipo numérico y los demás campos de tipo varchar, la
longitud la eliges tú.
5