Вы находитесь на странице: 1из 25

MYSQL DIA5

Freddy Condori Guevara

BUSQUEDAS DE PATRONES
El otro tipo de coincidencia de patrones proporcionado por MySQL hace uso de expresiones regulares. Para hacer uso de estos tipos de patrones se tienen que usar los operadores REGEXP y NOT REGEXP ( o RLIKE y NOT RLIKE, los cules son sinnimos). Algunas caractersticas de las expresiones regulares son: El caracter punto ( . ) coincide con cualquier caracter.

BUSQUEDAS DE PATRONES(2)

Una clase de caracteres [...] coincide con cualquier caracter dentro de los parntesis cuadrados. Por ejemplo, [abc] coincide con a, b o c. Para nombrar un rango de caracteres, se usa el guin. [a-z] coincide con cualquier letra minscula, mientras que [0-9] coincide con cualquier digito. El caracter asterisco ( * ) coincide con cero o ms instancias de lo que le preceda. Por ejemplo, x* coincide con cualquier nmero de caracteres x, [0-9]* coincide con cualquier nmero de digitos, y .* (punto asterisco) coincide con cualquier cosa.

BUSQUEDAS DE PATRONES(3)

El patrn coincide si ste ocurre en cualquier parte del valor que est siendo evaluado. (Los patrones SQL coinciden nicamente en los valores completos.) Para indicar el inicio o el final de un valor que est siendo evaluado se usan los caracteres ^ y $ respectivamente.

EJEMPLOS DE REGEXP
Para demostrar como se usan las expresiones regulares, se van a mostrar los ejemplos presentados anteriormente con el operador LIKE, ahora con el operador REGEXP. Para encontrar los nombres que inician con C: mysql> SELECT * FROM mascotas WHERE nombre REGEXP "^b";

EJEMPLOS DE REGEXP(2)
Desde la versin 3.23.4, para forzar que el operador REGEXP sea sensible al uso de maysculas y minsculas, se tiene que usar la palabra clave BINARY para hacer de una de las cadenas, una cadena binaria. Observar los resultados de la siguientes consultas. mysql> SELECT * FROM mascotas WHERE nombre REGEXP BINARY "^b"; mysql> SELECT * FROM mascotas WHERE nombre REGEXP BINARY "^B";

EJEMPLOS DE REGEXP(3)
Para encontrar los nombres que finalizan con la palabra fy, haremos uso del caracter $. mysql> SELECT * FROM mascotas WHERE nombre REGEXP "fy$"; Para encontrar los nombres que contienen una letra s, la consulta sera: mysql> SELECT * FROM mascotas WHERE nombre REGEXP "s";

GESTION DE CUENTAS EN MYSQL


Una cuenta en mysql esta definida en trminos de un nombre de usuario y del host o hosts de los cuales puede acceder al servidor. La cuenta tambien cuenta con un password.

Los nombres de usuarios y password de mysql no tienen nada que ver con los nombre de usuarios y password de windows o linux. El nombre de usuario de mysql no puede los 16 caracteres de longitud. Mysql utiliza su propio algoritmo para encriptar los password de las cuentas.

CREAR UNA NUEVA CUENTA


Para crear una nueva cuenta existen dos opciones:

Usando la sentencia CREATE USER o GRANT Manipulando directamente las tablas de permisos usando las sentencias INSERT, UPDATE, DELETE.

Se recomienda utilizar las sentencias CREATE USER o GRANT

CREATE USER
La sintaxis de create user es la siguiente: CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] Ejemplo: CREATE USER jose CREATE USER juan IDENTIFIED BY juan'

GRANT
La sintaxis de GRANT es la siguiente: GRANT priv_type ON {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY 'password'] Ejemplo: mysql> GRANT ALL PRIVILEGES ON *.* TO 'nuevo'@'localhost IDENTIFIED BY nuevo';

NIVELES DE GRANT

NIVEL GLOBAL Tiene privilegios aplicados a todas la base de datos, este permiso esta almacenado en mysql.user GRANT ALL ON *.* otorga este permiso. NIVEL BASE DE DATOS Tiene privilegios aplicados a una base de datos, este permiso esta almacenado en mysql.db y mysql.host GRANT ALL ON db_name.* otorga este permiso. NIVEL TABLAS Tiene privilegios aplicados a una tabla, este permiso esta almacenado en mysql.tables_priv, GRANT ALL ON db_name.table_name otorga este permiso.

NIVELES DE GRANT(2)

NIVEL COLUMNA Tiene privilegios aplicados a una sola columna de una tabla, este permiso esta almacenado en mysql.columns_priv GRANT ALL nombre_columna ON nombre_tabla otorga este permiso. NIVEL EJECUCION Tiene privilegios sobre los procedimeintos y funciones almacenados, este permiso esta almacenado en mysql.procs_priv. Las opciones CREATE ROUTINE, ALTER ROUTINE, EXECUTE ROUTINE. Todos estos permiso pueden ser asignado a para cada rutina.

PRIVILEGIOS DE GRANT

ALL [PRIVILEGES] pone todos los privilegios excepto el privilegio GRANT OPTION. ALTER permite usar el ALTER TABLE. ALTER ROUTINE permite modificar o eliminar las rutinas almacenadas. CREATE permite el uso de CREATE TABLE. CREATE ROUTINE permite la creacion y almacenamiento de rutinas. CREATE TEMPORARY TABLES permite la creacion de tablas temporales.

PRIVILEGIOS DE GRANT (2)

CREATE USER permite el uso de CREATE USER, DROP USER RENAME USER, Y REVOKE ALL PRIVILEGES. CREATE VIEW permite el uso de CREATE VIEW, te permite crear vistas. DELETE permite el uso DELETE DROP permite el uso DROP TABLE EVENT permite la creacion de eventos para el planificador de eventos. EXECUTE permite al usuario ejecutar rutinas almacenadas FILE permite el uso de SELECT ... INTO OUTFILE and

PRIVILEGIOS DE GRANT (3)


INDEX permite el uso CREATE INDEX and DROP INDEX INSERT permite el uso de insert INSERT LOCK TABLES permite el uso de LOCK TABLES para las tablas para las que tengas permiso de SELECT SELECT permite el uso de SELECT SHOW DATABASES permite mostrar todas las Bases de Datos SHOW VIEW permite el uso de SHOW CREATE VIEW

PRIVILEGIOS DE GRANT (4)


TRIGGER permite la creacion o eliminacion de tablas. UPDATE permite el uso de UPDATE USAGE sinnimo para no privileges GRANT OPTION te permite asignar privilegios a las cuentas.

MANIPULANDO LA TABLA DE PRIVILEGIOS


La otra opcion para crear usuario es insertarlo directamente e la tabla de usuarios. (mysql.users) mysql>INSERT INTO user VALUES('localhost', nombre_usuario', PASSWORD(password_usuario'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> FLUSH PRIVILEGES;

MANIPULANDO LA TABLA DE PRIVILEGIOS (2)


La razon de usar FLUSH PRIVILEGES, es la siguiente como hemos insertado los datos manualmente a la tabla, esto solo tendran efecto cuando el servidor se reiniciara. Al usar FLUSH PRIVILEGES esto no es necesario. Como se habran dado cuenta modificar directamente la tabla de privilegios es mas complicando que usar los comandos CREATE USER o GRANT.

ELIMINADO CUENTAS

Para eliminar las cuentas se puede usar la sentencia DROP USER o manipular manualmente la tabla de permisos. Usando la sentencia DROP USER: DROP USER juan Modificando manualmente la tabla: DELETE FROM user WHERE user = juan';

ASIGNANDO PASSWORD
La sentencia SET PASSWORD asigna un password a una cuenta de usuario. La sintaxis es: SET PASSWORD [FOR user] = PASSWORD ('some password') igual que en las anteriores operacin de crear y eliminar usuario esta tarea tambien se lo puede realizar manualmente.

ASIGNANDO PASSWORD(2)
Ejemplo asigancion de password: SET PASSWORD FOR juan'@localhost' = PASSWORD(password'); Lo mismo pero de la forma manual: UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User=juan' AND Host=localhost'; FLUSH PRIVILEGES;

PRACTICA CON USUARIO


Creacion de una Base de Datos Parque Creacion de una Tabla Juegos que tenga un codigo y nombre del juego. Creacion de una Tabla Atracciones que tenga un juego y nombre de la atraccion.

PRACTICA CON USUARIO


Ejercicios: Creacion de un usuario (usuario1) que puede acceder desde cualquier maquina de la red local a la base de datos parque, pero que solo tenga permisos para hacer consultas (SELECT) a todas las tablas. Creacion de un usuario (usuario2) que pueda hacer todo lo que quiera (SELECT, INSERT, UPDATE, DELETE) solo a la tabla animales desde una maquina especifica (ip). Creacion de un usuario (usuario3) que solo pueda hacer modificaciones y eliminaciones( UPDATE, DELETE) solo a la tabla animales solo localmente.

PRACTICA CON USUARIO

Creacion de usuario(usuario4) que no tenga contrasea y pueda acceder desde donde sea a la tabla atracciones y solo pueda realizar consultas (SELECT). Creacion de un usuario (usuario5) que pueda crear otro usuarios y que solo tenga acceso local a todas las bases de datos.

Вам также может понравиться