MySQL – Base de datos

Vamos a introducirnos en la base de datos MySQL, veremos su instalación y su manejo a nivel básico, creación de usuarios, copias de seguridad/restauración y algunas otras cosas que harán que podamos funcionar normalmente con la base de datos.

MySQL es un sistema de gestión de bases de datos relacionalmultihilo y multiusuario con más de seis millones de instalaciones.1 MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.

Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.

Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David AxmarkAllan Larsson y Michael Widenius. (fuente wikipedia)

Debian nos ofrece tres tipos de instalación, cliente, servidor y administrador.

  • mysql-server nos instalara MySQL + el cliente y las dependencias que sean necesarias.
  • mysql-client nos instalara el cliente MySQL + las dependencias que sean necesarias.
  • mysql-admin nos instalara una herramienta para administrar gráficamente MySQL.

Para este ejemplo vamos a usar mysql-server de la siguiente manera:

# apt-get install mysql-server

ms1

Como podemos observar nos va a instalar ademas del server el cliente y las dependencias necesarias para el correcto funcionamiento, pulsamos Y para continuar.

Lo siguiente que nos pedirá sera que le demos una contraseña para el usuario administrador.

ms2

La escribimos y pulsamos Ok.

Nos pedirá que confirmemos de nuevo la contraseña.

ms3

Repetimos la contraseña y volvemos a confirmar pulsando Ok.

ms4

Una vez termina la instalación nos devuelve a nuestra consola.

El archivo de configuración de mySQL se encuentra en /etc/mysql/my.cnf

Por defecto solo se permiten conexión locales, pero si necesitamos cambiar este comportamiento, tendremos que modificar dentro de este fichero la linea correspondiente a  bind-address.

ms5

Como podemos ver en esta imagen la configuración por defecto es bind-address = 127.0.0.1 , si quisiéramos que se accediera desde uno o varios equipos de nuestra red modificaríamos de la siguiente manera:

  • bind-address = 192.168.1.10 (IP del equipo desde el que queremos hacer la conexión)
  • bind-address = 192.168.1.10-192.168.1.20 (rango de IP’s separadas por un guion )

Al igual que con el bind-address también podemos cambiar el puerto de conexión a la base de datos, por defecto es el puerto 3306.

ms6

Al cambiar el puerto por defecto tendremos que asegurarnos que el que elijamos nos esta asignado ya a otra aplicación.

MySQL está preparado para ejecutarse durante el inicio de nuestro sistema. También podemos iniciarlo, detenerlo o reiniciarlo mediante los siguientes comandos:

  • Iniciar: 
# /etc/init.d/mysql start
  • Parar:
# /etc/init.d/mysql stop
  • Reiniciar:
# /etc/init.d/mysql restart

Ya tenemos instalado y operativo nuestro MySQL, el siguiente paso es proveernos de un gestor para usarlo, yo uso MySQL Workbench el cual lo tenemos disponible para todas las plataformas y funciona muy bien.

Comandos mas habituales para manejar MySQL en consola:

  • show databases; – Listar todas las bases de datos.
  • connect [database]; – Conectarse a esa base de datos.
  • show tables; – Listar todas las tablas de una base de datos.
  • show table status; – Muestra información sobre las tablas.
  • describe [table]; – Muestra la estructura de una tabla.
  • drop table [table]; – Elimina la tabla, incluyendo registros y estructura.
  • truncate table [table]; – Elimina los registros, pero mantiene la esrtuctura de la tabla.
  • rename table [table] to [nuevo nombre de tabla]; – Renombra una tabla.
  • select * from [table] limit [numero]; – Muestra los registros desde el 1 hasta el número.
  • insert into table [table] values (valores).
  • check table [table]; – Verificar tabla.
  • repair table [table]; – Reparar tabla rota.

Algunos ejemplos:

  • # mysqladmin -u -p create – crear base de datos.
  • # mysqladmin -u -p drop – borrar la base de datos.
  • # mysqladmin -u root -p proc – listar procesos en ejecución.
  • # mysqldump -u usuario_bbdd -ppass_bbdd nombrebbdd > /directorio_copia/nombrebbdd.sql
  • # mysqldump –opt -u -h -p > /path – Exportar base de datos a fichero.
  • # mysqldump –opt -u -h –all-databases -p > /path – Exporta todas las bases de datos.
  • # mysql -h -u -p < /path – Importar el fichero a mysql.

Un ejemplo mas ampliado de mysqldump lo tenemos aquí (MySQL – copia de seguridad), es un script que nos hace una copia de seguridad de nuestra bbdd.