SQL
MySQL
- base de données SQL open source
- fonctionne sur le reseau tcp/ip via le port 3306 ou en socket (local)
- infos Twitter : @MySQL
Liens
Tutorials - Howto
Storage engines
Choose the type of database storage most appropriate for your particular needs
- If no transactions, you can use the MyISAM storage engine for max perf.
- If you need row-level locking and transaction support, you can use the InnoDB (
InnoDB
est
utilisé dans de grands systèmes complexes, avec forte charge) or Berkeley DB (BDB) storage engines.
- InnoDB : transactionnel, lock (verrou) au niveau ligne
Outils
- Outils "MySQL AB"
- Autres outils
- Comparaison de 4 outils
- PHPMyAdmin (SourceForge)
- fichier de conf
- Admin, création de database, de table, exécution de commande SQL, etc.
- Wamp (Windows, Apache, MySQL, SQL Buddy, PHP, PHPMyAdmin
(doc fr), XDebug) - tutoriel
- ++ possibilité d'ajouter autant de versions d'Apache, MySQL et PHP que l'on veut.
- ++ gère les (in)compatibilités de versions d'Apache et de PHP.
- ++ Wampee (version portable, sur disque dur ou clé USB).
- Lamp (Linux, Apache, MySQL, PHP)
- EasyPHP
- SQLMaestro - une version gratuite et une version payante.
- JasperReports DBA Dashboard (article
| download) open source application automate monitoring and
statistical data collection about MySQL Servers
- Convertir une database vers MySQL
Admin
Doc MySQL en ligne
- En ligne
- En local :
- Linux : /usr/share/doc/Mysql/manual_toc.html
Fichiers
- Fichier de configuration (peut être modifié dans les options de démarrage de mysqld)
- Windows : my.ini
- C:\ouEstInstalléMySQL\my.ini
- Linux : my.cnf
- /etc/my.cnf ou /etc/mysql/my.cnf
- /ouEstInstalléMySQL/data/my.cnf (server-specific options)
- (@localstatedir@ for this installation)
- ~/.my.cnf (user-specific options)
- Stockage des tables
et stuctures
- Linux : /var/lib/mysql ou /ouEstInstalléMySQL/data
- Windows : C:\ouEstInstalléMySQL\data
- Logs, erreurs
Création d'une base de données
- Manuellement
- mysql -u root -p -P 3306
- create madatabase
- commandes SQL dans le shell MySQL, ou :
- source fichier.sql
- Par un script SQL (au lieu de taper le code SQL dans le shell MySQL)
- mysql -u root -p < C:\fichier.sql
Modifications d'une base de données
- mysql -u root -p
- connect madatabase (ou : use madatabase)
- commandes SQL dans le shell MySQL, ou :
- source fichier.sql
Démarrage/Arrêt
- Manuellement
- Linux
- service mysqld start | stop | restart (Red Hat - Fedora - Mandrake, etc)
- /etc/init.d/mysql start | stop | restart (Red Hat, etc.)
- Windows
- mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server x.y\my.ini"
- --skip-name-resolve pour ne pas résoudre les hostnames
- --language=french (->messages d'erreur MySQL en français)
- mysqladmin -u root -p shutdown
- Service
- Linux
- Installation
- créer le lien /etc/rc.d/rc5.d/S90mysql -> /etc/rc.d/init.d/mysql
- ou utiliser chkconfig
- chkconfig --add mysql (Red Hat, etc)
- chkconfig --level 345 mysql on (pour certains Linux)
- Démarrage/Arrêt manuel
- service mysqld start | stop | restart (Red Hat - Fedora - Mandrake, etc)
- /etc/init.d/mysql start | stop | restart (Red Hat, etc.)
- Windows
- mysqld --install MySQLxy --defaults-file="C:\Program Files\MySQL\MySQL Server
x.y\my.ini"
- Démarrage/Arrêt manuel (ou par le GUI)
Backup
- Linux
- mysqldump -u root -p madatabase > madatabase.sav
- Windows
- mysqldump -u root -p -r madatabase.sav madatabase
(In MSDOS -r option prevents new line '\n' from being
converted to '\r\n' (carriage return + line feed)
Commandes principales
- Help
- mysqladmin --help (ou -?)
- mysql --help (ou
-?)
- mysql>help
- mysql>help grant
- Connexion & utilisation d'une
database
- mysql -u root -p
- mysql> connect madatabase; ( ou mysql> use madatabase)
mysql> grant all on madatabase to vic@localhost identified by 'motdepasse';
Sécurité
- Attention : par défaut, root n'a pas de password !
- Ajouter un password pour root
- mysqladmin -u root password unPassword
- ou
- mysql
- update mysql.user set Password=PASSWORD("unPassword") where User="root";
Install-Update
- Debian
- apt-get install mysql-server
- Dans /etc/mysql/my.cnf commenter skip-networking (car par défaut le port
3306 n'est pas opérationnel)
- /etc/init.d/mysql restart
- RPM
Erreurs - Problèmes
Documentation
Debug - récolte infos
- Voir section "Tests - Vérifications"
- Doc MySQL en ligne
- Récolte infos
- sous GNU/Linux : ps -eLf | egrep 'PID|mysql'
- JasperReports DBA Dashboard (article
| download) open source application (script) automate monitoring
and statistical data collection about MySQL Servers.
- en temps réel
- watch -n 1 'mysqladmin processlist'
- mysqladmin
- mysqladmin -u root -p version (version et qques infos : uptime, threads, etc)
- mysqladmin -u root -p variables extended-status processlist > infos.res
- mysqladmin -u root -p process -i1
- mysqladmin -u root -p process -i1extended-status | grep -E 'Com_select|Qcache_hits'
- Com_select indique le nombre de fois que le select a été exécuté (p.ex.)
- => /.\ perf. : efficacité du query cache = Qcache_hits / (Com_select + Qcache_hits)
- SHOW : pour obtenir des informations sur les perfs MySQL, les
bases, tables et index
- mysql -u root -p -P 3306
- mysql> status
- mysql> show status ; (<=>
mysqladmin -u root -p extended-status)
- ou, s'il s'agit d'un esclave : mysql> show slave status\G
- mysql> show warnings ;
- mysql> show variables ;
- mysql> show processlist ;
- mysql> show full processlist ;
- mysql> show databases ;
- mysql> connect mysql; (
tables "système" de MySQL)
- mysql> show table status\G
- mysql> show table status like "une_table"\G
- mysql> connect madatabase ; (
ou mysql> use madatabase)
- mysql> show tables ;
- mysql> describe une_table ;
- EXPLAIN sert à optimiser et deboguer les requêtes
- mysql> explain SELECT ...
- InnoDB
- SHOW INNODB STATUS \G
- show variables like '%inno%' ;
- Erreurs et logs
- Mode verbose
- Logs
- Erreurs
- Vérifier/optimiser/réparer les tables (voir Administration du serveur et ici)
avec
- myisamchk
les syntaxes SQL CHECK TABLE
et REPAIR TABLE
- En cas de Stack trace : Infos et procédures dans le
"Ref Manual fr"
- En cas de bogue
- http://bugs.mysql.com
- shell-script mysqlbug (crée un rapport de bug et l'envoie par email à mysql@lists.mysql.com)
- Support
- Dossiers "debug" du Manuel de
réf
- Outils
Tests - Vérifications
- Linux : voir si mysqld est configuré pour se lancer dans le niveau d'init courant :
- [root]# chkconfig mysql
[root]# echo $?
0
- Voir si mysqld tourne
- mysqladmin -u root -p ping
mysqladmin -u root -p status
mysqladmin -u root -p extended-status
mysqladmin -u root -p processlist
- mysqlshow -u root -p
mysqlshow madatabase -u root -p
- mysql -u root -p -e "SELECT LASTNAME,FIRSTNAME FROM CONTACTS"
madatabase
- mysql -u root -p
- mysql> SHOW databases;
- mysql> USE madatabase;
- mysql> SHOW tables;
- mysql> SELECT LASTNAME,FIRSTNAME FROM CONTACTS;
- quit
Optimiser les performances
- Blogs
- Liens
- Fichier de config
set-variable = max_connections = nombre_désiré
set-variable = max_user_connections =
nombre_désiré
set-variable = table_cache=
max_user_connections x nb_de_JOIN_dans_une_requête
- mysql_explain_slow_log
mysql_explain_log : fait partie de MySQL (It can be used to feed general
MySQL logs back into MySQL and use EXPLAIN on all statements to analyse which indexes have been used and which queries didn't use any index)
- Commandes MySQL
- EXPLAIN sert à optimiser et deboguer les requêtes
- mysql> explain SELECT ...
- Outils
Surveillance (monitoring)
MySQL HP SPI |
Monitor availability of MySQL
servers, Monitor CPU Utilization by Server ,Monitor Memory Utilization by server and Process Monitoring. |
Sections du MySQL
Reference Manual | en local
Astuces
- Astuces sur le web
- Quelques astuces
- Compléter les commandes à l'aide de la touche Tab
- Changer le prompt, exemple, afficher le nom de la database
- Paginer l'affichage
- mysql> pager more
- mysql> nopager (pour arrêter la pagination)
- Afficher les infos
- verticalement : utiliser \G
à la place de ;
- mysql> show table status;
- mysql> show table status\G
- dans un fichier
