Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
BASE DE DATOS 3
Fecha:3-3-2017
Julio Roberto Gonzlez 2014-08312
El nuevo usuario no tiene permisos para hacer algo con las bases de datos. Por consecuencia si el
usuario intenta identificarse (con la contrasea establecida), no ser capaz de acceder a la consola
de Mysql.
Por ello, lo primero que debemos hacer es proporcionarle el acceso requerido al usuario con la
informacin que requiere.
Los asteriscos en este comando hacen referencia a la base de datos y la tabla (respectivamente) a
la cual el nuevo usuario tendr acceso; especficamente este comando permite al usuario leer, editar,
ejecutar y realizar todas las tareas en todas las bases de datos y tablas.
Una vez que has finalizado con los permisos que deseas configurar para tus nuevos usuarios, hay
que asegurarse siempre de refrescar todos los privilegios.
FLUSH PRIVILEGES;
Cmo otorgar permisos de usuario diferentes?
Aqu est una pequea lista del resto de los posibles permisos que los usuarios pueden gozar.
ALL PRIVILEGES: como mencionamos previamente esto permite a un usuario de Mysql acceder a
todas las bases de datos asignadas en el sistema.
Si deseas darles acceso a cualquier base de datos o tabla, asegrate de insertar un asterisco (*) en
lugar del nombre de la base de datos o tabla.
Cada vez que tu actualizas o cambias permisos, asegrate de refrescar los privilegios mediante:
FLUSH PRIVILEGES; .
As como puedes borrar bases de datos con DROP, tambin puedes usar el comando DROP para
borrar usuarios:
Para probar el nuevo usuario, debes cerrar sesin escribiendo quit y volviendo a iniciar sesin con
ste comando en la consola:
Cmo hacer copia de seguridad de bases de datos Mysql desde la lnea comandos?
El comando mysqldump se utiliza para crear archivo de texto de bases de datos gestionadas por
Mysql. Estos archivos de texto contienen todos los comandos SQL necesarios para volver a crear la
base de datos a partir de cero.
Si desea una copia de seguridad de una base de datos nica, que slo crea el volcado y enva la
salida a un archivo, usaremos:
Dado que los archivos de volcado son comandos slo SQL, puede restaurar la copia de seguridad de
base de datos al decirle a Mysql que ejecute los comandos en l y poner los datos en la base de
datos adecuada. Para restaurar un volcado de base de datos creada con mysqldump, simplemente
tienes que usar la consola de Mysql de nuevo.
Si usted est tratando de restaurar una nica base de datos de volcado de todas las bases de datos,
usted tiene que dejar Mysql saben cmo esto:
DATE=`date +%Y%m%d`
SQLFILE=all_databases-${DATE}.sql
mysqldump all-databases events user=root password > $SQLFILE gzip
$SQLFILE
En el crontab la lnea
0 5 * * * /home/al/bin/backupsql.sh
Todos los das a las 5 de la maana hago un backup. Debes buscar la hora de menor carga en tu
servidor.
ABS(X)
Retorna el valor absoluto de X.
mysql> SELECT ABS(2);
-> 2
mysql> SELECT ABS(-32);
-> 32
Esta funcin puede usar valores BIGINT.
CEILING(X), CEIL(X)
Retorna el entero ms pequeo no menor a X.
mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEIL(-1.23);
-> -1
Estas dos funciones son sinnimos. Tenga en cuenta que el valor retornado se convierte a BIGINT.
COS(X)
Retorna el coseno de X, donde X se da en radianes.
mysql> SELECT COS(PI());
-> -1
EXP(X)
Retorna el valor de e (la base del logaritmo natural) a la potencia de X.
mysql> SELECT EXP(2);
-> 7.3890560989307
mysql> SELECT EXP(-2);
-> 0.13533528323661
LN(X)
Retorna el logaritmo natural de X, esto es, el logaritmo de X base e.
mysql> SELECT LN(2);
-> 0.69314718055995
mysql> SELECT LN(-2);
-> NULL
Esta funcin es sinnimo a LOG(X).
MOD(N,M) , N % M, N MOD M
Operacin de mdulo. Retorna el resto de N dividido por M.
mysql> SELECT MOD(234, 10);
-> 4
mysql> SELECT 253 % 7;
-> 1
mysql> SELECT MOD(29,9);
-> 2
mysql> SELECT 29 MOD 9;
-> 2
Esta funcin puede usar valores BIGINT.
MOD() tambin funciona con valores con una parte fraccional y retorna el resto exacto tras la divisin:
mysql> SELECT MOD(34.5,3);
-> 1.5
POW(X,Y) , POWER(X,Y)
Retorna el valor de X a la potencia de Y.
mysql> SELECT POW(2,2);
-> 4
mysql> SELECT POW(2,-2);
-> 0.25
SQRT(X)
Retorna la raz cuadrada de un nmero no negativo. X.
mysql> SELECT SQRT(4);
-> 2
mysql> SELECT SQRT(20);
-> 4.4721359549996
mysql> SELECT SQRT(-16);
-> NULL
CURDATE()
Esta funcin devuelve la fecha actual en formato 'YYYY-MM-DD' o 'YYYYMMDD' (Ao-Mes-Da)
mysql> select curdate(); --> 2007-01-03
CURTIME()
Devuelve la hora actual en formato 'HH:MM:SS' o 'HHMMSS'.
mysql> select curtime(); --> 17:33:07
DATEDIFF(expression1,expression2)
expression1 y expression2 son expresiones fecha o fecha-y-hora. Esta funcin devuelve expression1
expression2 expresados como un valor en das de una fecha a la otra. Aqu slo las partes de fecha
sern consideradas para el clculo.
mysql> select datediff('2007-2-6 17:33:25','2007-1-1'); --> 36
Esta funcin es la misma para DATE_SUB, pero tomar lugar substrayndola en vez de aadindola.
DAYNAME(fecha)
Devuelve el nombre del da para una fecha especificada.
mysql> select dayname('2007-01-04'); --> Thursday
DAYOFMONTH(fecha) or DAY(fecha)
Devuelve la fecha para el da del mes en el rango de 1 a 31. DAY () es un sinnimo para
DAYOFMONTH().
mysql> select dayofmonth('2007-01-04'); --> 4
DAYOFWEEK(fecha)
Devuelve el da de la semana en formato numrico como 1 para Domingo hasta 7 para Sbado.
mysql> select dayofweek('2007-01-04'); --> 5
DAYOFYEAR(fecha)
Devuelve el da del ao para la fecha dada en formato numrico, en rago de 1 a 366.
mysql> select dayofyear('2007-07-09'); --> 190
HOUR(hora)
Devuelve la hora del tiempo especificado en formato numrico de 0 a 23.
mysql> select hour('14:46:12'); --> 14
MONTH(fecha)
Devuelve el mes para la fecha dada en formato numrico en rango de 0 a 12.
mysql> select month('2007-07-09'); --> 7
MONTHNAME(fecha)
Devuelve el nombre del mes para la fecha especificada.
mysql> select monthname('2007-07-09'); --> July
NOW()
Esta funcin de fecha devuelve la fecha y hora actual en formato 'YYYY-MM-DD HH:MM:SS' o
YYYYMMDDHHMMSS (Ao-Mes-Da Hora:Minuto:Segundo)
mysql> select now(); --> 2007-01-04 14:56:15
Las funciones en esta seccin encriptan y desencriptan valores. Si quiere almacenar resultados de
una funcin de encriptacin que puede contener valores arbitrarios de bytes, use una
columna BLOB en lugar de CHAR o VARCHAR para evitar problemas potenciales con eliminacin de
espacios finales que pueden cambiar los valores de datos.
PASSWORD(str)
Calcula y retorna una cadena de contrasea de la contrasea en texto plano str, o NULL si el
argumento era NULL. Esta es la funcin que se usa para encriptar contraseas MySQL para
almacenar en la columna Password de la tabla user .
Nota: La funcin PASSWORD() se usa por el sistema de autenticacin en MySQL Server; no debe
usarlo en su propias aplicaciones. Para ese propsito, use MD5() o SHA1() en su lugar.
SHA1(str), SHA(str)
Calcula una checksum SHA1 de 160-bit para la cadena, como se describe en RFC 3174 (Secure
Hash Algorithm). El valor se retorna como cadnea de 40 dtigos hexadecimales, o NULL si el
argumento era NULL. Uno de los usos posibles para esta funcin es una clave hash. Tambin puede
usarlo como funcin criptogrficamente segura para almacenar contraseas:
AES_ENCRYPT(str,key_str) , AES_DECRYPT(crypt_str,key_str)
Estas funciones permiten encriptacin y desencriptacin de datos usando el algoritmo oficial AES
(Advanced Encryption Standard), conocido anteriormente como "Rijndael." Se usa una encriptacin
con una clave de 128-bit , pero puede ampliarlo hasta 256 bits modificando las fuentes. Elegimos 128
porque es mucho ms rpido y de momento es suficientemente seguro.
Los argumentos de entrada pueden ser de cualquier longitud. Si algn argumento es NULL, el
resultado de esta funcin tambin es NULL.
Si AES_DECRYPT() detecta datos invlidos o relleno incorrecto, retorna NULL. Sin embargo, es
posible para AES_DECRYPT() retornar un valor no NULL (posiblemente basura) si los datos de
entrada o la clave son invlidos.
Puede usar la funcin AES para almacenar datos de forma encriptada modificando sus consultas:
DBlinks
El concepto central en los sistemas de base de datos distribuidos es un enlace de base de datos . Un
vnculo de base de datos es una conexin entre dos servidores de bases de datos fsicos que permite
a un cliente acceder a ellos como una base de datos lgica.
DataBase Link (DBLink) en oracle es un tipo de objeto que nos permite conectarnos o realizar
conexiones a una base de datos desde otra. La principal funcionalidad de este tipo de objeto es que,
podamos conectarnos a una instancia de DB ocultando el detalle de los datos de conexin, esto sin
importar si la instancia este en el mismo servidor o no.
Un enlace de base de datos es un puntero que define una ruta de comunicacin unidireccional desde
un servidor de base de datos Oracle a otro servidor de base de datos. El puntero de enlace se define
realmente como una entrada en una tabla de diccionario de datos. Para acceder al enlace, debe estar
conectado a la base de datos local que contiene la entrada del diccionario de datos.
Una conexin de enlace de base de datos es unidireccional en el sentido de que un cliente conectado
a una base de datos local A puede usar un enlace almacenado en la base de datos A para acceder
a informacin en la base de datos remota B, pero los usuarios conectados a la base de datos B no
pueden usar el mismo enlace para acceder a datos en Base de datos A. Si los usuarios locales de la
base de datos B quieren acceder a los datos de la base de datos A, deben definir un enlace que se
almacena en el diccionario de datos de la base de datos B.
Una conexin de enlace de base de datos permite a los usuarios locales acceder a los datos de una
base de datos remota. Para que se produzca esta conexin, cada base de datos del sistema
distribuido debe tener un nombre de base de datos global nico en el dominio de red. El nombre
de base de datos global identifica de forma nica un servidor de base de datos en un sistema
distribuido.
Los enlaces de base de datos son privados o pblicos. Si son privados, slo el usuario que cre el
enlace tiene acceso; Si son pblicos, todos los usuarios de bases de datos tienen acceso.
Una diferencia principal entre los enlaces de base de datos es la forma en que se producen las
conexiones a una base de datos remota. Los usuarios acceden a una base de datos remota a travs
de los siguientes tipos de enlaces:
Cree vnculos de base de datos utilizando la instruccin CREATE DATABASE LINK . La tabla
proporciona ejemplos de instrucciones SQL que crean vnculos de base de datos en una base de
datos local a la base de datos remota sales.us.americas.acme_auto.com :
Vistas Materializadas
Vista: Una vista es una consulta almacenada que representa un conjunto de tablas
(posiblemente de diferentes esquemas) a la que le vamos a poner un nombre y vamos a tratarla
como si fuese una tabla ms de nuestro esquema, pero sin llegar a ser realmente una tabla. Algo
que tiene que quedar claro es que una vista NO guarda datos, sino que solo almacena la consulta
que nos va a ayudar a acceder a los datos.
Una vez definida una vista materializada uno de los problemas que nos encontramos es el de
la actualizacin de los datos. Como se ha comentado antes, estas vistas contienen fsicamente los
datos de las tablas base, por lo que si cambian los datos de estas tablas no se reflejarn en la vista
materializada. Para ello necesitamos establecer un mecanismo de refresco automtico en el que
tendremos que definir el tipo y la forma de refresco.
La sentencia SQL que nos permite definir una vista materializada es esta:
Con la opcin INMEDIATE (opcin por defecto) se cargarn los datos justo despus de crear la vista.
Con la opcin DEFERRED se definir la vista cuando se ejecute la sentencia SQL sin cargar ningn
dato, que se cargarn cuando se realice el primer refresco de la vista.
La palabra QUERY REWRITE establece si queremos que el optimizador de nuestra base de datos
pueda reescribir las consultas. El optimizador, sabiendo que ya existe una determinada vista
materializada, puede modificar internamente nuestra consulta sobre una determinada tabla, de tal
forma que se mejore el rendimiento de la consulta devolviendo los mismos datos que la consulta
original.
Refresco
Como es entendible la poltica de refresco de cada vista depende altamente de nuestras necesidades
y requerimientos sobre la frecuencia de actualizacin de los datos de las tablas base.
FAST: podemos decir que este tipo de refresco es una actualizacin incremental, es decir, solo
se refrescarn aquellos datos que se hayan modificado desde el ltimo refresco. Evidentemente
este tipo de refresco es mucho ms fast que el complete. Pero, cmo sabe la base de datos
que datos se han modificado desde el ltimo refresco? lo sabe gracias a que previamente hemos
tenido que crear unos determinados log de la vista (VIEW LOG) sobre cada una de las tablas
base de la vista materializada.
Formas de refresco
Refresco manual: mediante el paquete de PL/SQL DBMS_MVIEW podemos forzar a realizar un
refresco usando para ello la funcin REFRESH.
DBMS_MVIEW.REFRESH('nombre_vista');
DBMS_MVIEW.REFRESH_DEPENDENT('tabla1,tabla2, tabla3,...,tablaN');