introduccion mysql

14
Introducción a MySQL En este artículo se tratan diversos temas que tienen que ver con el funcionamiento básico del servidor MySQL Fecha de creación: 29 May del 2003 - 12:39 pm www.mysql-hispano.org Introducción a MySQL

Upload: leonel-gonzalez-vidales

Post on 11-Oct-2015

5 views

Category:

Documents


0 download

TRANSCRIPT

  • Introduccin a MySQLEn este artculo se tratan diversos temas que tienen que ver con el

    funcionamiento bsico del servidor MySQL

    Fecha de creacin: 29 May del 2003 - 12:39 pmwww.mysql-hispano.org

    Introduccin a MySQL

  • Este artculo es el primero de toda una serie que ofrecer MySQL AB con el fin de proporcionar al lectorinformacin valiosa sobre el servidor de bases de datos MySQL. Aunque en artculos futuros se tratarntemas ms avanzados tales como replicacin, ODBC y optimizacin, se pens que era prudente si elprimer tutorial comenzaba por los conceptos bsicos. Por lo tanto, el objetivo de este artculo esinformar al lector sobre varios temas relacionados con el funcionamiento bsico de MySQL. Unasinopsis de los temas que sern cubiertos se muestra a continuacin en la Tabla de contenidos.

    Las suposiciones

    En este punto, se asume que el lector ha instalado exitosamente el servidor de bases de datos MySQL.Si un no se ha instalado MySQL, por favor tomarse un poco de tiempo para revisar la informacinproporcionada en la seccin de instalacin de la documentacin de MySQL. Se asume tambin que labase de datos de Mysql ha sido creada (usando mysql_install_db), y que el servidor MySQL ha sidoinicializado usando safe_mysqld. Si esto no ha sido realizado, tomarse un momento para leer la Seccin4.16, "Post-Instalacin, configuracin y pruebas" de la documentacin de MySQL.

    Se asume tambin que el lector tiene una comprensin bsica de la sintaxis de SQL (el LenguajeEstructurado de Consulta). Para los lectores nuevos en el mundo de SQL, las ligas siguientes hacenreferencia a documentos particularmente tiles para conocer SQL:

    Curso de SQL

    Manual de SQL

    Tutorial de SQL

    Tabla de contenidos

    Bien, he instalado MySQL. Ahora Qu?

    El archivo de configuracin de MySQL: my.cnf

    Las tablas de privilegios de MySQL

    Conectndose al servidor MySQL por primera vez

    Salir y conectarse de nuevo al monitor de MySQL

    Cuidado con esa contrasea!

    Seleccionando una base de datos

    mysqladmin

    Asegurando una base de datos

    1 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • El comando GRANT

    El comando REVOKE

    Respaldos de bases de datos

    mysqldump

    mysqlhotcopy

    Conclusiones

    Notas importantes

    * Este documento est basado en el artculo original en ingls An Introduction to MySQL, de W. J.Gilmore, ms no es una traduccin literal del mismo.

    * En algunos casos se omiti la traduccin de palabras como "host", "root", "shell", ya que se pens quetienen un mayor significado si se leen en ingls.

    * El artculo lleva una estructura secuencial de los temas, por lo que se recomienda que se lea de estaforma para una mayor comprensin.

    Bien, he instalado MySQL. Ahora Qu?

    El propsito de este tutorial es informar a los nuevos usuarios de MySQL sobre varios aspectos clave deeste maravilloso servidor de bases de datos. Se introducirn conceptos que van desde la funcionalidadgeneral del servidor, la seguridad, la administracin de usuarios y privilegios, el trabajo con bases dedatos y tablas, y los respaldos de las bases de datos. Mientras que el lector probablemente encuentremucho de este material fcil de entender, hay que tener presente que estos conceptos son una partefundamental para trabajar eficiente y apropiadamente con el servidor MySQL, adems de queresultarn muy tiles para entender aspectos ms avanzados que se discutirn en los posterioresartculos. Por lo tanto se sugiere al lector que se tome el tiempo no slo para leer el tutorial, sino tambinpara seguir los pasos descritos en los ejemplos para experimentar con su propia instalacin de MySQL.

    El archivo de configuracin de MySQL: my.cnf

    Es muy probable que la primera tarea que un administrador querr emprender es la configuracinapropiada del archivo de configuracin de MySQL. Este archivo, denominado my.cnf, contiene informacinsobre las opciones de inicio tanto para el servidor, como para los clientes. La configuracin de estearchivo influye de alguna manera para manejar la optimizacin de MySQL, la adecuacin de variosbffers de memoria y algunas otras opciones igualmente importantes.

    Resulta muy interesante que el alcance de este archivo se pueda fijar de acuerdo a su ubicacin. Lasopciones se considerarn globales para todos los servidores MySQL si el archivo my.cnf est en eldirectorio /etc. Sern globales para un servidor en especfico si el archivo se localiza en el directorio enel cual se almacenan las bases de datos (seguramente /usr/local/mysql/data o /var/lib/mysql).

    2 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Finalmente, su alcance puede ser limitado para un usuario en especfico si el archivo se localiza en eldirectorio del usuario (~/.my.cnf). Se debe tener presente que aunque MySQL localice un archivo my.cnfen el directorio /etc/ (global para todos los servidores MySQL en una mquina), se continuar labsqueda para un archivo especfico de servidor, y entonces un archivo especfico de usuario. Se puedepensar en las opciones de configuracin finales como el resultado de evaluar los archivos /etc/my.cnf,mysql-data-dir/my.cnf, y ~/.my.cnf .

    Con el propsito de ayudar a los administradores en la apropiada configuracin de este archivo, losdesarrolladores de MySQL han incluido cuatro archivos de configuracin de ejemplo junto con ladistribucin. Sus nombres son my-huge-cnf.sh, my-large.cnf.sh, my-medium.cnf.sh, y my-small.cnf.sh, yen cada uno de ellos se incluyen opciones de configuracin de acuerdo con la disponibilidad de recursoscon que se cuente.

    Lecturas adicionales en la documentacin de MySQL (en ingls):4.16.5 Option files

    Las tablas de privilegios de MySQL

    Antes de entrar en detalle con los ejemplos que consitituyen este tutorial, se har una breveintroduccin de uno de los aspectos ms importantes (y muchas veces mal entendido!) del servidor deMySQL; el mecanismo mediante el cul MySQL asegura sus datos y la integridad: las tablas deprivilegios de MySQL. Las tablas de privilegios de MySQL son responsables de la autenticacin deusuarios cuando accesan al servidor MySQL, y la subsecuente asociacin de un conjunto de privilegiosuna vez que han conseguido acceso al servidor. Este conjunto de privilegios determina lo que unusuario es capaz de hacer mientras est conectado al servidorMySQL, controlando las actividades delusuario en todo el servidor, en una base de datos, en una tabla o incluso en una columna de una tabla.

    Por ejemplo, un administrador podra otorgar privilegios a un usuario para conectarse a una base dedatos especfica de MySQL, y denegarle el acceso a todas las dems bases de datos. Adems, a esemismo usuario pueden otorgarse slo ciertos privilegios mientras est conectado a esa base de datos,por ejemplo, la seleccin, la insercin, y la actualizacin. Asociado con slo estos tres privilegios, a esteusuario le sera negado cualquier intento de borrar los datos, puesto que a este usuario no ha sidootorgado el privilegio de eliminar datos.

    Aunque una introduccin ms a fondo de las tablas de privilegios est fuera del alcance de esteartculo, es importante que el lector entienda el papel tan importante que juegan estas tablas al asegurarun servidor MySQL. Al trabajar en los ejemplos a travs del resto de este artculo, se debe tenerpresente que las tablas de privilegios influyen en cada consulta y comando que se ejecuta,asegurndose que el usuario que ejecuta dichos comandos o consultas tiene los permisos apropiadospara hacerlo. Tambin es bastante recomendado que el lector se tome algn tiempo para revisar lasligas mostradas a continuacin, ya que cada uno de ellos describe en mayor detalle los mecanismosfundamentales de estas tablas.

    Lecturas adicionales en la documentacin de MySQL (en ingls):6.9 How the Privilege System Works6.2 How to Make MySQL Secure Against Crackers6.14 Adding New User Privileges to MySQL

    3 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Conectndose a MySQL por primera vez

    El programa cliente de MySQL, tambin conocido como el monitor de MySQL, es una interfase que lepermite a un usuario conectarse a un servidor MySQL, crear y modificar bases de datos, y ejecutarconsultas y ver los resultados. Este programa es iniciado ejecutando el comando mysql en el promptdel sistema. En general, la sintaxis de este comando es:

    shell> mysql [opciones] [base de datos]

    En donde [opciones] pueden ser una o ms opciones usadas en conjuncin con el programa mysql, y[base de datos] es el nombre de la base de datos sobre la que se va a trabajar. Puesto que se asumeque es la primera vez que se usa el monitor MySQL, debe tomarse un momento para revisar todas lasopciones permitidas al ejecutar el siguiente comando:

    shell> mysql --help

    ste produce una larga lista de opciones que se pueden usar en conjuncin con el programa mysql. Por elmomento, sin embargo, la meta principal es simplemente conectarse al servidor de bases de datos. Porlo tanto, hay que ejecutar el siguiente comando:shell> mysql -u root

    Deber de aparecer algo como los siguiente:

    Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 8 to server version: 3.23.28-gamma-log

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer

    mysql>

    Felicidades, ahora se encuentra conectado al monitor de MySQL como el usuario root (eltodopoderoso). La primera accin oficial como el lder supremo del servidor de bases de datos MySQL esasegurarse que nadie ms pueda declararse en esta posicin, haciendo esto posible cuando alguinquiera conectarse como root al servidor deba de proporcionar una contrasea. Hay que cambiar lacontrasea de su valor actual (un valor nulo), a algo difcil de adivinar usando el siguiente comando:

    mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('la_palabra_secreta');

    El "root", que es el nombre de usuario, y "localhost", que es el nombre del host, constituyen un usuarionico en MySQL. Para aquellos lectores no familiarizado con la terminologa de redes, 'localhost' es unnombre usado para referirse al servidor local; en este caso, el servidor sobre el cul reside MySQL.Por lo tanto, al escribir 'root'@'localhost', este comando le dice al servidor MySQL que ponga lacontrasea para un usuario denominado 'root' que se conectar especficamente del servidor local('localhost').

    4 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Ms especficamente, este comando cambiar la contrasea actualizando lo que se conocecomnmente como la tabla de privilegios de MySQL. Estas tablas, que se encuentran en la base dedatos llamada mysql, contienen informacin con respecto a las capacidades de conexin y uso de todoslos usuarios que intentan usar el servidor de base de datos MySQL. Ms especficamente, estecomando actualiza la tabla user, actualizando el campo password de la fila en la cual el valor de campouser es root. El campo password se actualizar con el valor encriptado de la cadena que se pasa comoparmetro a la funcin PASSWORD().Por supuesto, no olvidar esta contrasea. Puesto que sta es almacena en un texto encriptado dentrode la base de datos, no puede ser recuperada fcilmente en el caso de que sea olvidada.

    Hay tambin un mtodo alternativo para actualizar la contrasea:

    shell> mysqladmin -u root password 'la_palabra_secreta'

    Este comando tiene el mismo efecto que el comando introducido previamente.

    Salir y conectarse de nuevo al monitor MySQL

    Para verificar que la nueva contrasea funciona, salir del monitor MySQL usando el siguiente comando:

    mysql> \q

    Esto nos regresa al shell del sistema. Ahora hay que volver al monitor, pero esta vez usando elsiguiente comando:

    shell> mysql -u root -p

    El hacer esto resulta en un prompt para proporcionar la contrasea del usuario root, como se muestraa continuacin:

    Enter password:

    En este punto, debe de suministrarse la contrasea que se asign al usuario root previamente.Asumiendo que sta ha sido proporcionada correctamente, aparecer el saludo estndar de MySQL,y root ser conectado al servidor MySQL una vez ms.

    Cuidado con esa contrasea!

    Muchos lectores pueden estar tentados a incluir la contrasea en la misma lnea de comandos, comosigue:

    shell> mysql -u root -pla_palabra_secreta

    5 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • No hacer esto!. No slo es un mtodo sumamente inseguro para proporcionar la contrasea, sino queno producir los resultados esperados!. Es inseguro porque permitir a cualquier persona observar lacontrasea en este formato de texto plano, pero tambin porque cualquier usuario puede usar elcomando 'ps' de Unix para ver los comandos que se estn ejecutando y ver all la contrasea en suformato de texto plano.

    Quizs sea una buena idea almacenar la contrasea en nuestro archivo de configuracin my.cnf,localizado en~/.my.cnf . Si usted no sabe lo que es este archivo, lea por favor la seccin previa titulada Elarchivo de configuracin de MySQL.

    Seleccionado una base de datos

    Por supuesto, simplemente conectarse al servidor MySQL no servir de mucho. Seguramente sequerr seleccionar una base de datos para trabajar sobre con ella. Esto se puede hacer de dosmaneras:

    Una de ellas es incluir el nombre de la base de datos al ejecutar el comando mysql. Por ejemplo, paraconectarse al servidor MySQL y seleccionar al mismo tiempo la base de datos es:

    shell> mysql -u root -p mibasededatos

    Tal vez cause algo de confusin en algunos lectores, ya que parece que se proporciona la palabra"mibasededatos" como la contrasea del usuario root. Esto no es correcto. Hay que tomarse unmomento para revisar la sintaxis que se describe en la salida del comando mysql --help, puesto quedebe de ser evidente que "-u root -p" se refiere a la parte de [opciones] y "mibasededatos" a la parte de[base de datos].

    La otra manera de seleccionar una base de datos, es cuando uno ya est conectado al servidorMySQL. Para ello se debe usar el siguiente comando:

    mysql> use mibasededatos

    Una vez ejecutado cualquiera de los dos comandos, todas las consultas se dirigirn hacia la base dedatos hipottica mibasededatos.

    mysqladmin

    El programa mysqladmin se usa para administrar varios aspectos del servidor de bases de datosMySQL. Al usarlo, el administrador puede realizar las tareas tales como: crear y eliminar bases dedatos, dar de baja el servidor MySQL, actualizar las tablas de privilegios, y ver los procesos que seestn corriendo (ejecutando) dentro de MySQL. La sintaxis general es:

    shell> mysqladmin [opciones] comando(s)

    6 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Dnde [opciones] puede ser toda una serie de opciones usadas en conjuncin con el programamysqladmin. Puesto que se asume que es la primera vez que se usa el programa mysqladmin, serecomienda que se revisen con detalle todas las opciones que se tienen permitidas con este programa.Usar el siguiente comando:

    shell> mysqladmin --help

    Esto produce una larga lista de las opciones que se pueden usar en conjuncin con el programa demysqladmin. Para demostrar como son usadas estas opciones, a continuacin vamos a decirle amysqladmin que necesitamos crear una base de datos llamada widgets, la cul ser usada a travsdel resto de este artculo para ver otras funciones tiles de MySQL.

    Una base de datos se crea como sigue:

    shell> mysqladmin -u root -p create widgetsEnter Password:

    Despus de la ejecucin, mysqladmin crear la base de datos y regresar el shell del sistema.Tpicamente, el siguiente paso consiste en asegurar la nueva base de datos modificando las tablas deprivilegios. Los detalles de como se hace esto es el objetivo de la siguiente seccin.Lecturas adicionales en la documentacin de MySQL (en ingls):14.5 Administering a MySQL Server

    Asegurando una base de datos

    La seguridad debe ser lo primero que debe venir a la mente de un administrador de MySQL despusde crear una base de datos. Como se discuti en la seccin "Las tablas de privilegios", asegurar una basede datos consiste en hacer modificaciones a las tablas que se encuentran en la base de datos llamadamysql. En esta seccin, el lector aprender a asegurar la base de datos widgets que se creanteriormente. Antes de hacer esto, se va a realizar un breve resumen de cmo son modificadas lastablas de privilegios.

    Hay dos mtodos usados para modificar las tablas de privilegios. El primero es a travs del uso de lassentencias tpicas de SQL tales como INSERT, UPDATE, y DELETE. Sin embargo el uso de estemtodo ha sido depreciado para introducir el segundo mtodo, el cual involucra el uso de loscomandos especiales GRANT yREVOKE. Por lo tanto, slo este mtodo se discutir a continuacin.

    El comando GRANT

    La funcin del comando GRANT es crear nuevos usuarios, y asignarle sus privilegios. Su sintaxis es:

    GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]ON {tbl_name | * | *.* | db_name.*}TO user_name [IDENTIFIED BY 'password'][, user_name [IDENTIFIED BY 'password'] ...][WITH GRANT OPTION]

    7 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Una comprensin de cmo trabaja el comando GRANT se obtiene mejor a travs de ejemplos. En elejemplo siguiente, el comando GRANT es usado para agregar un nuevo usuario a la base de datos.Este usuario ser usado para accesar a la base de datos widgets:

    mysql>GRANT usage ON *.* TO widgetAdmin@localhost->IDENTIFIED BY 'ilovewidgets';

    Esto crear un nuevo usuario denominado widgetAdmin, capaz de conectarse al servidor MySQL va ellocalhost usando la contrasea ilovewidgets. Hay que tener presente que slo se otorgan privilegios deconexin, no se permitir que el usuario haga nada en el servidor MySQL. Vamos a proseguircambindonos a la base de datos mysql y ejecutando la siguiente consulta:

    mysql> SELECT * FROM user;

    Ntese que la fila conteniendo el usuario widgetAdmin tiene valores N para todos los dems privilegios.Esto es bueno, puesto que la tabla user contiene privilegios de carcter global. Para clarificar esto, siun valor "Y" se pone para cualquier privilegio en la tabla user, ese usuario puede aplicar ese privilegio acualquier base de datos de MySQL. Por lo tanto, casi siempre ser mejor si todos los privilegios estnen "N" dentro de esta tabla.

    Bien, entonces como se asignan los privilegios a un usuario para una base de datos en particular?.Esto se hace fcilmente modificando ligeramente el comando GRANT del ejemplo previo. Por ejemplo,si asumimos que el administrador quiere otorgar los privilegios SELECT, INSERT, UPDATE y DELETEal usuario widgetAdmin sobre la base de datos widgets, se tendra que usar el comando GRANT de lasiguiente manera:

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE->ON widgets.* TO widgetAdmin@localhost;

    Despus de la ejecucin de este comando, el usuario widgetAdmin puede inmediatamente hacer uso deestos privilegios.

    Los privilegios introducidos aqu no son los nicos disponibles para el administrador. La tabla 1-1proporciona un lista de todos los privilegios disponibles.

    Tabla 1-1: privilegios disponibles para usar con el comando GRANT y REVOKE

    8 of 13www.mysql-hispano.org

    Introduccin a MySQL

    ALL PRIVILEGES FILE RELOAD ALTER INDEX SELECT CREATE INSERT SHUTDOWN DELETE PROCESS UPDATE DROP REFERENCES USAGE

  • Para ver los nuevos privilegios que han sido asignados, se puede ejecutar la siguiente consulta:

    mysql> SELECT * FROM db;

    Ntese que una fila ha sido agregada a la tabla "db" para el registro del usuario widgetAdmin, con losvalores "Y" asignados a los campos SELECT, INSERT, UPDATE y DELETE.

    Aunque en este ejemplo se mostr como crear un usuario, y posteriormente como asignarle losprivilegios, es posible hacer estos dos pasos en uno solo, al ejecutar el comando GRANT vistoanteriormente, con una ligera variante.

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE->ON widgets.* TO widgetAdmin@localhost->IDENTIFIED BY 'ilovewidgets';

    Asumiendo que el usuario widgetAdmin an no existe cuando se ejecute esta consulta, tanto la tabla"user", como la tabla "db" sern actualizadas con las registros necesarios.

    Por supuesto, el administrador puede revocar los privilegios otorgados en cualquier momento. ste es elobjetivo que se cubre en la siguiente seccin.

    La sentencia REVOKE

    La sentencia REVOKE es usada para rescindir los privilegios que han sido previamente otorgados a unusuario. Su sintaxis es la siguiente:

    REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]ON {tbl_name | * | *.* | db_name.*}FROM user_name [, user_name ...]

    Como en el caso del comando GRANT, quizs la mejor manera de entender realmente cmo funcionaeste comando es experimentado con varios ejemplos. Asumiendo que el administrador tiene lanecesidad de revocar el privilegio DELETE que haba sido otorgado al usuario widgetAdmin, se tieneque ejecutar el comando REVOKE de la siguiente manera:mysql>REVOKE DELETE ON widgets.*->FROM widgetAdmin@localhost;

    Un punto que se debe tener presente es que mientras REVOKE puede quitar todos los privilegiosotorgados a un usuario (inclusive los privilegios de conexin), ste no quita al usuario de la tabla deprivilegios. Para ilustrar esto, hay que considerar el siguiente comando:

    mysql>REVOKE ALL PRIVILEGES ON widgets.*->FROM widgetAdmin@localhost;

    9 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Mientras esto tendra como resultado que sean revocados todos los privilegios del usuariowidgetAdmin, ste no borrara registros trascendentes de las tablas de privilegios!. Si lo que se deseaes borrar completamente a un usuario de la base de datos se tiene que hacer uso de la sentenciaDELETE como sigue:

    mysql>DELETE FROM user WHERE user = 'widgetAdmin';Query OK, 1 row affected (0.00 sec)mysql>FLUSH PRIVILEGES;

    Cuando ha sido ejecutada esta sentencia, se elimina a un usuario de manera definitiva de la tabla deprivilegios.

    Lecturas adicionales en la documentacin de MySQL (en ingls):7.34 Grant and Revoke Syntax

    Respaldos de bases de datos

    El concepto final discutido en este tutorial es uno verdaderamente importante: respaldos de datos. Enesta seccin se discuten dos mtodos de hacer respaldos de datos y de las estructuras de las bases dedatos MySQL, los comandos mysqldump y mysqlhotcopy.

    mysqldump

    El comando mysqldump proporciona una manera conveniente para respaldar datos y estructuras detablas. Hay que notar que mientras el comando mysqldump no es el mtodo ms eficiente para crearrespaldos (mysqlhotcopy se describe a continuacin), ste ofrece un medio conveniente para copiardatos y estructuras de tablas que puede ser usado para "poblar" otro servidor SQL, no importando si setrata, o no de un servidor MySQL. El comando mysqldump puede ser usado para crear respaldos detodas las bases de datos, algunas bases de datos, slo una de ellas, o incluso ciertas tablas de una basede datos dada. En esta seccin se ilustra la sintaxis involucrada con varios posibles escenarios, seguidacon unos pocos ejemplos.Usando el comando mysqldump para respaldar slo una base de datos:

    shell> mysqldump [opciones] nombre_base_datos

    Usando el comando mysqldump para respaldar varias tablas de una base de datos:

    shell> mysqldump [opciones] nombre_base_datos tabla1 tabla2. . . tablaN

    Usando mysqldump para respaldar varias bases de datos:

    shell> mysqldump [opciones] --databases [opciones] nombre_bd1 nombre_bd2...

    10 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Usando mysqldump para respaldar todas las bases de datos:

    shell> mysqldump [opciones] --all-databases [opciones]

    Las opciones pueden ser vistas ejecutando el siguiente comando:

    shell> mysqldump --help

    - Ejemplos -Respaldar ambos, la estructura y los datos encontrados dentro de la base de datos widgets puede serrealizado como sigue:

    shell> mysqldump -u root -p --opt widgets

    Alternativamente, quizs se requiera respaldar nicamente los datos, esto es logrado al incluir laopcin --no-create-info, lo que significa que no se creen los datos relativos a la creacin de las tablas.

    shell>mysqldump -u root -p --no-create-info widgets

    Otra variacin es respaldar nicamente la estructura de las tablas, esto es logrado al incluir la opcin --no-data, que significa la no creacin de los datos de las tablas.

    shell>mysqldump -u root -p --no-data widgets

    Si se est planeando usar mysqldump con el fin de respaldar datos para que puedan ser movidos aotro servidor MySQL, es recomendado que se use la opcin "--opt". Esto nos dar un respaldooptimizado de los datos que tendr como resultado un tiempo ms rpido de lectura cuando sequieran cargar los datos en otro servidor MySQL.

    Mientras mysqldump proporciona un mtodo conveniente para respaldar datos, hay un segundomtodo, el cuales ms rpido, y ms eficiente. Esto se describe en la siguiente seccin.

    mysqlhotcopy

    El comando mysqlhotcopy es un script de Perl que usa varios comandos SQL y del sistema pararespaldar una base de datos. Ms especficamente ste bloquea las tablas, limpia las tablas, hace unacopia, y desbloquea las tablas. Aunque este sea el mtodo disponible ms rpido para respaldar unabase de datos MySQL, ste se limita a respaldar slo las bases de datos que residen en la mismamquina en la cual est siendo ejecutado el comando mysqlhotcopy.

    11 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • El comando mysqlhotcopy puede ser ejecutado para respaldar una base de datos, varias bases dedatos, o slo las bases de datos cuyo nombre coincida con una expresin regular. En esta seccin, semuestra la sintaxis involucrada con cada posible escenario seguida de unos pocos ejemplos.Usando mysqlhotcopy para respaldar slo una base de datos:

    shell> mysqlhotcopy [opciones] nombre_bd /ruta/nuevo/directorio

    Usando mysqlhotcopy para respaldar varias bases de datos:

    shell> mysqlhotcopy [opciones] nombre_bd1.. nombre_bdN /ruta/nuevo/directorio

    Usando mysqlhotcopy para respaldar slo las tablas de una base de datos cuyo nombre coincida conuna expresin regular:

    shell> mysqlhotcopy [opciones] nombre_bd./expresionregular/

    Las opciones completas del comando mysqlhotcopy pueden ser vistas ejecutando el siguiente comando:

    shell> mysqlhotcopy --help

    - Ejemplos -Para usar mysqlhotcopy para respaldar la base de datos widgets al directorio "/usr/mysql/backups/" setiene que ejecutar el siguiente comando:

    shell>mysqlhotcopy -u root -p widgets /usr/mysql/backups

    Un segundo ejemplo asume que la base de datos widgets contiene las tablas "productos2000","productos2001", "clientes2000", y "clientes2001", con los cuatro digitos representando los datoscorrespondientes a cada ao.

    Si se desean respaldar las tablas relativas al ao "2000", el comando mysqlhotcopy tendra que usarsecomo sigue:

    shell> mysqlhotcopy -u root -p widgets./^.+('2000')$/ /usr/mysql/backups

    En el ejemplo de arriba, la expresin /^.+('2000')$/ le dice a mysqlhotcopy que respalde slo las tablascuyo nombre finalice con la cadena "2000".

    12 of 13www.mysql-hispano.org

    Introduccin a MySQL

  • Lecturas adicionales en la documentacin de MySQL (en ingls):14.6 Dumping MySQL Database and Table Structures and Data11 Replication in MySQL14.7 Copying MySQL Databases and Tables

    Conclusiones

    El objetivo de este tutorial fue introducir los temas esenciales relacionados con la funcionalidad bsicadel servidor MySQL. Se sugiere que los lectores novatos dediquen algo de tiempo para experimentarcon todos los ejemplos, como bien se dice, "aprendiendo haciendo" es la manera ms rpida de llegara sentirse cmodo con MySQL.

    La prxima vez, hecharemos un vistazo en algunos detalles de configuracin, enfocndonos en el archivomy.cnf, que fu introducido a principios de este tutorial.

    13 of 13www.mysql-hispano.org

    Introduccin a MySQL