Mysql Dia5

download Mysql Dia5

of 25

Transcript of Mysql Dia5

  • 8/13/2019 Mysql Dia5

    1/25

    MYSQL DIA5

    Freddy Condori Guevara

  • 8/13/2019 Mysql Dia5

    2/25

    BUSQUEDAS DE PATRONES

    El otro tipo de coincidencia de patrones proporcionadopor MySQL hace uso de expresiones regulares. Para

    hacer uso de estos tipos de patrones se tienen queusar los operadores REGEXP y NOT REGEXP ( oRLIKE y NOT RLIKE, los cules son sinnimos).

    Algunas caractersticas de las expresiones regulares son: El caracter punto ( . ) coincide con cualquier caracter.

  • 8/13/2019 Mysql Dia5

    3/25

    BUSQUEDAS DE PATRONES(2)

    Una clase de caracteres [...] coincide con cualquiercaracter dentro de los parntesis cuadrados. Por

    ejemplo, [abc] coincide con a, b o c. Para nombrar unrango de caracteres, se usa el guin. [a-z] coincidecon cualquier letra minscula, mientras que [0-9]coincide con cualquier digito.

    El caracter asterisco ( * ) coincide con cero o msinstancias de lo que le preceda. Por ejemplo, x*coincide con cualquier nmero de caracteres x, [0-9]*coincide con cualquier nmero de digitos, y .* (puntoasterisco) coincide con cualquier cosa.

  • 8/13/2019 Mysql Dia5

    4/25

    BUSQUEDAS DE PATRONES(3)

    El patrn coincide si ste ocurre en cualquierparte del valor que est siendo evaluado. (Lospatrones SQL coinciden nicamente en losvalores completos.)

    Para indicar el inicio o el final de un valor queest siendo evaluado se usan los caracteres ^y $respectivamente.

  • 8/13/2019 Mysql Dia5

    5/25

    EJEMPLOS DE REGEXP

    Para demostrar como se usan las expresiones

    regulares, se van a mostrar los ejemplospresentados anteriormente con el operadorLIKE, ahora con el operador REGEXP.

    Para encontrar los nombres que inician con C:

    mysql> SELECT * FROM mascotas WHEREnombre REGEXP "^b";

  • 8/13/2019 Mysql Dia5

    6/25

    EJEMPLOS DE REGEXP(2)

    Desde la versin 3.23.4, para forzar que el operadorREGEXP sea sensible al uso de maysculas y

    minsculas, se tiene que usar la palabra claveBINARYpara hacer de una de las cadenas, unacadena binaria. Observar los resultados de lasiguientes consultas.

    mysql> SELECT * FROM mascotas WHERE nombreREGEXP BINARY "^b";

    mysql> SELECT * FROM mascotas WHERE nombreREGEXP BINARY "^B";

  • 8/13/2019 Mysql Dia5

    7/25

    EJEMPLOS DE REGEXP(3)

    Para encontrar los nombres que finalizan con

    la palabra fy, haremos uso del caracter $.mysql> SELECT * FROM mascotas WHEREnombre REGEXP "fy$";

    Para encontrar los nombres que contienen una

    letra s, la consulta sera:mysql> SELECT * FROM mascotas WHEREnombre REGEXP "s";

  • 8/13/2019 Mysql Dia5

    8/25

    GESTION DE CUENTAS EN MYSQL

    Una cuenta en mysql esta definida en trminosde un nombre de usuario y del host o hosts delos cuales puede acceder al servidor. Lacuenta 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.

  • 8/13/2019 Mysql Dia5

    9/25

    CREAR UNA NUEVA CUENTA

    Para crear una nueva cuenta existen dos

    opciones: Usando la sentencia CREATE USER o GRANT

    Manipulando directamente las tablas de permisosusando las sentencias INSERT, UPDATE, DELETE.

    Se recomienda utilizar las sentencias CREATEUSER o GRANT

  • 8/13/2019 Mysql Dia5

    10/25

    CREATE USER

    La sintaxis de create user es la siguiente:

    CREATE USER user [IDENTIFIED BY[PASSWORD] 'password']

    Ejemplo:

    CREATE USER jose

    CREATE USER juanIDENTIFIED BY juan'

  • 8/13/2019 Mysql Dia5

    11/25

    GRANT

    La sintaxis de GRANT es la siguiente:

    GRANTpriv_typeON {tbl_name | * | *.* | db_name.*}

    TO user [IDENTIFIED BY 'password']

    Ejemplo:mysql> GRANT ALL PRIVILEGES ON *.* TO'nuevo'@'localhost IDENTIFIED BY nuevo';

  • 8/13/2019 Mysql Dia5

    12/25

    NIVELES DE GRANT

    NIVEL GLOBAL

    Tiene privilegios aplicados a todas la base de datos,

    este permiso esta almacenado en mysql.user GRANTALL 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.hostGRANT ALL ON db_name.* otorga este permiso.

    NIVEL TABLAS

    Tiene privilegios aplicados a una tabla, este permisoesta almacenado en mysql.tables_priv, GRANT ALLON db_name.table_name otorga este permiso.

  • 8/13/2019 Mysql Dia5

    13/25

    NIVELES DE GRANT(2)

    NIVEL COLUMNA

    Tiene privilegios aplicados a una sola columna de una

    tabla, este permiso esta almacenado enmysql.columns_priv GRANT ALL nombre_columnaON nombre_tabla otorga este permiso.

    NIVEL EJECUCION

    Tiene privilegios sobre los procedimeintos y funcionesalmacenados, este permiso esta almacenado enmysql.procs_priv. Las opciones CREATE ROUTINE,

    ALTER ROUTINE, EXECUTE ROUTINE. Todos estospermiso pueden ser asignado a para cada rutina.

  • 8/13/2019 Mysql Dia5

    14/25

    PRIVILEGIOS DE GRANT

    ALL [PRIVILEGES] pone todos los privilegios exceptoel 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 yalmacenamiento de rutinas.

    CREATE TEMPORARY TABLES permite la creacionde tablas temporales.

  • 8/13/2019 Mysql Dia5

    15/25

    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

    DROPpermite el uso DROP TABLE EVENT permite la creacion de eventos para el

    planificador de eventos.

    EXECUTE permite al usuario ejecutar rutinasalmacenadas

    FILE permite el uso deSELECT ... INTO OUTFILE and

  • 8/13/2019 Mysql Dia5

    16/25

    PRIVILEGIOS DE GRANT (3)

    INDEXpermite el uso CREATE INDEX and DROPINDEX

    INSERTpermite el uso de insert INSERT

    LOCK TABLES permite el uso de LOCK TABLES paralas tablas para las que tengas permiso de SELECT

    SELECT permite el uso de SELECT

    SHOW DATABASES permite mostrar todas las Basesde Datos

    SHOW VIEW permite el uso de SHOW CREATE VIEW

  • 8/13/2019 Mysql Dia5

    17/25

    PRIVILEGIOS DE GRANT (4)

    TRIGGER permite la creacion o eliminacion de

    tablas. UPDATEpermite el uso de UPDATE

    USAGE sinnimo para no privileges

    GRANT OPTION te permite asignar privilegiosa las cuentas.

  • 8/13/2019 Mysql Dia5

    18/25

    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;

  • 8/13/2019 Mysql Dia5

    19/25

    MANIPULANDO LA TABLA DE

    PRIVILEGIOS (2)

    La razon de usar FLUSH PRIVILEGES, es lasiguiente como hemos insertado los datosmanualmente a la tabla, esto solo tendranefecto cuando el servidor se reiniciara. Al usarFLUSH PRIVILEGES esto no es necesario.

    Como se habran dado cuenta modificardirectamente la tabla de privilegios es mascomplicando que usar los comandos CREATEUSER o GRANT.

  • 8/13/2019 Mysql Dia5

    20/25

    ELIMINADO CUENTAS

    Para eliminar las cuentas se puede usar la

    sentencia DROP USER o manipularmanualmente la tabla de permisos.

    Usando la sentencia DROP USER:

    DROP USER juan

    Modificando manualmente la tabla:

    DELETE FROM user WHERE user = juan';

  • 8/13/2019 Mysql Dia5

    21/25

    ASIGNANDO PASSWORD

    La sentencia SET PASSWORD asigna un

    password a una cuenta de usuario. La sintaxises:

    SET PASSWORD [FOR user] = PASSWORD('some password')

    igual que en las anteriores operacin de creary eliminar usuario esta tarea tambien se lopuede realizar manualmente.

  • 8/13/2019 Mysql Dia5

    22/25

    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;

  • 8/13/2019 Mysql Dia5

    23/25

    PRACTICA CON USUARIO

    Creacion de una Base de Datos Parque

    Creacion de una Tabla Juegos que tenga uncodigo y nombre del juego.

    Creacion de una Tabla Atracciones que tengaun juego y nombre de la atraccion.

  • 8/13/2019 Mysql Dia5

    24/25

    PRACTICA CON USUARIO

    Ejercicios:

    Creacion de un usuario (usuario1) que puede acceder

    desde cualquier maquina de la red local a la base dedatos parque, pero que solo tenga permisos parahacer consultas (SELECT) a todas las tablas.

    Creacion de un usuario (usuario2) que pueda hacertodo lo que quiera (SELECT, INSERT, UPDATE,DELETE) solo a la tabla animales desde una maquinaespecifica (ip).

    Creacion de un usuario (usuario3) que solo puedahacer modificaciones y eliminaciones( UPDATE,

    DELETE) solo a la tabla animales solo localmente.

  • 8/13/2019 Mysql Dia5

    25/25

    PRACTICA CON USUARIO

    Creacion de usuario(usuario4) que no tengacontrasea y pueda acceder desde donde seaa la tabla atracciones y solo pueda realizarconsultas (SELECT).

    Creacion de un usuario (usuario5) que pueda

    crear otro usuarios y que solo tenga accesolocal a todas las bases de datos.