MySQL

toc 

Instalación
Instalaremos los paquetes de **__MySQL__** de los repositorios de Debian con: //#apt-get install mysql-server// La primera medida a tomar para preservar la seguridad de nuestras bases de datos es poner contraseña al usuario root puesto que su contraseña por defecto está en blanco. code format="mysql" $ mysqladmin password Contraseña code

No deberemos olvidar tampoco habilitar el archivo de log (que por defecto no está indicado). Para esto, descomentaremos en /etc/mysql/my.cnf la siguiente línea: log = /var/log/mysql.log



**Crear una BD**
code format="mysql" $ mysqladmin -u root -p create nombredb code O también dentro de MySQL: code format="mysql" mysql> create database nombredb; code

Crear un usuario
Para crear un usuario y darle permisos ejecutamos:

code format="mysql" mysql> grant all on bd.* to usuario@localhost IDENTIFIED BY 'pass' mysql> flush privileges; code

Ver los usuarios de MySQL
code format="sql" select * from mysql.user; code

BD Físicamente
Las bases de datos, físicamente se encuentran en el directorio: /var/lib/mysql

Hacer un backup de la BD
Hacer backup de la base de datos (estructura + datos): code format="mysql" $ mysqldump --opt --password=pass --user=usuari nombre_de_la_base_de_datos > archivo.sql code

Para luego cargarla de nuevo: code format="mysql" $ mysql -h servidor -u usuario -p nombre_de_la_base_de_datos < backup.sql code

Borrar una BD
code format="sql" $DROP DATABASE nombre_de_la_base_de_datos; code

Volcar el resultado de una select a un fichero
code format="sql" select * from tabla where user like '%fernan%' into outfile '/tmp/fernan.txt' code

Consultas directas
code format="sql" mysql -e "select * from TPersona" nombre_BD -p code

Mostrar las BD de MySQL
code format="sql" mysqlshow -u root -p code

Mostrar tablas de una BD
code format="sql" mysqlshow -u root -p nombre_BD code

Mostrar el contenido de una determinada tabla
code format="sql" mysqlshow -u root -p nombre_BD TPersona code

Reemplazar valores almacenados dentro de los campos de nuestra BD
Usaremos la función SQL [|replace] code format="sql" update wp_posts set post_content = replace(post_content,'http://www.antiguo.com','http://www.nuevo.com'); code En este ejemplo, vemos que de la tabla wp_posts cambiaremos el contenido de post_content, que es el campo de la tabla que contiene el contenido de los posts, con el mismo contenido al que previamente le habremos cambiado todas las apariciones de [|http://www.antiguo.com] por la ruta [|http://www.nuevo.com.]

Optimizar la BD
OPTIMIZE TABLE debe ser usado si ha borrado una gran parte de una tabla o si ha hecho muchos cambios a una tabla con filas de longitud variable (tablas que tienen columnas VARCHAR, BLOB o TEXT). Los registros borrados son mantenidos en una lista enlazada y las subsecuentes operaciones INSERT reusan las posiciones de los registros anteriores. Puede utilizar OPTIMIZE TABLE para reclamar ese espacio inutilizado y para desgragmentar el archivo con los datos.

Ver variables de mysql
code format="mysql" mysql -p -uroot -e 'show variables' code

Ver procesos de mysql
Puedes contar fácilmente los procesos de MySQL que en un instante dado se estén ejecutando en el sistema con el siguiente comando: code format="mysql" mysql -p -uroot -e 'show processlist' | wc -l code

Modificar el número máximo de conexiones
Para cambiar los valores de configuración de MySQL, debemos editar el fichero /etc/my.cnf:

code format="mysql" [mysqld] set-variable=max_connections=200 code

Y luego reiniciar MySQL, para que lea las nuevas variables de configuración. El número de conexiones máximas hay que tenerlo bien controlado, porque puede saturar de trabajo al servidor y llegar a hacerlo caer o ponerlo en estado off-line. Las plataformas potentes, como Linux u otros Unix, pueden aguantar fácilmente 500 ó 1.000 conexiones. Depende mucho de la memoria que tenga disponible el sistema.

Si queremos saber qué valor poner, podemos comprobar el número máximo de conexiones que ha necesitado nuestro servidor con esta sentencia SQL:

code format="sql" SHOW STATUS LIKE 'max_used_connections'; code [|]

Tuneando MySQL