44
Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Embed Size (px)

Citation preview

Page 1: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

sudo aptitude install mysql-server-5.1

Installation par système de paquets

Puis une confirmation de ce mot de passe :

Page 2: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Installation avec les binaires

wget fichier.tar.gz tar zxf fichier.tar.gz

Création de l’utilisateur et du groupe mysql :

groupadd mysql useradd -g mysql mysql

Positionnement des droits :

chown -R mysql . chgrp -R mysql .

Exécution du script mysql_install_db :

./scripts/mysql_install_db --user=mysql

Page 3: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Démarrage du serveur Toutes les méthodes décrites pour lancer le serveur MySQL nécessitent d’être connecté en tant que root.

Script mysql.server

$ sudo /etc/init.d/mysql start

Script mysqld_safe

Le script mysql.server fait appel à mysqld_safe.

mysqld_safe lance mysqld et crée automatiquement un journal d’erreur. Il s’agit de la méthode qui est recommandée dans la documentation officielle pour lancer le serveur

Voir manuel pour les options de démarrage

Page 4: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Invocation directe de mysqld

/chemin/vers/mysqld --defaults-file=/chemin/vers/my.cnf --user=mysql &

Arrêt du serveur

$ sudo /etc/init.d/mysql stop

mysqladmin

$ mysqladmin -uroot -p shutdown

Page 5: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Sécurisation de l’installation

Quel que soit le mode d’installation, le script mysql_secure_installation, livré avec toutes les distributions, peut vous aider en réalisant quelques vérifications basiques.

Ce script :

vérifie que l’utilisateur root a un mot de passe ; propose de supprimer les utilisateurs anonymes ; supprime le compte root distant ; supprime la base test ; propose de recharger les privilèges.

Ce script reste simple et limité mais permet de pointer les erreurs les plus grossières au niveau de la sécurité.

Page 6: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Installation de plusieurs instances

À chaque nouvelle installation sur une machine hébergeant déjà une ou plusieurs instances, il vous faut absolument configurer un certain nombre de paramètres de manière à isoler complètement votre nouvelle instance. Ces paramètres sont les suivants :

Port et socket pour les connexions des clients. Répertoire de données. Répertoire de journaux. Tablespace pour InnoDB (le tablespace se trouve par défaut dans le répertoire de données, le choix d’un répertoire de données est donc normalement suffisant). server-id (ce paramètre peut échapper car il ne devient crucial qu’avec la réplication).

Page 7: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Installation sous Windows

My.ini --- fichier de configuration

Reglage dans my.ini

[client] port = 3307 [mysqld] port = 3307 basedir = C:/mysql5141 server-id = 11

Page 8: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Installation sous Windows

Démarrage du serveur

Installer Mysql en tant que service :C:\>chemin/vers/mysqld --install MySQL51 –defaults -file=chemin/vers/my.ini

Pour supprimer un service :

C:\>chemin/vers/mysqld --remove MySQL51

Lancer le serveur

C:\>chemin/vers/mysqld --defaults-file=chemin/vers/my.ini

net start XXX

Page 9: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Installation sous Windows

Arrêt du serveur

net stop XXX

C:\>mysqladmin -uroot -p shutdown

Page 10: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Mise à jour de Mysql

Arrêtez le serveur et remplacer les anciens binaires par les nouveaux

Lancer ensuite mysql_upgrade

Page 11: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql

Mysqld

Page 12: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Mysql

Architecture Mysql

Page 13: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql

Page 14: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql

L’utilisation des disques:

Les schémasFichiers .frmLes journaux, les journaux binaires et journaux d’erreurs du serveurLes journaux du moteur du stockage (innodb), la réplication, les fichiers de configurationsLes déclencheurs et les triggers

Stockage par défaut dans datadir

Page 15: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql

Stockage par défaut dans datadir

Répartir la charge entre plusieurs disques :

Exemple d’architecture multidisques:Disque pour le systèmeDisque pour les binairesDisque pour les fichiers temporaires tempdirDisque pour les journaux

Page 16: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql

Page 17: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql Le moteur de stockage

Utiliser plusieurs moteurs de stockage

Page 18: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Architecture Mysql La journalisation

4 types de journaux : le journal binaire (binary log) le journal des requêtes lentes (slow query log) le journal général (general query log) le journal des erreurs (error log)

le journal binaire (binary log) : Insert, update, delete etc…C’est le journal central de Mysql, sert aussi pour la réplication

voir section 7 de l’architecture)

Page 19: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Configuration du serveur

Lors de la compilationFichier my.cnf / my.iniEn tant que paramètre de mysqld au lancementDynamiquement pendant l’exécution du serveur commande SET

Voir section 2 du chapitre configuration du serveur

Page 20: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité

Sécuriser l’installation

Contrôler les droits

shell> groupadd mysql shell> useradd -g mysql mysql

shell> cd /usr/local/mysql/ shell> chown R root . shell> chown -R mysql data shell> chgrp R mysql .

Mysqld ne doit pas tourner sous root

Page 21: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité

shell> mysql -u root # connexion au serveur avec l’utilisateur root sans mot de passe mysql> SET PASSWORD FOR root@localhost = password(’m0T2p4ss3’); /* la commande set password permet de mettre un mot de passe à un compte utilisateur */

Donner un mot de passe à root

Renommer le compte administrateur

RENAME USER ’root’@’localhost’ TO ’leader’@’localhost’;

Supprimer les comptes anonymes

Supprimer le schémas test

Page 22: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité Gestion des utilisateurs

Base système Mysql :UserDbtables_privcolumns_privprocs-priv

Commandes de gestion des droits :

CREATE USERGRANTREVOKEDrop userShow grants

Page 23: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité

mysql> SHOW PRIVILEGES;

Page 24: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

mysql> GRANT all ON test.* TO momo IDENTIFIED BY “titi ”; mysql> GRANT select,insert ON mysql.* TO momo@localhost identified by "titi" [with GRANT OPTION];

La sécurité

Privilèges globaux, ne s'appliquent pas à UNE base particulière : Reload : permission de relancer le serveur mysql et d'ecrire les tables sur disques. Shutdown : droit d'arrêter le serveur “mysqld » Process : droit de contrôler les processus utilisateurs. File : droit d'écrire ou lire dans des fichiers ascii avec les commandes « load data » et « into outfile »

Page 25: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

mysql> SHOW GRANTS FOR root; mysql> SHOW GRANTS FOR 'root'@'localhost' ;

La sécurité

Visualiser les droits

Oter des permissions: REVOKE

mysql> REVOKE ALL on *.* FROM momo ;

mysql> REVOKE ALTER,DELETE,DROP on mysql.* FROM momo

mysql> REVOKE GRANT OPTION on mysql.* FROM momo@localhost mysql> REVOKE SELECT on mysql.* FROM 'momo'@'pcml.dom.fr'

Page 26: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité

à partir de la version 4.1.1 (nécessité d'enlever tous les privilèges avant de détruire l'utilisateur)

mysql> SHOW GRANTS FOR toto@localhost mysql> REVOKE ALL PRIVILEGES FROM toto@localhost mysql> DROP USER toto;

mysql> FLUSH PRIVILEGES;

Page 27: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Création d'une base avec mysqladmin

$ mysqladmin -u root -p create NOMDEBASE

$ mysqladmin -p drop NOMDEBASE

Destruction d'une base avec mysqladmin

Page 28: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Se créer une base vierge /opt/mysql/bin/mysqladmin -u root -p create ma_base Créer les tables en batch avec le script /opt/mysql/bin/mysql -u root -p < Mon_script_de_base

Page 29: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Créer plusieurs utilisateurs et affecter des droits différents à ces utilisateurs par GRANT et REVOKE Un utilisateur qui aura tous les droits sur la Base Un utilisateur qui n'aura que le droit de sélectionner Un utilisateur qui aura le droit d'écrire dans les tables et les modifier et récupérer les sélections dans un fichier

GRANT all ON test.* TO momo@localhost IDENTIFIED BY “titi ”;

Page 30: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Instructions de maintenance des Tables

BACKUP TABLE RESTORE TABLE REPAIR TABLE CHECK TABLE ANALYZE TABLE OPTIMIZE TABLE

Page 31: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Une table au format MyISAM (séquentiel indexé) se décompose en 3 fichiers :

Administration du SGBD Mysql

Page 32: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Les bases sont des répertoires, et les tables des fichiers... les opérations de sauvegarde et de backup sont donc simples!

Avec un serveur en activité, pour assurer des copies sécurisées:

mysql>LOCK TABLES; mysql>FLUSH TABLES

( assure que tous les index et données sont bien écrits avant de commencer la copie.) Hors du contrôle du serveur, et serveur arrêté, on peut faire régulièrement (cron) une simple copie des bases:

$ rsync -av /var/lib/mysql/unebase /opt/SAUVEBASE/

Sauvegarde

Administration du SGBD Mysql

Page 33: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Sauvegarde

L'utilitaire mysqldump permet de faire des sauvegardes complètes en ascii Backup :

$ mysqldump --opt database [table] > backup-file.sql $ /opt/mysql/bin/mysqldump -u root -ptoto ma_base

Restauration:

$ mysql database < backup-file.sql

Exemple 1

Administration du SGBD Mysql

Page 34: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Sauvegarde

Exemple 2

Sauvegarde d'une base complète avec toutes les tables dans datadir (/var/lib/mysql/) :

$ /usr/bin/mysqlhotcopy --debug -u root –password='titi' ma_base ficheir_de_sauvegarde Sauvegarde de la table CLIENTS de la base ma_base dans un répertoire extérieur à / var/lib/mysql :

$ /usr/bin/mysqlhotcopy --debug --addtodest -u root -- password='aaa' ma_base./CLIENTS/ "/home/momo"

Administration du SGBD Mysql

Page 35: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Vérifier les tables… réparer

• Pour vérifier et réparer des tables MyISAM

– CHECK TABLE– REPAIR TABLE

• Pour optimiser des tables MyISAM :

– OPTIMIZE TABLE– ANALYZE TABLE

• L'utilitaire « myisamchk » hors du contrôle du serveur

Administration du SGBD Mysql

Page 36: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

• analyse des tables • Faire une sauvegarde avec mysqldump• Faire une sauvegarde avec mysqlhotcopy • Faire une sauvegarde avec backup Utiliser les commandes Check Repair Analyse Optimize mysqlchk

Résumé

Administration du SGBD Mysql

Page 37: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité Perte de mot de passe

Arrêter le serveurRedémarrer :*

hell> mysqld --skip-grant-tables --skip-networking --console -- socket=/tmp/maintenance.sock &

Voir procédure complète dans section 3 gestion de la sécurité

Création des utilisateurs

CREATE USER ’utilisateur’@’hôte’ IDENTIFIED BY ’mot_de_passe’

Donner des droits

GRANT type_de_droits ON portée_des_droits T O compte_utilisateur.

Section 3 sécurité

Page 38: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

La sécurité

Utiliser : SSLSection 7

Renforcer la sécuritéSection 8

Utiliser le chiffrement des donnéesSection 9

Page 39: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

Page 40: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Exemples de scripts pour windows (.bat):@ECHO OFFfor /f "tokens=1-4 delims=/ " %%a in ('date/t') do (set dw=%%aset mm=%%bset dd=%%cset yy=%%d)

SET bkupdir=C:\path\to\where\you\want\backupsSET mysqldir=D:\path\to\mysqlSET dbname=this_is_the_name_of_my_databaseSET dbuser=this_is_my_user_name

@ECHO Beginning backup of %dbname%...%mysqldir%\bin\mysqldump -B %dbname% -u %dbuser% | gzip > %bkupdir%\dbBkup_%dbname%_%yy%%mm%%dd%.sql.gz@ECHO Done! New File: dbBkup_%dbname%_%yy%%mm%%dd%.sql

Administration du SGBD Mysql

Page 41: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Remote Host backup with linked PATH to mysqldump:0 1 * * * mysqldump -h mysql.host.com -uusername -ppassword --opt database > /path/to/directory/filename.sql

Remote Host backup:0 1 * * * /usr/local/mysql/bin/mysqldump -h mysql.host.com -uusername -ppassword --opt database > /path/to/directory/filename.sql

Local Host mysql backup:0 1 * * * /usr/local/mysql/bin/mysqldump -uroot -ppassword --opt database > /path/to/directory/filename.sql

Exemples de planification avec crontab dans linux

Administration du SGBD Mysql

Page 42: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Exemple de sauvegarde dans un fichier .xml

shell> mysqldump --xml -u root pubs > c:\pubs.xml

Administration du SGBD Mysql

Page 43: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql

>Mysql –u root –p –html ‘’—execute=select * from auteurs; ’’ \ –default-character-set=latin1 pubs >auteurs.html

Résultat

Page 44: Administration du SGBD Mysql sudo aptitude install mysql-server-5.1 Installation par système de paquets Puis une confirmation de ce mot de passe :

Administration du SGBD Mysql