MySQL és un sistema de gestió de bases de dades relacional multi-fil i multiusuari, que usa el llenguatge SQL (Structured Query Language).
MySQL va ser creat per l'empresa MySQL AB establerta inicialment a Suècia el 1995 i els fundadors de la qual són David Axmark, Allan Larsson, i Michael "Monty" Widenius. Al 2008 aquesta va ser comprada per Sun i al 2009 per Oracle.
L'arquitectura de MySQL és Client/Servidor.
La comanda tasksel permet instal·lar tasques en un sistema Debian o derivats.
$ sudo tasksel
Fa servir ncurses, llibreria que simula un entorn gràfic.
$ sudo apt-get install mysql-server
$ sudo apt-get remove mysql-server-5.1
Les aplicacions gràfiques tenen el problema que no ens mostren tots els detalls (paquets instal·lats), per a poder-los veure podem fer servir la comanda:
$ dpkg -l | grep mysql
Podem veure que el paquet mysql-server conté una dependència. També necessitem el client per fer funcionar el servidor.
Amb el gestor de paquets Synaptic podem veure les dependències d'aquest paquets en entorn gràfic, clicant al paquet en qüestió i a Propietats tal com mostra la captura:
La següent comanda ens permet controlar el servei de MySQL:
$ sudo /etc/init.d/mysql [start|stop|restart|reload]
start: serveix per arrancar el servei.
stop: serveix per parar el servei.
restart: serveix per reiniciar el servei.
reload: serveix per actualitzar la informació del servei sense aturar-lo.
NOTA: A partir de la versió 10.10 es fa servir la comanda service
$ sudo service mysql [start|stop|restart]
Per a matar processos podem usar la comanda kill (amb el paràmetre -9 forcem l'aturada):
$ sudo kill 2430
Conectar-nos al servidor com a clients amb la comanda:
$ sudo mysql -p
Comprovar que el port està obert amb la comanda:
$ nmap localhost
$ sudo nc -l -p 3306
També ho podem comprovar al fitxer /etc/services.
Mirà si s'està executant el procés amb la comanda:
$ ps aux | grep mysqld
Comprovar l'estat del servidor:
$ sudo /etc/init.d/mysql status
IMPORTANT: Si ens olvidem del password executem la comanda:
$ sudo dpkg-reconfigure mysql-server-5.1
Per saber que s'ha instal·lat amb el paquet:
$ dpkg -L mysql-server-5.1 | grep "/etc"
Podem consultar el manual de la comanda mysql:
$ man mysqld
Fitxer principal de configuració de MySQL.
Executar el fitxer només amb les línies que ens interessen, treure els comentaris d'un fitxer buscant línies que no tinguen # amb la comanda grep amb el paràmetre -v, per exemple:
$ cat /etc/mysql/my.cnf | grep -v '^#'
$ cd /etc/mysql
$ sudo mv my.cnf my.cnf.original
$ sudo bash -c "cat /etc/mysql/my.cnf.original | grep -v '^#' > /etc/mysql/my.cnf"
L'apartat [mysqld_safe]:
L'apartat [mysqld]:
Carpeta per afegir fitxers amb configuracions extres per al MySQL.
Fitxer d'errors de MySQL: /var/log/mysql/error.log
Eina gràfica per administrar el servidor de MySQL. El podem instal·lar amb la comanda:
$ sudo apt-get install mysql-admin
Accedim al servidor indicant host, port, usuari i contrasenya:
Server Information: informació general sobre el servidor MySQL. Connexió, servidor i client.
Service Control: mostra l'estat del servidor i permet la modificació d'aquest (start/stop).
Startup Parameters: permet la gestió total del fitxer de configuració de MySQL amb els seus paràmetres: /etc/mysql/my.cnf
User Administration: administració i gestió dels usuaris del servidor.
Server Connections: permet visualitzar les connexions actives al servidor.
Health: informació gràfica sobre el rendiment del servidor.
Server Logs: informació sobre els fitxers log del servidor per controlar errors.
Backup: còpies de seguretat.
Eina gràfica per realitzar consultes al servidor MySQL. Podem utilitzar la comanda següent per instal·lar-lo:
$ sudo apt-get install mysql-query-browser
Eina gràfica per a l'administració i realització de consultes del servidor MySQL. Permet una representació visual del diagrames i taules de les bases de dades.
Podem descarregar-lo des de la pàgina web següent: http://www.mysql.com/downloads/workbench/
Eina escrita en PHP amb la intenció de manejar l'administració de MySQL a través de pàgines web, utilitzant un navegador. L'instal·lem amb la comanda:
$ sudo apt-get install phpmyadmin
I podem accedir des de la següent direcció: http://localhost/phpmyadmin
$ ssh -L 5678:localhost:3306 [email protected]
$ dpkg -l | grep mysql
$ sudo apt-get remove --purge mysql-common mysql-server... (Afegir tots els paquets)
Borra totes les bases de dades (compte amb no tenir còpies de seguretat):
$ sudo rm -rf /var/lib/mysql
$ sudo ls -la /var/lib/mysql/
Fem servir la següent comanda per esbrinar de quin tipus es un fitxer, per exemple:
$ sudo file /var/lib/mysql/prova/hola.frm
Editem la configuració de l'esclau:
$ sudo geany /etc/mysql/my.cnf
El server-id ha de ser únic si tenim múltiples repliques.
$ sudo /etc/init.d/mysql restart
Ara creem la base de dades a partir de la copia de la master:
$ mysql -u root -p
> CREATE DATABASE webfaltes;
$ /usr/bin/mysqladmin --user=root --password=x stop-slave $ cd /home_local/alumne/Escriptori $ mysql -u root -p webfaltes < còpiawebfaltes.sql
Connectem un altre cop:
$ mysql -u root -p
I executem:
> CHANGE MASTER TO MASTER_HOST='192.168.202.245', MASTER_USER='andrescorazon', MASTER_PASSWORD='andrescorazon', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;
Ara activem l'esclau:
> START SLAVE;
Comprovem l'estat:
> SHOW SLAVE STATUS \G
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.202.245 Master_User: andrescorazon Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 106 Relay_Log_File: pc-imatge-relay-bin.000002 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: webfaltes Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 106 Relay_Log_Space: 410 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:
Comprovem que funciona creant per exemple una taula a la base de dades replicada.
Si l'esclau mostra les taules li apareixeran de noves.
> USE webfaltes; > SHOW TABLES; +------------------------------+ | Tables_in_webfaltes | +------------------------------+ | assignatura | | carrec_departament | | classe | | descripcio_motius_incidencia | | dia_setmana | | estat_alumne | | grup | | horari | | incidencia | | interval_horari | | prova | | prova2 | | prova3 | | rol_professor | +------------------------------+ 14 rows in set (0.00 sec)