Gcolpart.com by reg

HOWTO MySQL

Cette documentation est désormais rendue obsolète par une version plus récente : http://trac.evolix.net/infogerance/wiki/HowtoMySQL


Première prise en main pour un administrateur de base de données MySQL sous Unix/Linux.

Je passe les détails de l'installation d'un serveur MySQL.
Sous Debian, on fera :
# apt-get install mysql-server mysql-common
Passons aux choses sérieuses.
Tout d'abord, attention, les utilisateurs UNIX sont différents des utilisateurs MySQL. La toute première fois, en root, taper :
# mysql
On obtient alors un message ressemblant à:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 133 to server version: 3.23.49-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> 
Vous êtes donc connecté pour la première fois à votre serveur mysql.
Attention, tapez tout de suite:
mysql> quit
Bye
#
On retrouve la main en ligne de commande.
Il faut ABSOLUMENT mettre un mot de passe à root !
# mysqladmin  password "motdepasse"
On peut maintenant se connecter a la base mysql en root sous:
# mysql -p
Enter password:*****
mysql> 

Je vous conseille de créer un utilisateur MySQL nommé adminmysql avec tous les droits pour éviter d'utiliser root
La procédure en root est:
mysql> use mysql;
mysql> select * from user;
On voit ainsi tous les utilisateurs autorisés, et leurs droits.
mysql>  GRANT ALL PRIVILEGES ON *.* TO adminmysql@localhost
-> IDENTIFIED BY 'mot2passe' WITH GRANT OPTION;
Remarque : si vous intervenez directement en SQL sur cette table, pensez à lancer la commande suivante à la fin :
mysql>  FLUSH PRIVILEGES;
On vérifie notre insertion en faisant :
mysql> select * from user where User='adminmysql';
Pour effacer des utilisateurs :
mysql> delete from user where Host='vilain';
(cela interdit la connection de l'hôte vilain par les utilisateurs, si cet hôte a été préalablement autorisé)
mysql> delete from user where User='kaisersoze';
(cela interdit la connection de l'utilisateur kaisersoze, si cet utilisateur a été préalablement autorisé)

On effacera les entrées que l'on ne désire pas dans cette table en fonction de sa politique de sécurité. On notera sous Debian la présence d'un utilisateur debian-sys-maint qui sert à certains scripts Debian : il ne doit pas être supprimé ! Au niveau sécurité, le mot de passe est généré à l'installation (stocké dans /etc/mysql/debian.cnf) par la commande :
perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..16)'
Donc il est bien sûr primordial d'interdire la lecture du fichier /etc/mysql/debian.cnf

Bref, on peut désormais éviter de se connecter en root et faire:
# mysql -u adminmysql -p
Enter password:*****
mysql> 

Souvent la chose à faire par un administreur MySQL est de créer une base de données et un utilisateur ayant tous les droits dessus. Ceci est assez courant pour faire une page en PHP/Mysql ou intégrer un logiciel "tout fait" (forum, chat, etc..)
Pour faire cela, nous allons donc faire en tant qu'adminmysql :
mysql> create database forum;
mysql> GRANT ALL PRIVILEGES ON forum.* TO 'moderateur'@localhost 
mysql> identified by 'mot_de_passe_du_moderateur';
Imaginons que moderateur veuille une autre base de données :
mysql> create database forum2;
mysql> GRANT ALL PRIVILEGES ON forum2.* TO 'moderateur'@localhost;
Voilà en ce qui concerne la première administration de votre base MySQL

Voyons maintenant quelques commandes SQL de base correctes avec MySQL :

Créer une nouvelle base de données nommée essai :
mysql> CREATE DATABASE essai;
Voir les bases de données créées :
SHOW DATABASES;
Utiliser la base de données essai :
mysql> USE essai
Voir les tables créées :
SHOW TABLES;
Créer une table nommée test avec différents champs :
mysql> CREATE TABLE test (id INT not null AUTO_INCREMENT, prenom VARCHAR
(50) not null , nom VARCHAR (50) not null , ne_le DATE not null ,
ville VARCHAR (90), enfants INT, PRIMARY KEY (id));
Décrire une table :
DESC test;
Ajouter un champ à une table :
mysql> ALTER TABLE test ADD another TEXT;
Supprimer un champ à une table :
mysql> ALTER TABLE test DROP another;
Insertion de données dans une table :
mysql> INSERT INTO test VALUES (1,'jp','papin','2005-06-12','Marseille',2);
INSERT INTO test (id,prenom,nom,ne_le) VALUES (2,'c','waddle','2004-06-17');
Sortir tous les champs d'une table :
mysql> SELECT * FROM test;
Effacer des données d'une table :
mysql> DELETE FROM test WHERE nom='waddle';
Effacer TOUTES les données d'une table :
DELETE FROM test;
Supprimer une table :
DROP TABLE test;
Supprimer une base de données :
DROP DATABASE essai;
Insertion "manuelle" d'un utilisateur :
mysql> USE mysql
INSERT INTO user VALUES ('localhost','login',password('motdepasse'),
'N','N','N','N','N','N','N','N','N','N','N','N','N','N');
FLUSH PRIVILEGES;


En ce qui concerne les droits MySQL, principalement deux tables gèrent cela :

- user.mysql stocke les permissions générales des utilisateurs :
| Host            | char(60) binary 
| User            | char(16) binary 
| Password        | char(16) binary 
| Select_priv     | enum('N','Y')
| Insert_priv     | enum('N','Y')
| Update_priv     | enum('N','Y')
| Delete_priv     | enum('N','Y')
| Create_priv     | enum('N','Y')
| Drop_priv       | enum('N','Y')
| Reload_priv     | enum('N','Y')
| Shutdown_priv   | enum('N','Y')
| Process_priv    | enum('N','Y')
| File_priv       | enum('N','Y')
| Grant_priv      | enum('N','Y')
| References_priv | enum('N','Y')
| Index_priv      | enum('N','Y')
| Alter_priv      | enum('N','Y') 
- db.mysql stocke les droits des utilisateurs sur des bases de données :
| Host            | char(60) binary 
| Db              | char(64) binary
| User            | char(16) binary 
| Select_priv     | enum('N','Y')
| Insert_priv     | enum('N','Y')
| Update_priv     | enum('N','Y')
| Delete_priv     | enum('N','Y')
| Create_priv     | enum('N','Y')
| Drop_priv       | enum('N','Y')
| Grant_priv      | enum('N','Y')
| References_priv | enum('N','Y')
| Index_priv      | enum('N','Y')
| Alter_priv      | enum('N','Y')

Liens

Documentation officielle
http://www.mysql.com/

Traduction française
http://nexen.net/docs/mysql/



powered by Apache     powered by Debian     Valid XHTML 1.1     Valid CSS     ecrit avec Vim    
Copyright (c) 2002-2014 Gregory Colpart. Infogerance serveur