Sei sulla pagina 1di 21

INTRODUCCIN MySQL es un DBMS (Data Base Management System) o sistema de gestin de base de datos SQL (Structured Query Language

o Lenguaje Estructurado de Consulta) multiusuario y multihilo. URL: http://www.mysql.com/ Fue desarrollada por MySQL AB, compaa fundada por David Axmark, Allan Larsson y Michael Widenius, la cual posea los derechos de autor de prcticamente todo el cdigo que lo integraba y que lo desarrolla como software libre en un esquema de licenciamiento dual. Desde enero de 2008, MySQL AB se volvi una subsidiaria de Sun Microsystems y sta a su vez de Oracle Corporation, a partir de 2009. El licenciamiento dual consiste en ofrecer MySQL bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para empresas que quisieran incorporarlo en productos privados deben comprar a la empresa una licencia especfica que permita este tipo de uso, adems la compaa ofrece soporte y servicios. Este tipo de licenciamiento es posible porque MySQL es patrocinado por una empresa privada que tiene el copyright de la mayor parte del cdigo. MySQL es actualmente el servidor de base de datos ms popular para los desarrollos a travs de la red mundial, principalmente sitios de Internet. Es clebre y casi legendario por considerarse rpido y slido, no obstante, PostgreSQL est tomando relevancia entre los desarrolladores de software debido a su mejor desempeo en la rapidez de manejo de base de datos de gran tamao.

INSTALACIN DE MYSQL EN CENTOS 1. Para la instalacin de los paquetes mysql (cliente) y mysql-server (servidor), en primer lugar se debe abrir un terminal y luego digitar lo siguiente: yum -y install mysql mysql-server 2. Como segundo paso es necesario hacer algunas modificaciones al sistema en el firewall o cortafuegos: Abrir el puerto 3306, utilizando uno de las herramientas que se describen a continuacin:

Abrir el puerto 3306 por TCP (mysql) si requiere hacer conexiones desde anfitriones remotos. Si utiliza el firewall predeterminado del sistema, puede ejecutar el siguiente mandato: system-config-firewall En la ventana que aparecer, se debe habilitar el puerto 3306/TCP y luego aplicar los cambios (ver Fig.1).

Fig.1 Herramienta system-config-firewall habilitando el puerto 3306/TCP pata MySQL.

Otra opcin es utilizar directamente el mandato iptables, ejecutando lo siguiente: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT service iptables save

Tambin se puede aadir lo siguiente al archivo /etc/sysconfig/iptables: -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT Y reiniciar el servicio iptables: service iptables restart

PROCEDIMIENTOS 1. Iniciar, detener y reiniciar el servicio mysqld. Para que el servicio de mysqld est activo en todos los niveles de ejecucin, se ejecuta lo siguiente: chkconfig mysqld on Para iniciar por primera vez el servicio mysqld y generar la base de datos inicial (mysql), ejecute lo siguiente: service mysqld start Para reiniciar el servicio mysqld, ejecute lo siguiente: service mysqld restart Para detener el servicio mysqld, ejecute lo siguiente: service mysqld stop

2.

Archivos y directorios de configuracin. El archivo /etc/my.cnf es el utilizado para establecer o cambiar opciones permanentes de MySQL. Las bases de datos se almacenan dentro del directorio

/var/lib/mysql. Las configuraciones bsicas que se deben realizar se detallan a continuacin: Configuracin del usuario root en MySQL: El usuario root carece de contrasea despus de iniciado el servicio por primera vez, por lo cual es muy importante asignar una, para ello ejecute el mandato mysqladmin, con la opcin -h con localhost como argumento, la opcin -u con root y password como argumentos y la nueva contrasea entre comillas simples: mysqladmin -h localhost -u root password 'nueva-contrasea' En adelante, ser necesario aadir la opcin -p a cualquier sentencia de lnea de mandatos para mysql, mysqladmin y mysqldump para ingresar la contrasea del usuario root y poder, de esta forma, realizar diversas tareas administrativas. Recuperacin de la contrasea del usuario root en MySQL. En caso de que haya olvidado la contrasea del usuario root de MySQL, detenga el servicio ejecutando service mysqld stop Ejecute el mandato mysqld_safe con la opcin --skip-grant-tables, enviando el proceso a segundo plano: mysqld_safe --skip-grant-tables & Luego ingrese al intrprete de mandato de MySQL ejecutando el mandato mysql, sin argumentos u opciones: mysql Ejecute lo siguiente: UPDATE mysql.user SET Password=PASSWORD('nueva-contrasea') WHERE User='root'; FLUSH PRIVILEGES; Salga del intrprete de mandatos de MySQL ejecutando lo siguiente: exit; Detenga el servicio mysqld ejecutando slo lo siguiente:

mysqladmin shutdown Inicie MySQL ejecutando service mysqld start Verifique el cambio de contrasea accediendo a MySQL con el mandato mysql y la opcin -p, e ingrese la nueva contrasea. mysql -p Salga del intrprete de mandatos de MySQL ejecutando lo siguiente: exit; Procure memorizar la nueva contrasea asignada al usuario root de MySQL. 3. Crear y eliminar bases de datos. Para crear una nueva base de datos, puede utilizarse el mandato mysqladmin con el parmetro create, la opcin -u con root como usuario y la opcin -p para indicar que se ingresar una contrasea: mysqladmin -u root -p create BDHCA Para eliminar una base de datos, se utiliza el mandato mysqladmin con el parmetro drop en lugar de create, la opcin -u con root como usuario y la opcin -p para indicar que se ingresar una contrasea: mysqladmin -u root -p drop BDHCA 4. Respaldo y restauracin de bases de datos. Para respaldar una base de datos desde el anfitrin local, se ejecuta el mandato mysqldump con las opciones --opt (que aade automticamente las opciones -add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --locktables, --set-charset y --disable-keys), la opcin -u con el nombre de usuario a utilizar, la opcin -p para indicar que se ingresar una contrasea, el nombre de la base de datos, > para guardar la salida estndar (STDOUT) en un archivo y el nombre del archivo donde se guardar el respaldo. Sinopsis $ mysqldump [opciones] nom-bd [tablas] $ mysqldump [opciones] --databases nom-bd1 [nom-bd2 nom-bd4 ...]

$ mysqldump [opciones] --all-databases Hacer copias de seguridad a la base de datos mysqldump --opt -u root -p BDHCA > RESPALDOBDHCA.sql Para restaurar un respaldo, se ejecuta el mandato mysql con las opciones -u con el nombre de usuario con privilegios sobre la base de datos a restaurar, -p para indicar que se utilizar contrasea, el nombre de la base de datos a restaurar, < para indicar que la entrada estndar (STDIN) ser un archivo y el nombre del archivo con el respaldo de la base de datos. Ejemplo: mysql -u root -p BDHCA < RESPALDOBDHCA.sql Para respaldar todas la bases de datos hospedadas en MySQL, se ejecuta el mandato mysqldump con las opciones --opt, --all-databases para indicar que se respaldarn todas la bases de datos, la opcin -u con root como usuario, la opcin -p para indicar que se utilizar contrasea, el smbolo > para guardar la salida estndar (STDOUT) en un archivo y el nombre del archivo donde se guardar el respaldo. Ejemplo: mysqldump --opt --all-databases -u root -p > respaldo-todo.sql Para restaurar todas las bases de datos a partir de un nico archivo de respaldo, se ejecuta el mandato mysql con la opcin -u con root como usuario, la opcin -p para indicar que se utilizar contrasea, el smbolo < para indicar que la entrada estndar (STDIN) ser un archivo y el nombre del archivo con el respaldo de todas las bases de datos. Ejemplo: mysql -u root -p < respaldo-todo.sql 5. Permisos de acceso a las bases de datos. En primer lugar, ingrese al intrprete de MySQL como el usuario root: mysql -u root -p Para asignar los permisos select (seleccionar), insert (insertar), update (actualizar), create (crear), alter (alterar), delete (eliminar) y drop (descartar) sobre las tablas de una base de datos al usuario prueba desde el anfitrin localhost (anfitrin local), se ejecuta algo similar a lo siguiente:

GRANT select, insert, update, create, alter, delete, drop ON bdhca.* TO usuario@localhost IDENTIFIED BY 'contrasea'; Puede otorgar al usuario todos los permisos sobre la base de datos ejecutando lo siguiente: GRANT all ON BDHCA.* TO usuario@localhost IDENTIFIED BY 'contrasea'; Si se requiere permitir el acceso hacia una base de datos desde otro anfitrin en la red de rea local, se ejecuta algo similar al ejemplo anterior, pero definiendo el usuario y la direccin IP del anfitrin remoto. Ejemplo: GRANT select, insert, update, create, alter, delete, drop ON directorio.* TO usuario@192.168.70.2 IDENTIFIED BY 'contrasea'; Puede otorgar al usuario todos los permisos sobre la base de datos ejecutando lo siguiente: GRANT all ON directorio.* TO

usuario@192.168.70.2 IDENTIFIED BY 'contrasea'; Si se requiere permitir el acceso hacia una base de datos desde cualquier anfitrin, se ejecuta algo similar a lo anterior, pero definiendo el nombre del usuario entre comillas simples, arroba y el smbolo % entre comillas simples. Ejemplo: GRANT all ON directorio.* TO 'usuario'@'%' IDENTIFIED BY 'contrasea-usuario-usuario'; 6. Optimizacin de MySQL. Deshabilitar la resolucin de nombres de anfitrin. MySQL mantiene un cache de anfitriones utilizados en la memoria, la cual contiene las direcciones IP, nombres de anfitrin y errores de informacin asociados a stos. El cache slo se utiliza para conexiones TCP remotas con otros anfitriones y jams lo utiliza para conexiones a travs de la interfaz de retorno del sistema (loopback, 127.0.0.1) o conexiones hechas a travs del archivo de zcalo, tubera o bien memoria compartida. Por cada nueva conexin, MySQL utiliza la direccin IP del cliente para verificar si el nombre de anfitrin de ste est en el cache de anfitriones. Cuando el nombre es inexistente, MySQL intentar resolver el nombre de anfitrin, resolviendo primero la direccin IP, luego resolviendo el nombre, comparando el resultado de la direccin IP original para verificar que correspondan. MySQL almacena luego esta informacin en el cache de anfitriones. El objetivo del cache es evitar hacer una consulta de DNS por cada conexin de cliente y el almacenamiento de informacin de errores que ocurren en el proceso de conexin de los clientes. Cuando ocurren demasiados errores desde un anfitrin en particular y se rebasa el valor de la variable max_connect_errors (10, de modo predeterminado), MySQL bloquea el acceso desde dicho anfitrin.

Cuando un anfitrin es bloqueado, slo podr acceder de nuevo si se reinicia MySQL o si se limpia el cache de anfitriones. Este ltimo puede limpiarse ejecutando desde el intrprete de mandatos del sistema lo siguiente: mysqladmin -p flush-hosts Cuando se tiene un DNS muy lento o se carece de uno que resuelva el nombre de los anfitriones o bien se tiene demasiados anfitriones haciendo conexiones hacia el servidor MySQL, deshabilitar el cache de anfitriones o hacer ms grande ste, mejora el rendimiento considerablemente. La consecuencia de deshabilitar el cache de anfitriones es que en adelante slo se podrn otorgar permisos de acceso y realizar conexiones utilizando direcciones IP, es decir utilizando usuario@a.b.c.d en lugar de usuario@anfitrin.dominio.tld. Para deshabilitar el cache de anfitriones, se requiere editar el archivo /etc/my.cnf: vim /etc/my.cnf Y aadir la siguiente opcin en la seccin [mysqld]: skip-name-resolve Para aplicar los cambios, es necesario reiniciar el servicio. Si se desea hacer ms grande el cache de anfitriones, cuyo valor predeterminado es 128 anfitriones, se requiere cambiar el valor de HOST_CACHE_SIZE por cualquier valor entre 0 y 2048 y compilar MySQL desde cdigo fuente, motivo por el cual es ms prctico deshabilitar el cache de anfitriones. Aumentar el tamao de cache de consultas. Cuando se habilita el cache de consultas en memoria y se dispone de suficiente de sta, el desempeo del servidor MySQL se incrementa considerablemente. El valor predeterminado del tamao cache de consultas (query_cache_size) es 0, lo que significa que est desactivado. Los valores permitidos son mltiplos de 1024 (bytes). Si, por ejemplo, se desea establecer un tamao de cache de consultas de 32 MiB, el valor sera 33882112 bytes. Ingrese al intrprete de MySQL como el usuario root: mysql -u root -p Verifique el valor de la variable query_cache_size ejecutando lo siguiente:

SHOW VARIABLES LIKE '%query_cache%'; La salida ser similar a la siguiente: +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | have_query_cache | YES | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size |0 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+---------+ 6 rows in set (0.00 sec) Ejecute lo siguiente para cambiar el valor de query_cache_size a 32 MiB: SET GLOBAL query_cache_size = 33882112; Verifique el cambio ejecutando lo siguiente: SHOW VARIABLES LIKE '%query_cache%'; La salida ser similar a la siguiente: +------------------------------+----------+ | Variable_name | Value |

+------------------------------+----------+ | have_query_cache | query_cache_limit | YES |

| 1048576 | | 4096 |

| query_cache_min_res_unit | query_cache_size | query_cache_type

| 33882112 | | ON |

| query_cache_wlock_invalidate | OFF +------------------------------+----------+ 6 rows in set (0.00 sec) Salga del intrprete de MySQL. exit;

El cambio prevalecer hasta que sea reiniciado MySQL. Para que el cambio sea permanente, se requiere editar el archivo /etc/my.cnf: vim /etc/my.cnf Y aadir la siguiente opcin en la seccin [mysqld]: query_cache_size = 33882112 Para aplicar los cambios, es necesario reiniciar el servicio. Ejecute: service mysqld restart Para verificar el estado del cache de consultas, ingrese al intrprete de mandatos de MySQL: mysql -u root -p A fin de generar algo de actividad, realice algunas consultas al azar hacia cualquier base de datos MySQL hospedada en el servidor. Slo la primera consulta que haga siempre ser un poco ms lenta que las subsecuentes. El resto de las consultas debern ser ms rpidas. Para verificar el estado del cache de consultas, vuelva a ingresar ingresar al intrprete de mandatos de MySQL: mysql -u root -p Desde el intrprete de mandatos de MySQL ejecute lo siguiente: SHOW STATUS LIKE '%Qcache%';

La salida puede ser similar a la siguiente: +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 1 | | Qcache_free_memory | 33864568 | | Qcache_hits |0 | | Qcache_inserts |0 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 61 | | Qcache_queries_in_cache | 0 | | Qcache_total_blocks | 1 | +-------------------------+----------+ 8 rows in set (0.00 sec)

PROBLEMAS COMUNES 1. Mysql sensible a maysculas y minsculas En MySQL, las bases de datos corresponden con directorios dentro del directorio de datos donde tenemos instalado mysql. Del mismo modo, las tablas son fichero dentro de nuestro directorio de la base de datos. Conectados como root en la mquina (los paths aqui indicados pertenecen a la pc donde se est corriendo el ejemplo) Primero realizar un backup cp /etc/my.cnf /etc/my.cnf.backup Luego abrir el archivo con vuestro editor favorito. vi /etc/my.cnf Por defecto contiene lo siguiente: 01 02 03 04 05 [mysqld] set-variable=local-infile=0 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql

06 07 08 09 10 11 12

# Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

Veamos un ejemplo: root@turceta [/var/lib/mysql/tureceta_blog]# l -rw-rw----rw-rw----rw-rw----rw-rw---1 mysql mysql 104 mar 17 23:20 wp_users.MYD 1 mysql mysql 4,0K mar 18 00:03 wp_users.MYI 1 mysql mysql 1,9K abr 30 20:59 wp_TERMS.MYD 1 mysql mysql 8,0K may 1 00:30 wp_TERMS.MYI

Como podemos ver, tenemos una base de datos tureceta_blog y las tablas wp_users y wp_TERMS. Por lo tanto, es la sensibilidad a maysculas y minsculas del sistema operativo instalado la que determina la sensibilidad en los nombres de las tablas y sus bases de datos, en mysql. De este modo, en los sistemas operativos Windows, no tendremos ningn problema. En primer lugar, lo ms recomendable para evitar problemas de este tipo es utilizar siempre minsculas, pero en caso de no poder cambiar nuestras tablas y bases de datos, vamos a ver la solucin. Podemos especificar en mysql como almacenar las tablas y bases de datos con la variable lower_case_table_names. Para ello, simplemente editamos el fichero my.cnf. lower_case_table_names = 1 Lo valores que puede tomar esta variable son:

0 Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de maysculas y minsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE. Las comparaciones de nombres son sensibles a maysculas. Esto es lo predeterminado en sistemas Unix. Ntese que si se fuerza un valor 0 con lower-case-table-names=0 en un sistema de ficheros insensible a maysculas y se accede a tablas MyISAM empleando distintos esquemas de

maysculas y minsculas para el nombre, esto puede conducir a la corrupcin de los ndices.

1 Los nombres de tablas se almacenan en minsculas en el disco y las comparaciones de nombre no son sensibles a maysculas . MySQL convierte todos los nombres de tablas a minsculas para almacenamiento y bsquedas. En MySQL 5.0, este comportamiento tambin se aplica a nombres de bases de datos y alias de tablas. Este valor es el predeterminado en Windows y Mac OS X. 2 Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de maysculas y minsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE, pero MySQL las convierte a minsculas en bsquedas. Las comparaciones de nombres no son sensibles a maysculas. Nota: Esto funciona solamente en sistemas de ficheros que no son sensibles a maysculas. Los nombres de las tablas InnoDB se almacenan en minsculas, como cuando lower_case_table_names vale 1.

MODELAMIENTO DE LA BASE DE DATOS BDHCA (BASE DE DATOS DE HISTORIA CLNICA AUTOMATIZADA) CON EL EDITOR WORKBENCH El editor Workbench (ver fig.2), se puede descargar https://www.mysql.com/products/workbench/, dentro de sus herramientas o aplicaciones que brinda, posee la de crear un modelo de base de datos orientada a Mysql para luego ser desplegada en el gestor de mysql.

Fig.2

Creacin del modelo BDHCA: Dar click sobre Create New EER Model (ver fig. 3) ->Add Diagram con lo que se mostrara el editor para la creacin del modelo (ver fig. 4).

Fig. 3

Fig. 4

Si desea cambiar el nombre a la base de datos a crear dar click derecho sobre mydb -> click en Edith Schema -> cambiar el nombre por BDHCA (ver fig. 5).

Fig. 5

Luego se crea el Modelo BDHCA con las tablas, relaciones y las dems funcionalidades (ver fig. 6).

Fig. 6

Una vez modelada la base de datos BDHCA se procede a crear el SQL Script de este modelo para llevarlo a cualquier BDMS de la siguiente manera: Dirigirse al men File -> Export -> Forward Engineer SQL CREATE Script (ver fig. 7)

Fig. 7

Escogemos una direccin y el nombre del archivo, para el ejemplo BDHCA.sql (ver fig. 8) luego escogemos las opciones que estime necesarias para la creacin del modelo (ver fig. 9) -> Next, se escoge que se desea exportar en el script (ver fig. 10) -> Next, con lo que finalmente te muestra el Script generado y Finish (ver fig. 11).

Fig. 8

Fig. 9

Fig. 9

ANEXO A. Ejecucin de copia de respaldo de la base de datos BDHCA a travs de Mysql Query Browser Conexin a la base de datos Mysql a travs de Mysql Query Browser, este programa permite la ejecucin de sentencias sql hacia las bases de datos que se encuentren en Mysql as como tambin la ejecucin de srcipts y archivos sql, tambin permite la conexin remota/local a un servidor de Mysql ingresando en el Server Host el nombre o ip del servidor (ver fig.11), en Default Schema colocar el nombre de una base de datos que puede ser la que deseamos crear (bdhca) u otra que ya exista en Mysql.

Fig.11 MySQL Query Browser.

Una vez conectado nos muestra la pantalla principal del programa (ver fig.12). Para realizar la creacin de una base de datos a travs de un backup, se va a la opcin file -> Open Query, se busca el archivo bdhca.sql y se abre luego se presiona el botn de ejecucin del query (Execute the entered query), con lo cual creara o restaurara la base de datos que contenga esa query.

Fig. 12 MySQL Query Browser pantalla principal

Bibliografa. http://dev.mysql.com/doc/refman/5.0/en/host-cache.html http://www.alcancelibre.org/staticpages/index.php/como-mysql-quickstart http://tureceta.es/mysql-sensible-a-mayusculas-y-minusculas/ http://www.pedroventura.com/sysadmin/configurando-y-optimizando-unservidor-my-cnf/ http://flossblog.wordpress.com/tag/mysql-cli/ http://dev.mysql.com/doc/refman/5.0/es/name-case-sensitivity.html

Potrebbero piacerti anche