IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

MYSQL


Introducció a MySQL

  • MySQL és un sistema de gestió de bases de dades relacional, multifil i multiusuari

Msql1.jpg

Història del projecte

  • SQL (Llenguatge de Consulta Estructurat) va ser comercialitzat per primera vegada el 1981 per IBM.
  • Considerat com un estàndard per a les bases de dades relacionals.
  • MySQL és una idea originària de l'empresa opensource MySQL AB establerta inicialment a Suècia el 1995 on els seus fundadors són David Axmark, Allan Larsson, i Michael "Monty" Widenius.
  • Al 2008 va ser comprada per SUN i al 2009 per Oracle

Tipus de bases de dades

  • Gestors de bases de dades
  • Mysql
  • Postgre
  • Mysql s'utilitza més perque utilitza el sistema LAMP
  • MySQL és un mòdel relacional

Instal·lació i fitxers instal·lats

  • Podem fer l'instal·lació de diferents maneres les quals es citen a continuació

Instal·lació amb Tasksel

  • Ens deixa instal·lar una tasca,una tasca no és un paquet,amb la següent comanda podrem instalar tasques:
$ sudo tasksel
  • On ens permetra triar quina tasca volem en el nostre cas volem el MySQL


Msql2.png


  • Cal recordar sobre MySQL que:
 *MySQL és una conexió client servidor
 *El servidor necesita el client per poder funcionar
  • Cal recordar sobre tasksel que:
 *Tasksel utilitza Ncurses

NOTA: Ncurses és una llibreria que permet emular un entorn gràfic

Instal·lació manual

  • Amb la següent comanda instal·lariem el MySQL de forma manual:
$ sudo apt-get install mysql-server

Desinstal·lació manual

  • Amb la següent comanda podrem desinstal·lar el MySQL de la nostra màquina:
$ sudo apt-get remove mysql-server-5.1

Fitxers Instal·lats

  • Les aplicacions gràfiques amagen els detalls de l'instal·lació,per poder veure'ls ho fariem amb la següent comanda:
$dpkg -l
$dpkg -l |grep mysql

Mysql3.png

  • Llengenda dels paquets instal·lats
    • libdbd-mysql-perl :Motor de base de dades d'interfície de Perl5 per a la base de dades MySQL
    • libmysql-java:És un controlador que permet als desarolladors de Java realitzar conexions a servidors MySQL

Fitxer:FALTA ACABAR LLEGENDA!!!!.jpg

Control del servei

  • Per arrancar el servei de mysql
$ sudo/etc/init.d/mysql start
  • Per reiniciar el servei de mysql
$ sudo/etc/init.d/mysql restart
  • Per reload el servei de mysql
$ sudo/etc/init.d/mysql reload
  • Per parar el servei de mysql
$ sudo/etc/init.d/mysql stop
  • Per status el servei de mysql
$ sudo/etc/init.d/mysql status  Ens dona informació de l'estat

Comprovar si funciona mysql

Executarem la següent comanda per saber si esta funcionan mysql

$ sudo mysql -p
  • Per tornar a crear un password en cas de no recordar-lo
$ sudo dpkg-reconfigure mysql-server-5.1
  • Un altra manera de saber si mysql esta en funcionament podem veure si el port 3306 que és el que mysql utilitza esta funcionant
$ cat /etc/services
  • Un altra comanda
$ sudo nmap
  • Per obrir sockets
$ sudo nc -l -p 3306
  • Per mirar si el proces esta funcionant
$ sudo ps aux | grep mysqld

Configuració

  • Els fitxers de configuració sempre estan en la carpeta /etc
  • El principal fitxer de configuració de mysql és my.cnf

conf.d

  • comanda service:
$ sudo service mysql restart

NOTA: a partir de la versió 10.10

  • Si mysql es qued penjat podem matar el proces Kill
$ sudo kill -9 4130

NOTA: El -9 es matar el proces inmediat i 4130 es el numero de proces

  • Comanda per editar el fitxer my.cnf
$ geany /etc/mysql/my.cnf

Com consultar el fitxer nomes mirant les linies que ens interesen

  • Amb la comanda grep
  • Entrem a la carpeta
$ cat my.cnf | grep -v '^#'
  • Per poder veure les llibreries de MySQL,haureim d'anar al següent directori
$ sudo /var/lib/mysql
  • Mirem els ports oberts en la nostra màquina,com podem veure el port 3306 que és el que utilitza mysql no esta.Això es perquè es té que configura l'arxiu my.cnf
  • Per obrir un port s'utilitza la comanda nc,nosaltres en aquest cas volem obrir el port 3306
$ sudo nc -l -p 3306


Exercicimysql1.png


  • Editem l'arxiu my.cnf on canviem l'adreça del localhost 127.0.0.1 per l'adreça de la nostra interfície,en aquest cas la nostra és la 192.168.202.107


  • Tot seguit reiniciem el servei mysql


Exercicimysql2.png


  • Mirem que el port estigui obert
$ sudo nmap 192.168.202.107


Exercicimysql3.png


  • Per veure tot el que se'ns a instal·lat utilitzarem la següent comanda
$ dpkg -L mysql-server-5.1 | grep /etc 


Fitxerprincipal.png


Fitxers de log

  • Els podem trobar al següent directori i qualsevol cambi es queda enregistrat
$ sudo /var/log/mysql/

Eines gràfiques

MySQL GUI

Mysql-admin

  • Per instal·lar mysql-admin
$ sudo apt-get install mysql-admin
  • Un cop istal·lat ens podem trobar els següents apartats

Server information: Mostra tota l'informació del servidor i el host

Status.png


  • Service Control: Ens mostra l'estat del servidor i ens deixa l'opció de parar-lo
Servicecontrol.png


  • Startup Parameters: Mostra tots els paràmetres disponibles
Status2.png


  • User Admistration:Per administrar tots els usuaris, crear, modificar, esborrar
Status3.png


  • Server Connections: Mostra els usuaris connectats al servidor
Status4.png


  • Health: Mostar la monitorització del servidor, rendiment, etc
1122.png


  • Server logs: Mostra el fitxers Logs,on es poden visualitzar errors ,canvis, etc


11223.png
  • Backup: Ens permet fer còpies de seguretat


114.png


  • Restore Backup: Per restaurar còpies de seguretat


1199.png


  • Replication Status: Estat de replicació


11699.png


  • Catalogs: Visoió molt detallada de les nostres bases de dades


11799.png


  • Un altra Eina d'entorn gràfic

Mysql-query-browser

$ sudo apt-get install mysql-query-browser


  • Ens permetra fer consultes de les nostres bases de dades
Querybrowser1.png


Querybrowser2.png


Querybrowser3.png

Mysqlworkbench

  • Anem a downloads de la web oficial de mysql Mysqlworkbench
  • Elegim la versió del nostre sistema operatiu
Mysqlwork1.png


  • Cliclem a l'opció de que no ens volem registrar
Mysqlwork2.png


  • Elegim un mirror i começa la descarrega
Mysqlwork3.png


  • Anem on tinguem la descarregà del mysql workbench i li fem doble clic damunt,on se'ns obrirà el centre de software de l'ubuntu i li diem instalar
Mysqlwork4.png


  • Finalment després haigui acabat l'instal·lació si anem a aplicacions ---> programació ---> MySQLWorkbench i li fem clic se'ns obrirà la interfície gràfica del Mysql workbench
Mysqlwork5.png


phpMyadmin

  • Per instal·lar el phpMyadmin ho farem amb la següent comanda
$ sudo apt-get install phpmyadmin
  • Un cop s'haigui instal·lat,recorda'n que ens haurà demanat una contrasenya per al root,la qual tindrem que recordar per poder-hi accedir.És podrà accedir de dos modes diferents
  • Pel navegador fican
http://localhost/phpmyadmin/
  • A traves de aplicacions ---> programació ---> phpMyAdmin
  • On aquesta seria la primera pàgina que ens sortirà,la qual li elegiríem l'idioma i ficaríem la contrasenya del root, la qual se'ns va demanar durant l'instal·lació
Myadmin1.png
  • Entre d'altres aquí veuríem una de les opcions que ens ofereix el phpMyAdmin per l'administració


Myadmin2.png



Tunel ssh

$ ssh-L 5678:localhost:3306 [email protected]

Storage Engines

  • És la forma en que es guardarà la taula en el fitxers
  • Les bases de dades és guarden a la carpeta /var/lib/mysql
  • Hi ha una carpeta per cada base de dades
  • MYISAM té aquest format
  • MYISAM.frm guarda la difinició de la taula,columnes,claus primaries,no conteé les dades conté la estructura
  • MYISAM.MYI conté les dades de les taules
  • MYISAM.MYD conté index si en tenim
  • Per carregar un fitxer al mysql usarem la següent comanda
mysql> LOAD DATA INFILE '/var/lib/mysql/pocket.txt' 
INTO TABLE MYISAM (col2);
  • Seleccionem amb una consulta
mysql> select * from MYISAM where (col2) LIKE 'a%';
  • Els index ocupen més espai però les consultes són més rapides
[email protected]:~$ sudo ls /var/lib/mysql/prova/
db.opt	MYISAM.frm  MYISAM.MYD	MYISAM.MYI
[email protected]:~$ sudo ls -la /var/lib/mysql/
[sudo] password for alumne: 
total 36968
drwx------ 10 mysql mysql     4096 2011-11-04 15:33 .
drwxr-xr-x 69 root  root      4096 2011-10-20 20:55 ..
-rw-r--r--  1 mysql mysql        0 2011-03-19 13:10 debian-5.1.flag
-rw-rw----  1 mysql mysql 27262976 2011-11-03 21:56 ibdata1
-rw-rw----  1 mysql mysql  5242880 2011-11-04 15:33 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 2011-11-04 15:33 ib_logfile1
drwx------  2 mysql mysql     4096 2011-10-14 19:56 M2M10
drwx------  2 mysql mysql     4096 2011-09-30 20:14 mysql
-rw-rw----  1 mysql mysql        6 2011-01-13 19:10 mysql_upgrade_info
-rw-rw----  1 mysql mysql        5 2011-11-04 15:33 pc-imatge.pid
drwx------  2 mysql mysql     4096 2011-01-25 11:54 phpmyadmin
drwx------  2 mysql mysql     4096 2011-01-25 12:26 rss
drwx------  2 mysql mysql     4096 2011-03-28 13:14 sakila
drwx------  2 mysql mysql     4096 2011-10-28 19:46 usuaris
drwx------  2 mysql mysql     4096 2011-10-14 20:28 webfaltes
drwx------  2 mysql mysql     4096 2011-04-14 13:10 world

MYISAM

  • Exercici MYISAM
#/!usr/bin/php
<?php

require_once("/etc/mysqlpasswords");

$link =  mysql_connect($HOST, $USER, $PASSWD);
if (!$link) {
    die('No ha segut possible la connexio: ' . mysql_error());
}
echo "Connectat satisfactoriament\n";

mysql_select_db('prova');

for ($i = 1; $i <= 1000000; $i++) {
   mysql_query("INSERT INTO MYISAM (col2) values ($i)");
   echo "$i\n";
}

mysql_close($link);
?>

INNODB

Còpia de seguretat de la base de dades wikiacacha

  • Per copiar la base de dades wikiacacha primer tindrem que crear la base de dades
mysql> create database wikiacacha;
Query OK, 1 row affected (0.00 sec)
mysql>
  • Un cop creada copiarem la còpia de la base de dades a la nostra base de dades creada anteriorment per això utilitzarem la següent comanda
$ sudo mysql -p wikiacacha < /home_local/alumne/wikidb1110.sql

NOTA: Tenim que tenir amb compte de agafar la ruta d'on tenim la nostra base de dades

  • Ens demanarà la password del root del mysql

Vegeu també

Enllaços Externs