É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:
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
Per instal·lar el mysql hi ha 2 formes:
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
Podem instal·lar el mysql server com un paquet amb la comanda:
$ sudo apt-get install mysql-server
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
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
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
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
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
on nice vol dir la prioritat.
datadir --> és on estan guardades les bases de dades. bind-address és l'adreça en la qual posem a escoltar el servidor.
!includedir /etc/mysql/conf.d/ inclou tots els fitxers de tota la carpeta de conf.d
Per mirar els fitxers d'errors s'ha d'anar a l'arxiu /var/log/mysql/error.log
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
Ens demana usuari i contrasenya per entrar al servidor, una volta li posem aquests 2 paràmetres entrem dins de l'aplicació.
Instal·lació de l'aplicació Mysql-query-browser
$ sudo apt-get install mysql-query-browser
Pantalla d'inici
Pantalla de benvinguda
En aquesta aplicació hi ha vàries pestanyes interessants:
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
Amb aquesta comanda mirem quines comandes podem utilitzar amb el mysql client.
dpkg -L mysql-client-5.1 | grep bin | more
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
SHOW DATABASES;
USE 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à
SHOW DATABASES;
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;
mysql> CREATE USER 'acastella'@'localhost' IDENTIFIED BY 'prova';
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'%' WITH GRANT OPTION;
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
<?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·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