Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Para agregar un nuevo usuario , es tan simple como ejecutar la siguiente sentencia:
CREATE USER nombre_de_usuario IDENTIFIED BY 'clave sin encriptar';
Por ejemplo, para agregar al usuario juanperez con la clave 123456, se utilizara:
CREATE USER juanperez IDENTIFIED BY '123456';
Una muy buena prctica es limitar la conexin de los usuarios por host, para prevenir conexiones
desde hosts no deseados:
Por ejemplo, para crear al usuario Sandra y solo permitir su conexin local, la sentencia sera la
siguiente:
CREATE USER sandra@'localhost' IDENTIFIED BY '123456';
OTORGAR PERMISOS
Para otorgar permisos en MySQL, se deben considerar:
Permiso: El tipo de consultas que se permitir efectuar al usuario (SELECT, INSERT, DELETE,
UPDATE);
Database: Las bases de datos y/o tablas sobre las cules aplicarn dichos permisos;
Usuario: El o los usuarios a los cules sern otorgados los permisos aplicados.
La configuracin de permisos se realizar con la siguiente sentencia:
GRANT permiso ON database TO usuario;
Por ejemplo, para otorgar permisos de seleccin sobre la tabla categora de la base de datos
weblibros al usuario juanperez, se ejecutar:
GRANT SELECT ON weblibros.categoria TO juanperez;
Ejercicio:
MOTORES DE ALMACENAMIENTO
DIFERENCIAS
Las comparativas entre motores se suelen hacer basndose en cuatro funcionalidades clave:
Tipos de datos: aunque la mayora son comunes hay algunos especficos que pueden ser
decisivos bajo determinadas circunstancias.
Bloqueo de datos: la forma en la que el motor protege un dato que est siendo modificado para
evitar problemas de acceso concurrente a los datos y mantener la integridad referencial.
Indexado: las diferentes tcnicas de indexado pueden influir drsticamente es el rendimiento de
una base de datos.
Transacciones: dota de fiabilidad a los datos mientras se realizan operaciones, te permite utilizar
los datos pero slo te permite guardarlos cuando se comprueba que las otras condiciones que
pudiesen requerirse se han cumplido.
Y tenemos que hablar tambin de... ACID2 Se denomina ACID a la propiedad de una base de
datos para realizar transacciones seguras. As pues ACID compliant define a un sistema de
gestin de bases de datos que puede realizar transacciones seguras. En concreto ACID es un
acrnimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia,
Aislamiento y Durabilidad en espaol.
Atomicidad: es la propiedad que asegura que la operacin se ha realizado o no, y por lo tanto
ante un fallo del sistema no puede quedar a medias. Si una operacin consiste en una serie de
pasos, u ocurren todos o ninguno
Consistencia: es la propiedad que asegura que slo se empieza aquello que se puede acabar. Por
lo tanto se ejecutan aquellas operaciones que no van a romper la reglas y directrices de
integridad de la base de datos.
Aislamiento: es la propiedad que asegura que una operacin no puede afectar a otras. Esto
asegura que la realizacin de dos transacciones sobre la misma informacin nunca generar
ningn tipo de error.
Durabilidad: es la propiedad que asegura que una vez realizada la operacin, sta persistir y no
se podr deshacer aunque falle el sistema.
COMPARACIONES
Si necesitamos
escoger InnoDB.
transacciones,
claves
forneas
bloqueos,
tendremos
que
En aquellos casos en los que predominen las consultas SELECT a la base de datos
escogeremos MyISAM
OTRAS COMPARACIONES
nnoDB
Soporte de transacciones
Bloqueo de registros
Nos permite tener las caractersticas ACID (Atomicity, Consistency, Isolation and Durability:
Atomicidad, Consistencia, Aislamiento y Durabilidad en espaol), garantizando la integridad
de nuestras tablas.
Es probable que si nuestra aplicacin hace un uso elevado de INSERT y UPDATE notemos un
aumento de rendimiento con respecto a MyISAM.
MyISAM
Mayor velocidad en general a la hora de recuperar datos.
Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT
/ UPDATE.
Cmo saber que motores estn disponibles? Es muy sencillo, basta con escribir en una consola
MySQL la siguiente consulta: show engines;
Y obtendremos algo como esto:
mysqldump
> clientes.sql
Todas las bases de datos del host 192.168.0.100 y agregamos los procedemientos
almacenados que sean respaldados tambin.
mysqldump -h 192.168.1.100 -u root -p --routines --all-databases
respaldo_ventas_2011.sql
>
Restaurando el respaldo
Hay varias maneras de lograr la restauracin del respaldo. Con el comando mysql:
mysql -u root -p < respaldo.sql
TRANSACCIONES
Vamos a ejecutar algunas consultas para ver como trabajan las transacciones. Lo primero que tenemos que hacer
es crear una tabla del tipo InnoDB e insertar algunos datos.
Para crear una tabla InnoDB, procedemos con el cdigo SQL estndar CREATE TABLE, pero debemos especificar
que se trata de una tabla del tipo InnoDB (TYPE= InnoDB). Esto es aplicable a cualquier tipo de tabla, pero cuando
no se especifica nada, MySQL supone que se trata de una tabla MyISAM.
1|
2|
3|
mysql> ROLLBACK
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT * FROM empleado;
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO empleado VALUES(1);
mysql> INSERT INTO empleado VALUES(2);
mysql> INSERT INTO innotest VALUES(3);
mysql> SELECT * FROM empleado;
+-------+
| campo |
+-------+
|
1|
2|
3|
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)
mysql> ROLLBACK
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT * FROM empleado;
+-------+
| campo |
+-------+
|
1|
2|
3|
VISTAS
Pero primero, debemos entender que son las vistas en mysql y para que podemos utilizarlas. Una vista en mysql
es una tabla virtual con una estructura que nosotros definimos pero sin datos.
En que nos pueden ayudar las vistas?. Las respuestas son varias, y seguro que hay muchas que desconozco,
pero las que entiendo de forma directa son las siguientes:
Se almacenan en el servidor con lo que el consumo de recursos y eficacia siempre sern ms ptimos.
En temas de seguridad siempre es mejor utilizar vistas en lugar de permitir a nadie acceder directamente a
los datos, nosotros mostramos al resto de desarrolladores los datos que queremos.
Podemos llamarlas de forma sencilla en una consulta y utilizar clausulas contra las mismas, ahora veremos
unos ejemplos.
Pueden haber desarrolladores con poca experiencia y con dificultades por hacer complejas consultas,
podemos darles la opcin de simplemente llamar a una vista para as obtener los datos.
Una vista es un camino simple para guardar complejas consultas de seleccin en nuestra base de
datos.
Una diferencia entre vistas y procedimientos almacenados es que las primeras no aceptan parmetros,
no siendo as con los procedimientos almacenados, que si los aceptan.
Un procedimiento almacenado suele utilizarse cuando no es suficiente una simple consulta sql. Los
procedimientos almacenados contienen variables, bucles y llamadas a otros procedimientos almacenados.
Lo primero que podemos hacer es crear una base de datos llamada vistas y las siguientes tablas con los siguientes
datos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
Esta consulta es simple y no debe dar problemas a ningn desarrollador/programador web, pero puede darse el
caso de que la consulta sea mucho ms compleja y entonces no todos deban saber como llevarla a cabo, para
evitar stos y otros casos vamos a utilizar vistas, as que creemos la siguiente.
1
2
3
4
5
6
CREATE VIEW
usuarios_comentarios AS
SELECT usuarios.id,nombre, rango, titulo, comentario
FROM usuarios
INNER JOIN comentarios
ON usuarios.id = comentarios.usuario_id;
Me imagino que estar claro, pero por si acaso, el concepto de vista es global a nuestra base de datos, no es
contra una tabla de forma directa como si lo son los triggers.
De esta forma tan simple, hemos creado en nuestra base de datos una tabla virtual llamada usuarios_comentarios
la cul est formada por una consulta que obtiene datos de las tablas usuarios y comentarios, as de simple.
Por si existe la duda, nuestra tabla virtual utilizar como ndices los que existan en las tablas que ha utilizado, es
decir, en nuestra tabla usuarios el campo id y en la tabla comentarios tanto el campo id como el campo usuario_id.
Ahora, para utilizar nuestra vista es sencillo, simplemente podemos hacer lo siguiente.
Y obtendremos lo siguiente.
Pero lo mejor de utilizar vistas, a parte de poder llamarlas de forma tan sencilla, es que tambin podemos utilizar
ORDER BY, LIMIT y WHERE, por ejemplo como sigue.
DISPARADORES O TRIGGERS
| Tables_in_prueba |
+------------------+
| copia
| empleado
| empleadop
|
|
|
+------------------+
3 rows in set (0.00 sec)
| usuario
| valor |
+------------+----------------+-------+
| 2016-04-15 | root@localhost |
+------------+----------------+-------+
1 row in set (0.00 sec)
mysql>
0|
Crear 3 usuarios, a los que solo se les permita conectarse de forma local:
Otorgar permisos de seleccin y actualizacin, a todos los usuarios recin creados, para todas las tablas de la
base de datos prueba:
Crear una base de datos tipo InnoDB y otra de tipo MYSAM
Hacer una copia de la base de datos
Hacer una copia de solo una tabla
Restaurar una tabla de la base de datos
Cear una transaccin usando Commit y otra usando rollback en la tabla empleado
Crear una vista que muestre una consula de seleccin a una tabla cualquiera
Hacer un disparador que haga copia de los datos de una tabla cualquiera