ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[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

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 vous souhaitez mettre en place une solution de sauvegarde automatique de bases de données à intervalle régulier, rendez-vous sur le tutoriel traitant de la sauvegarde automatique de bases de données via cron.

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.


mysql.txt · Dernière modification: Le 18/06/2008, à 17:52 par Ner0lph
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL