SlideShare une entreprise Scribd logo
1  sur  5
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
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
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
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
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

Contenu connexe

Tendances

Técnicas de administración del planificador
Técnicas de administración del planificadorTécnicas de administración del planificador
Técnicas de administración del planificadorCristian Izquierdo
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Taller de habilidades-Windows Server 2012
Taller de habilidades-Windows Server 2012Taller de habilidades-Windows Server 2012
Taller de habilidades-Windows Server 2012jcausil1
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacionalAlex Javier
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplouniv of pamplona
 
Principios basicos base de datos
Principios basicos   base de datosPrincipios basicos   base de datos
Principios basicos base de datosPilar Pardo Hidalgo
 
Breve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLBreve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLTotus Muertos
 
IBM Websphere concepts
IBM Websphere conceptsIBM Websphere concepts
IBM Websphere conceptsKuldeep Saxena
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónNatalia Ludeña
 

Tendances (20)

Ejercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sqlEjercicios resueltos de_pl-sql
Ejercicios resueltos de_pl-sql
 
Técnicas de administración del planificador
Técnicas de administración del planificadorTécnicas de administración del planificador
Técnicas de administración del planificador
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Taller de habilidades-Windows Server 2012
Taller de habilidades-Windows Server 2012Taller de habilidades-Windows Server 2012
Taller de habilidades-Windows Server 2012
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Gestión de archivos
Gestión de archivosGestión de archivos
Gestión de archivos
 
Servicios DHCP, DNS y TELNET
Servicios DHCP, DNS y TELNETServicios DHCP, DNS y TELNET
Servicios DHCP, DNS y TELNET
 
22 ejercicios base de datos
22 ejercicios base de datos 22 ejercicios base de datos
22 ejercicios base de datos
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Una base de datos relacional
Una base de datos relacionalUna base de datos relacional
Una base de datos relacional
 
Sistema de Archivos
Sistema de ArchivosSistema de Archivos
Sistema de Archivos
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplo
 
Principios basicos base de datos
Principios basicos   base de datosPrincipios basicos   base de datos
Principios basicos base de datos
 
Breve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLBreve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQL
 
Introducción a CentOS 7
Introducción a CentOS 7Introducción a CentOS 7
Introducción a CentOS 7
 
Normalizacion de Base de datos,
Normalizacion de Base de datos, Normalizacion de Base de datos,
Normalizacion de Base de datos,
 
PHP
PHPPHP
PHP
 
IBM Websphere concepts
IBM Websphere conceptsIBM Websphere concepts
IBM Websphere concepts
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y Fragmentación
 

En vedette (17)

Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guía básica de uso de las rss en español
Guía básica de uso de las rss en españolGuía básica de uso de las rss en español
Guía básica de uso de las rss en español
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Ejercicios3parte
Ejercicios3parteEjercicios3parte
Ejercicios3parte
 
Practica controlconcurrencia
Practica controlconcurrenciaPractica controlconcurrencia
Practica controlconcurrencia
 
Proyecto final de algoritmica
Proyecto final de algoritmicaProyecto final de algoritmica
Proyecto final de algoritmica
 
Practicacandados
PracticacandadosPracticacandados
Practicacandados
 
Base de-datos-cine
Base de-datos-cineBase de-datos-cine
Base de-datos-cine
 
Respaldando bd
Respaldando bdRespaldando bd
Respaldando bd
 
Ejercicio2 mysql
Ejercicio2 mysqlEjercicio2 mysql
Ejercicio2 mysql
 
Scrip de la base de datos cine
Scrip de la base de datos cineScrip de la base de datos cine
Scrip de la base de datos cine
 
Ejercicio 2 transacciones
Ejercicio 2 transaccionesEjercicio 2 transacciones
Ejercicio 2 transacciones
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datos
 
Creación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yogCreación de tablas y relaciones en MySQL y SQL yog
Creación de tablas y relaciones en MySQL y SQL yog
 
8.ejercicios SQL access
8.ejercicios SQL access8.ejercicios SQL access
8.ejercicios SQL access
 
Data mart
Data martData mart
Data mart
 
Enunciados de casos para Bases de Datos
Enunciados de casos para Bases de DatosEnunciados de casos para Bases de Datos
Enunciados de casos para Bases de Datos
 

Similaire à Ejercicio privilegios

Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_oooYuzel Sederap
 
Gestion de datos[1].pdf
Gestion de datos[1].pdfGestion de datos[1].pdf
Gestion de datos[1].pdfMARIAQUIROS19
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_oooYuzel Sederap
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLIvan Luis Jimenez
 
INFOSAN Delphi 453-602
INFOSAN Delphi  453-602INFOSAN Delphi  453-602
INFOSAN Delphi 453-602FRANCIACOCO
 
sentencia Grant y Revoke
sentencia Grant y Revokesentencia Grant y Revoke
sentencia Grant y Revokesuperusuario2
 
P R A C T I C A
P R A C T I C AP R A C T I C A
P R A C T I C ADanica M
 
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Ivan Luis Jimenez
 
Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor Francisco Aguilar Smith
 
Gestión de la cuenta de usuario MySQL.pdf
Gestión de la cuenta de usuario MySQL.pdfGestión de la cuenta de usuario MySQL.pdf
Gestión de la cuenta de usuario MySQL.pdfEDUARDORIOS939044
 
Abf leccion 13
Abf leccion 13Abf leccion 13
Abf leccion 13victdiazm
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLcamposer
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Carmen Soler
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sasRafael Toro
 

Similaire à Ejercicio privilegios (20)

Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
 
Gestion de datos[1].pdf
Gestion de datos[1].pdfGestion de datos[1].pdf
Gestion de datos[1].pdf
 
Seguridad 2° exp_ooo
Seguridad 2° exp_oooSeguridad 2° exp_ooo
Seguridad 2° exp_ooo
 
Conexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQLConexión remota a base de datos con Oracle y MySQL
Conexión remota a base de datos con Oracle y MySQL
 
INFOSAN Delphi 453-602
INFOSAN Delphi  453-602INFOSAN Delphi  453-602
INFOSAN Delphi 453-602
 
sentencia Grant y Revoke
sentencia Grant y Revokesentencia Grant y Revoke
sentencia Grant y Revoke
 
Mysql
MysqlMysql
Mysql
 
P R A C T I C A
P R A C T I C AP R A C T I C A
P R A C T I C A
 
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
 
Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor Acceso a-una-base-de-datos-mediante-un-servidor
Acceso a-una-base-de-datos-mediante-un-servidor
 
guia-6.pdf
guia-6.pdfguia-6.pdf
guia-6.pdf
 
Gestión de la cuenta de usuario MySQL.pdf
Gestión de la cuenta de usuario MySQL.pdfGestión de la cuenta de usuario MySQL.pdf
Gestión de la cuenta de usuario MySQL.pdf
 
Abf leccion 13
Abf leccion 13Abf leccion 13
Abf leccion 13
 
Fundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQLFundamentos de Administración PostgreSQL
Fundamentos de Administración PostgreSQL
 
Abd2
Abd2Abd2
Abd2
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sas
 
Esquemas de seguridad para el servidor
Esquemas de seguridad para el servidorEsquemas de seguridad para el servidor
Esquemas de seguridad para el servidor
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 

Plus de María Luisa Velasco (20)

Sql
SqlSql
Sql
 
Sql
SqlSql
Sql
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Ejercicios normalización
Ejercicios normalizaciónEjercicios normalización
Ejercicios normalización
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Modulos sgbd
Modulos sgbdModulos sgbd
Modulos sgbd
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Induccion fundbd2012
Induccion fundbd2012Induccion fundbd2012
Induccion fundbd2012
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Ejercicios arreglos4
Ejercicios arreglos4Ejercicios arreglos4
Ejercicios arreglos4
 
Ejercicios arreglos2
Ejercicios arreglos2Ejercicios arreglos2
Ejercicios arreglos2
 
Seguridad bd
Seguridad bdSeguridad bd
Seguridad bd
 
Ejercicios2parte
Ejercicios2parteEjercicios2parte
Ejercicios2parte
 
Arreglos
ArreglosArreglos
Arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Ejercicios arreglos
Ejercicios arreglosEjercicios arreglos
Ejercicios arreglos
 
Arreglos
ArreglosArreglos
Arreglos
 

Ejercicio privilegios

  • 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