[[mysql]]
Piste: » mysql
MySQL, serveur de bases de données relationnelles
MySQL est un système de gestion de bases de données relationnel (SGBDR) libre, open-source et gratuit. Il est performant et très populaire. Il est multi-threadé et multi-utilisateurs.
Installation
Installez le paquet mysql-server.
Utilisation
Savoir si MySQL est lancé
Pour savoir si le serveur MySQL est lancé, tapez la commande suivante dans un terminal :
sudo ps -A | grep mysql
Si MySQL est en fonctionnement, vous devriez obtenir une ligne semblable à :
8052 ? 00:00:00 mysqld
Démarrage
Pour démarrer le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql start
Redémarrage
Pour redémarrer le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql restart
Arrêt
Pour arrêter le serveur MySQL, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql stop
Rechargement de la configuration
Pour que MySQL prenne en compte les modifications de sa configuration, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql reload
Forcer la prise en compte de la nouvelle configuration
Pour forcer MySQL à recharger ses fichiers de configuration, tapez la commande suivante dans un terminal :
sudo /etc/init.d/mysql force-reload
Configuration
Lancer la console MySQL
- Si vous n'avez pas défini de mot de passe (déconseillé) :
mysql -u root
- Si vous avez défini un mot de passe :
mysql -u root -p
et tapez votre mot de passe.
Vous arriverez alors sur un prompt du type :
mysql>
Vous pouvez alors taper vos requêtes MySQL. N'oubliez pas le point-virgule à la fin de la requête. Si vous l'oubliez le prompt passe à la ligne.
mysql> select * from
->
Ce passage vous indique que la requête n'est pas terminée. Vous pouvez entrer vos requêtes de cette façon sur plusieurs lignes et enfin la clôturer avec le « ; ».
Sélectionner la base de données à utiliser
Soit directement lorsque vous lancez le client mysql en ligne de commande :
mysql -u root -p votre_base
Soit une fois connecté à mysql en tapant :
mysql> use votre_base;
Ajouter ou changer le mot de passe de root
Pour changer le mot de passe de l'utilisateur root (qui n'est pas le même que l'utilisateur root du système), tapez la commande suivante dans un terminal :
sudo mysqladmin -u root password nouveau_mot_de_passe
Redéfinir de force le mot de passe de root
Si vous avez perdu votre mot de pass Root pour MySQL, suivez ces quelques étapes :
On stoppe le serveur MySQL :
sudo /etc/init.d/mysql stop
On se connecte au serveur sans tenir compte des privilèges utilisateurs :
sudo /usr/bin/mysqld_safe --skip-grant-tables & mysql -h localhost
Nous allons utiliser la table contenant les paramètres de MySQL :
use mysql
On met en place le nouveau mot de passe :
update user set password = password('<votre_mot_de_passe>') where user = 'root' and host='localhost';
(remplacez <votre_mot_de_passe> par le mot de passe de votre choix)
On quitte le prompt de MySQL :
quit
On redémarre le serveur MySQL en utilisation normale :
sudo /etc/init.d/mysql restart
Une autre méthode beaucoup plus simple :
sudo /etc/init.d/mysql reset-password
Utiliser un autre numéro de port
Pour activer la connexion à MySQL via le port 3306, commentez la ligne suivante dans le fichier /etc/mysql/my.cnf (en ajoutant # au début de la ligne) :
skip-networking
Connexions entrantes
Par défaut, MySQL n'écoute que les connexions venant de localhost (127.0.0.1), c'est-à-dire du système sur lequel il est installé.
Pour pouvoir accéder à MySQL depuis un autre ordinateur, ajoutez la ligne suivante au fichier /etc/mysql/my.cnf dans la section « [mysqld] » :
bind-address = x.x.x.x
où x.x.x.x est l'adresse ip de l'interface sur laquelle MySQL doit écouter. Cela permet de n'écouter que sur une ip privée si vous avez plusieurs interfaces réseaux.
Vous pouvez mettre 0.0.0.0 si MySQL doit écouter les connexions venant de toutes les interfaces réseaux, et donc être totalement accessible. Cela peut être dangereux si votre serveur est connecté à Internet directement.
Configuration en UTF-8
Il suffit d'ajouter les deux lignes suivantes à la fin de la section « [mysqld] » du fichier /etc/mysql/my.cnf :
character-set-server=utf8 skip-character-set-client-handshake
puis de relancer le serveur mysql :
sudo /etc/init.d/mysql restart
Vous pouvez vérifier le résultat une fois loggé dans mysql grâce à la commande suivante :
SHOW VARIABLES LIKE 'char%';
Résultat :
mysqld> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysqld/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Quelques requêtes SQL
Toute ces commandes sont a entrer dans le prompt de mysql une fois connecté au serveur
Base de donnnée
Créer une base de données
CREATE DATABASE nom_de_la_base;
Liste des bases de données
SHOW DATABASES;
Tables
Liste des tables de la base de données active
SHOW TABLES;
Structure d'une table
DESCRIBE nom_table;
Renommer une table
ALTER TABLE nom_table RENAME AS nouveau_nom;
Pour la syntaxe des requêtes SQL, reportez-vous à la documentation MySQL.
Utilisateurs
Créer un utilisateur
CREATE user "nom_utilisateur"@"localhost";
Supprimer un utilisateur
DROP user nom_utilisateur@localhost;
Privilèges
Donner tous les droits sur une base de données à un utilisateur précis
GRANT ALL ON nom_base.* TO nom_utilisateur@localhost;
Supprimer les droits sur une base de données à un utilisateur précis
REVOKE ALL privileges ON nom_base.* FROM nom_utilisateur@localhost;
Sauvegarde et importation
Pour exporter la base de donnée « maBase », utilisez la commande :
mysqldump -u root -p maBase > maBase_backup.sql
Ceci fera l'export dans un fichier « maBase_backup.sql ».
Pour importer une base de données ou une sauvegarde sur « maBase », utilisez la commande :
mysql -u root -p maBase < maBase_backup.sql
Puis tapez votre mot de passe.
Si on n'a pas accès à mysql-client (par exemple si on a récupéré un disque dur dont le système est mort), on peut sauvegarder le répertoire « /var/lib/mysql/ » dans lequel chacune des bases est enregistrée dans un répertoire portant son nom.
D'autres commandes telles que la suppression des tables, de la base, l'ajout des données dans la base des données, etc. peuvent être trouvées sur le site de documentation de MySQL.
Contributeurs : _Enchained, Hugo, Oscar Nsarhaza, Ner0lph.