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)

Tipus de Base de dades

Jeràrquica, relacional, en xarxa.


fins al 70 que es va proposar el model relacional és el més utilitzat de aqui han aparegut molt Sistema Gestio de Base de dades.

El INGRES es el més antic fins al 80 no va surtir el ORACLE hi ha un petit conflicte que ORACLE a comprat MySQL es el 80 o 85% del mercat,

ORACLE es de pagament i possible es el millor del mercat. es necessita molta preparació per usarlo" no necessites un ferrari per anar pel monte", depen que hagis de fer no cal ORACLE.

Jeràrquica es usa pel Ldap es un sistema de fitxers,

MySQL

RDBMS

El va crea una empresa MySQL AB que es va crea l'empresa per desenvolupar el programa.

es va comprar 2008 per SAN i al 2009 x ORACLE

Instalació

2 opcions

  • tasksel : es un servei que et surt al instalar una ubuntu server

$sudo tasksel

Es el que usa el tasksel Ncurses es una llibreria que permet emular entorn gràfic


instalar el LAMP server que ja instala el MySQL

al isntalar una server instales un kernel per a la execució d'un servidor

3 característiques del servei

  • No veus com sexecuten execucio en segon pla
  • Executen en forma continuada
  • No interactuen amb el usuari


manual

$ sudo apt-get install mysql

$ sudo apt-get remove mysql

Així no desapareix completament perquè instal·la més coses, per desintalar el mysql hem de desinstal·lació el paquet dependències es a dir per borrar el mysql s'hauria de posar

$ sudo apt-get remove mysql-server-5.1


Fitxers instal·lats

el entorn gràfic es un problema perquè no saps que instal·les.


$ dpkg -l \ grep mysql

Surten tots els packets que tens al SO

-l = list


ii libdbd-mysql-perl 4.016-1 Perl5 database interface to the MySQL database

ii libmysql-java 5.1.10+dfsg-2ubuntu1 Java database (JDBC) driver for MySQL

ii libmysqlclient16 5.1.49-1ubuntu8.1 MySQL database client library

ii libqt4-sql-mysql 4:4.7.0-0ubuntu4.3 Qt 4 MySQL database driver

ii mysql-client-5.1 5.1.49-1ubuntu8.1 MySQL database client binaries

ii mysql-client-core-5.1 5.1.49-1ubuntu8.1 MySQL database core client binaries

rc mysql-cluster-server-5.1 7.0.9-1ubuntu7 MySQL database server binaries

ii mysql-common 5.1.49-1ubuntu8.1 MySQL database common files, e.g. /etc/mysql/my.cnf

ii mysql-server 5.1.49-1ubuntu8.1 MySQL database server (metapackage depending on the latest version)

ii mysql-server-5.1 5.1.49-1ubuntu8.1 MySQL database server binaries and system database setup

ii mysql-server-core-5.1 5.1.49-1ubuntu8.1 MySQL database server binaries

ii mysql-workbench-gpl 5.2.33-1ubu1010 MySQL Workbench

ii php5-mysql 5.3.3-1ubuntu9.5 MySQL module for php5


libqt entorn grafic.


Control del servei MYSQL

con s'arranca o s'apaga

$ sudo /etc/init.d/mysql

reload es actualitzar el servei sense apagar-lo

$ sudo dpkg-reconfigure mysql-server-5.1

Per recordar el pass el servei espara duran aquesta comanda.

  • Mirar si esta el port obert
$ nmap localhost

surtira el servei Mysql, perquè sol esta configurat per a local.

$ nmap IP 

no surtir el servei MySQL

$ sudo nc -l -p 3306

La comanda nc permet obrir sockets

los primers 1024 pots son per al super usuari.


  • una altra forma per comprovar
$ ps aux | grep mysql


versions modernes tenen una altra comanda:

$ sudo service mysql restart

per matar la el servei

$ sudo kill 4130

$ sudo kill -9 4130 

el 9 significa que a d'acabar al instant.

Configuració

$ dpkg -L mysql-server-5.1 | grep etc


My.cnf

Principal fitxer de configuració del mysql my.cnf

No el portava perquè es dinàmic sa creat duran la instal·lació.

com podem consultar l'arxiu sol mirant l'important traient els comentaris.

grep

el grep es filtrar un fitxer, aqui es filtra que no tingui "#"

$cat /etc/mysql/my.cnf |grep -v '^#'

el símbol ^ que indica començament de línia

si vols modificar un fitxer d'aquests entrem a la carpeta creem una copia.

$ 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"


  • /var/run conte tot allò que esta en funcionament.

[mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0

 nice es la prioritat que entri a la cpu 

usuari:

mysql si algu entra a este servei sol podrà fer el que puge fer el usuari mysql cuan l'inicies i fa un subproces i l'executa amb l'usuari mysql

practica

que un altre alumne puge entrar al servidor mysql.

usem la següent comanda

$ sudo geany /etc/mysql/my.cnf

I en l'apartat bind-address = 127.0.0.1 per la següent línia bind-address = 192.168.202.103

Carlesrisa my.cnf1.png

Per poder que els altres de la xarxa puguin entrar.

Ara reiniciem el servei amb la següent comanda

$ sudo service mysql restart

I ja podem veure el port obert amb la comanda

$ nmap 192.168.202.234

Carlesrisa my.cnf2.png

log

i volem veure errors /var/log/mysql/error.log ens dirà els errors de mysql, són problemes que tingui el servidor.

Entorn gràfic

instalacio del admin

$ sudo apt-get install mysql-admin
$ dpkg -L mysql-admin | grep bin

Es un eïna per administrar el sevidor.

Posem localhost el usuari i la pass

status informacio del servidor

Comanda per accedir a un servidor mysql duna maquina servidor sense entorn gràfic amb el programa d'entorn gràfic

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


Una altra eina

mysql-query-browser


$ install mysql-query-browser


exercici replica servidor

Slave

Editem la configuració de l'esclau:

$ sudo joe /etc/mysql/my.cnf

[...]
server-id=2
master-connect-retry=60
replicate-do-db=webfaltes
[...]

El server-id ha de ser únic.

$ 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;
> quit;

I:

/usr/bin/mysqladmin --user=root --password=passteva stop-slave 


com jo ting l'arxiu de la BD al home no entro a cap lloc faig directament la comanda.


mysql -u root -ppassteva webfaltes < webfaltes.sql

Connectem de nou:

$ mysql -u root -p

I executem:

> CHANGE MASTER TO MASTER_HOST='192.168.202.112', MASTER_USER='slave_user', MASTER_PASSWORD='123456789', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=106;

On:

  • MASTER_HOST: és la IP del master
  • MASTER_USER: és l'usuari que té permisos per fer repliques.
  • MASTER_PASSWORD:la paraula de pas de l'usuari anterior.
  • MASTER_LOG_FILE: és el nom del fitxer que vau obtenir amb l'ordre SHOW MASTER STATUS al master
  • MASTER_LOG_POS: és la posició que vau obtenir amb l'ordre SHOW MASTER STATUS al master

Ara activem l'esclau:

START SLAVE;

comprovem l'estat:

SHOW SLAVE STATUS \G
Un exemple:
mysql> SHOW SLAVE STATUS \G;
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 192.168.202.112
                 Master_User: slave_user
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000001
         Read_Master_Log_Pos: 106
              Relay_Log_File: risalol-relay-bin.000002
               Relay_Log_Pos: 251
       Relay_Master_Log_File: mysql-bin.000001
            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: 408
             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: 
1 row in set (0.00 sec)

comprovació