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)

Conceptes

Història de MySQL

És un Sistema de Gestió de Bases de Dades Relacional, multi fil i multi usuari, que utilitza el llenguatge SQL (Structured Query Language). Existeixen tres tipus de bases de dades:

  • Relacionals
  • Jeràrquiques
  • en Xarxa

Arquitectura

L'arquitectura de MySQL és Client/Servidor.

Tenir una arquitectura client/servidor significa que el servidor necessita del client però no al inrevés, ja que, un client pot fer funcions de servidor.

El paquet client és mysql-client-5.1 o similar(depenent de la versió).

El paquet del servidor és mysql-server

Instal·lació

Per instal·lar el mysql hi ha 2 formes:

Comanda tasksel

La comanda tasksel permet instal·lar tasques en un sistema Debian o derivats.

La comanda tasksel utilitza unes llibreries d'entorn gràfic anomenades ncourses

Tasksel.png

Instal·lació manual

Podem instal·lar el mysql server com un paquet amb la comanda:

$ sudo apt-get install mysql-server

Desinstal·lació manual

I per desinstal·lar el paquet utilitzarem la comanda

$ sudo apt-get remove mysql-server-5.1

IMPORTANT: Alhora de desinstal·lar el mysql-server hem de mirar que desinstal·lem el paquet important, en aquest cas és mysql-server-5.1

Comprovació de fitxers

Per comprovar que s'han instal·lat tots els paquets adequadament utilitzem la comanda:

$ dpkg -l | grep mysql
ii  libdbd-mysql-perl                     4.016-1                                           Perl5 database interface to the MySQL  database
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
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  php5-mysql                            5.3.3-1ubuntu9.5                                  MySQL module for php5


Per saber quins fitxers s'han instal·lat amb el paquet mysql-server-5.1

$ dpkg -L mysql-server-5.1 
/.
/etc
/etc/apparmor.d
/etc/apparmor.d/force-complain
/etc/apparmor.d/usr.sbin.mysqld
/etc/init.d
/etc/logrotate.d
/etc/logrotate.d/mysql-server
/etc/mysql
/etc/mysql/conf.d
/etc/mysql/conf.d/mysqld_safe_syslog.cnf
/etc/mysql/debian-start
/etc/init
/etc/init/mysql.conf
/etc/logcheck
/etc/logcheck/ignore.d.workstation
/etc/logcheck/ignore.d.workstation/mysql-server-5_1
/etc/logcheck/ignore.d.server
/etc/logcheck/ignore.d.server/mysql-server-5_1
/etc/logcheck/ignore.d.paranoid
/etc/logcheck/ignore.d.paranoid/mysql-server-5_1
/usr
/usr/bin
/usr/bin/msql2mysql
/usr/bin/myisamchk
/usr/bin/myisamlog
/usr/bin/myisampack
/usr/bin/mysql_convert_table_format
/usr/bin/mysql_fix_privilege_tables
/usr/bin/mysql_secure_installation
/usr/bin/mysql_setpermission
/usr/bin/mysql_tzinfo_to_sql
/usr/bin/mysql_zap
/usr/bin/mysqlbinlog
/usr/bin/mysqld_multi
/usr/bin/mysqld_safe
/usr/bin/mysqlhotcopy
/usr/bin/mysqltest
/usr/bin/perror
/usr/bin/replace
/usr/bin/resolve_stack_dump
/usr/bin/resolveip
/usr/share
/usr/share/mysql
/usr/share/mysql/debian-start.inc.sh
/usr/share/mysql/echo_stderr
/usr/share/mysql/errmsg.txt
/usr/share/mysql/mysqld_multi.server
/usr/share/mysql/mysql_fix_privilege_tables.sql
/usr/share/mysql/mysql_test_data_timezone.sql
/usr/share/mysql/config.huge.ini
/usr/share/mysql/config.medium.ini
/usr/share/mysql/config.small.ini
/usr/share/mysql/ndb-config-2-node.ini
/usr/share/apport
/usr/share/apport/package-hooks
/usr/share/apport/package-hooks/source_mysql-dfsg-5.1.py
/usr/share/doc
/usr/share/doc/mysql-server-5.1
/usr/share/doc/mysql-server-5.1/examples
/usr/share/doc/mysql-server-5.1/examples/my-large.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-medium.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-small.cnf
/usr/share/doc/mysql-server-5.1/examples/my-huge.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-innodb-heavy-4G.cnf.gz
/usr/share/doc/mysql-server-5.1/mysqld.sym.gz
/usr/share/doc/mysql-server-5.1/README.Debian.gz
/usr/share/doc/mysql-server-5.1/changelog.Debian.gz
/usr/share/doc/mysql-server-5.1/copyright
/usr/share/doc/mysql-server-5.1/NEWS.Debian.gz
/usr/share/doc/mysql-server-5.1/EXCEPTIONS-CLIENT.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/mysql-server-5.1
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/myisamlog.1.gz
/usr/share/man/man1/myisampack.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqld_multi.1.gz
/usr/share/man/man1/mysqld_safe.1.gz
/usr/share/man/man1/mysql_fix_privilege_tables.1.gz
/usr/share/man/man1/mysqlhotcopy.1.gz
/usr/share/man/man1/mysql_secure_installation.1.gz
/usr/share/man/man1/mysql_setpermission.1.gz
/usr/share/man/man1/mysqltest.1.gz
/usr/share/man/man1/mysql_zap.1.gz
/usr/share/man/man1/perror.1.gz
/usr/share/man/man1/replace.1.gz
/usr/share/man/man1/resolveip.1.gz
/usr/share/man/man1/resolve_stack_dump.1.gz
/usr/share/man/man1/innochecksum.1.gz
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/myisamchk.1.gz
/usr/share/man/man1/mysql_convert_table_format.1.gz
/usr/share/man/man1/mysql_tzinfo_to_sql.1.gz
/usr/lib
/usr/lib/mysql
/usr/lib/mysql/plugin
/usr/lib/mysql/plugin/ha_innodb_plugin.so.0.0.0
/var
/var/lib
/var/lib/mysql-upgrade
/etc/init.d/mysql
/usr/share/man/man1/mysqltest_embedded.1.gz
/usr/lib/mysql/plugin/ha_innodb_plugin.so
/usr/lib/mysql/plugin/ha_innodb_plugin.so.0

Control del servei MySQL

Per arrencar:

$ sudo /etc/init.d/mysql start

Per aturar:

$ sudo /etc/init.d/mysql stop

Per reiniciar:

$ sudo /etc/init.d/mysql restart

Per actualitzar el servei sense parar-lo

$ sudo /etc/init.d/mysql reload

NOTA: a partir de la versió 10.10 que hem d'utilitzar una comanda anomenada service per parar, engegar o reiniciar el servei

$ sudo service mysql start
$ sudo service mysql stop
$ sudo service mysql restart

la forma de matar el servei de mysql és:

$ sudo kill 4130

IMPORTANT: kill -9 mata el servei instantàniament a no ser que tinguis un error greu al sistema

Arxius de configuració

Per saber si el paquet de mysql s'ha instal·lat correctament s'ha d'utilitzar la comanda

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


Les llibreries de Mysql estan guardades a /var/lib/mysql

my.cnf

Aquest fitxer és crea de forma dinàmica al instal·lar el mysql.

Per poder veure només les línies important del fitxer utilitzarem la comanda

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

la ruta /var/run/mysqld/mysqld.sock

/var són arxius /run

hi ha 2 tipus de conexió amb mysql

  • mysql_safe: mysql de forma segura

on nice vol dir la prioritat.

  • mysqld:

datadir --> és on estan guardades les bases de dades. bind-address és l'adreça en la qual posem a escoltar el servidor.

Exemple.jpg


!includedir /etc/mysql/conf.d/ inclou tots els fitxers de tota la carpeta de conf.d

Fitxers de log

Per mirar els fitxers d'errors s'ha d'anar a l'arxiu /var/log/mysql/error.log


Eines gràfiques

Mysql admin

Mysql admin és una eina gràfica de servidor que permet administrar i poder fer manteniment de les nostres bases de dades.


$ sudo apt-get install mysql-admin

Per comprovar els fitxers

$ sudo dpkg -L mysql-admin | grep bin
/usr/bin
/usr/bin/mysql-admin
/usr/bin/mabackup
Mysqladminportada alex.png

Ens demana usuari i contrasenya per entrar al servidor, una volta li posem aquests 2 paràmetres entrem dins de l'aplicació.

  • Server Information: Recull informació del servidor i del host.
Mysqladminprincipal alex.png
  • Service Control: Mostra en quin estat està el servidor.
Mysqladminservice alex.png
  • Startup Parameters: Indica els paràmetres que li podem posar al servidor.
Mysqladminparameters alex.png
  • User Administration: Tot el que es pot fer sobre administració d'usuaris
Mysqladminadministration alex.png
  • Server Connections: Connexions de servidor
Mysqladminconnections alex.png
  • Health: Ensenya la monitorització, rendiment...
Mysqladminhealth alex.png
  • Server logs: Informació sobre canvis, errors...
Mysqladminlog alex.png
  • Backup: Còpies de seguretat del servidor
Mysqladminbackup alex.png
  • Restore Backup:
Mysqladminrestore alex.png

Mysql-query-browser

Instal·lació de l'aplicació Mysql-query-browser

$ sudo apt-get install mysql-query-browser

Pantalla d'inici

Query browser alex.png

Pantalla de benvinguda

Query browser principal alex.png

En aquesta aplicació hi ha vàries pestanyes interessants:

  • Schemas
  • Bookmarks
  • History
  • Syntax
  • Functions
  • Params
  • Trx
Query browser opcions alex.png





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

Aquesta comanda utilitza un tunel xifrat de la base de dades del IES de l'ebre fins l'ordinador de sergi amb el port cambiat

Comandes

Amb aquesta comanda mirem quines comandes podem utilitzar amb el mysql client.

dpkg -L mysql-client-5.1 | grep bin | more


Comanda MySQL

Comanda per entrar al mysql

mysql -h localhost -u root -p

S'indica a quina màquina entrem, l'usuari i que et demani la contrasenya

  • Ensenya totes les bases de dades
SHOW DATABASES;
  • Entrar en una base de dades, en aquest cas, a la base de dades mysql
USE mysql;

Bases de dades mestres

MySQL

which mysql
/usr/bin/mysql

El que més utilitzarem d'esta base de dades, es la taula USERS.

Entrem a una taula indicant-li els atributs que natros vulguem

mysql> SELECT user.User,user.Password,user.Host FROM user;
+------------------+-------------------------------------------+-----------------+
| User             | Password                                  | Host            |
+------------------+-------------------------------------------+-----------------+
| root             | *1871A45C7F1DCDA266129DDB382A711516690405 | localhost       |
| root             | *1871A45C7F1DCDA266129DDB382A711516690405 | pc-imatge       |
| root             | *1871A45C7F1DCDA266129DDB382A711516690405 | 127.0.0.1       |
| debian-sys-maint | *154417BB7508EC3FCC1C847364475E1FEF428254 | localhost       |
| phpmyadmin       | *1871A45C7F1DCDA266129DDB382A711516690405 | localhost       |
| alexcastella     | *86848D003A5B1F3ADD7AE0EF0AF851C1D2B1BEF1 | %               |
| kaste            | *CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D | localhost       |
| examen           | *7A8BBCB18A250055A6BB98ECFA33A8174D219504 | 192.168.202.100 |
| %                |                                           | localhost       |
| manel            |                                           | localhost       |
| manel            |                                           | %               |
| practica_mysql   | *1871A45C7F1DCDA266129DDB382A711516690405 | %               |
+------------------+-------------------------------------------+-----------------+
12 rows in set (0.00 sec)


És poden escriure múltiples formes de comanda fins que no li donem un ; la sentencia no s'executarà


Comanda Show

  • Ensenya totes les bases de dades
SHOW DATABASES;

Creem un usuari amb tots els permisos

Creem un usuari

mysql> CREATE USER 'acastella'@'localhost' IDENTIFIED BY 'prova';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'acastella'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

Torna a actualitzar la cache

mysql> FLUSH PRIVILEGES;


Crear un usuaris amb tots els permisos a una base de dades

mysql> CREATE USER 'acastella'@'localhost' IDENTIFIED BY 'prova';
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'%' WITH GRANT OPTION;


Mysqldump

dump--> volcar

agafar de una base de dades i convertir-la

El primer que crea es la estructura i desprès utilitza INSERT INTO


mysqldump -u root -p mysql > copiamysql.sql
geany copiamysql.sql


EXERCICI

<?php

echo
echo"<html>";
	echo"<body>";
		echo "holamon à";
	echo"</body>";
echo"</html>";
?>
<?php 

$USUARI='Pepito';

ECHO <<<EOF
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"></META>
</head>
<body>
<h1>Hola $USUARI!</h1>
</body>
</html>
EOF
?>

Desinstal·lació

Desinstal·lar tots els paquets que comencen per mysql-

sudo apt-get remove --purge mysql-common 
dpkg -l |grep "mysql^"

Si tenim problemes en la base de dades mysql

sudo rm -rf /var/lib/mysql

Vegeu també

Enllaços externs