Outils pour utilisateurs

Outils du site


documentation:sgbd:mysql_slackware

Installation & configuration de MySQL

Cette page explique les différentes étapes pour installer et configurer le serveur de base de données : MySQL.

À l'origine cet howto est destiné au système d'exploitation, Slackware, mais les différentes étapes de configuration peuvent s'appliquer à n'importe quelle distribution.

Il faut connaître la syntaxe de base du langage SQL.

1. Récupération du paquet (Slackware)

Le paquet peut être obtenu à partir du CD-ROM, il se situe dans le répertoire ap/. Ou à partir d'un serveur FTP, comme par exemple, ftp://ftp.gwdg.de/pub/linux/slackware/

Je vous conseille de vérifier auparavant le fichier ChangeLog.txt, pour savoir si il existe une mise à jour.

2. Configuration

Dans un premier temps, il faut s'assurer, que le fichier rc.mysqld est présent dans le répertoire /etc/rc.d/ 1).

2.1. Création d'une base de données

Pour pouvoir créer une base de données, il faut être soit, le super utilisateur (root) soit, l'utilisateur mysql (par défaut, il n'existe pas).

Par conséquent on va avoir besoin de se connecter en root, car l'installation nécessite « d'écrire » sur le système. Ensuite on lance la commande ci-dessous.

mysql_install_db --user=mysql

La base de données va être initialisée par l'utilisateur mysql (root ne doit en aucun cas avoir tous les droits).

3. Gestion des comptes

À ce stade, il existe déjà des comptes, mais il est préférable de sécuriser un peu l'installation.

Pour administrer le serveur, il va falloir nous connecter, nous allons donc lancé le daemon.

À adapter suivant votre distribution favorite.

Pour une Slackware je lance cette commande.

sh /etc/rc.d/rc.mysqld start
Starting mysqld daemon with databases from /var/lib/mysql

3.1. Un seul compte root

Pour l'instant la table user possède plusieurs comptes root, sans mot de passe, nous allons donc faire le ménage.

On se connecte à la base de données

mysql -u root mysql

ou

mysql -u root
mysql> USE mysql;

Ici aucun mot de passe est nécessaire, car le champ dans la table user est vide.

On peut regarder les différents comptes root (ma machine s'appelle aloha).

mysql> SELECT Host,Password,User FROM user WHERE User='root';
+-----------+------+----------+
| Host      | User | Password |
+-----------+------+----------+
| localhost | root |          | 
| aloha     | root |          | 
+-----------+------+----------+

On s'aperçoit qu'il existe deux comptes root, nous allons en conserver un seul. On va garder uniquement celui dont l'hôte est localhost.

mysql> DELETE FROM user WHERE User='root' AND Host='aloha';
Query OK, 1 row affected (0,01 sec)

mysql> SELECT Host,Password,User FROM user WHERE User='root';
+-----------+------+----------+
| Host      | User | Password |
+-----------+------+----------+
| localhost | root |          | 
+-----------+------+----------+

Désormais il existe un seul compte root, il ne reste plus, qu'à lui donner un mot de passe.

mysql> UPDATE user SET Password=PASSWORD('rootpass') WHERE User='root' AND HOST='localhost';
Query OK, 1 row affected (0,01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT Host,Password,User FROM user WHERE User='root';
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *7428814AQ4258YND4589MLG45821656XGT45JLR4 | 
+-----------+------+-------------------------------------------+

Il faut remplacer rootpass par un véritable mot de passe.

Ce n'est pas la peine d'essayer de décrypter le mot de passe, il est fictif, c'est juste pour montrer qu'il n'est pas en clair dans la table.

Il reste plus qu'à purger les tables de droits (force l'écriture sur le disque dur).

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,00 sec)

Pour vérifier, que nos modifications ont été prises en compte, on peut se déconnecter.

mysql> QUIT;
Bye

3.2. Les comptes anonymes

Il existe encore des comptes, en utilisateur anonyme cet fois-ci. On va également les supprimer.

Il faut se connecter en utilisateur root 2).

mysql -u root -p

mysql> USE mysql;

Database changed
mysql> SELECT Host,User,Password FROM user WHERE User='';
+-----------+------+----------+
| Host      | User | Password |
+-----------+------+----------+
| aloha     |      |          | 
| localhost |      |          | 
+-----------+------+----------+

mysql> DELETE FROM user WHERE User='';
Query OK, 2 rows affected (0,00 sec)

mysql> SELECT Host,User,Password FROM user WHERE User='';
Empty set (0,00 sec)

mysql> FLUSH PRIVILEGES;

L'étape suivante va consister à initialiser un compte pour un utilisateur.

3.3. Création d'un utilisateur

Nous allons tout d'abord mettre en place une base de données spécifique à cet utilisateur.

mysql> CREATE DATABASE nom_bdd;
Query OK, 1 row affected (0,00 sec)

Généralement je fais correspondre le nom de la base (nom_bdd) avec le login de l'utilisateur (c'est plus facile pour s'en souvenir).

Dans mon cas ça donne ceci :

mysql> CREATE DATABASE olivier;
Query OK, 1 row affected (0,00 sec)

On peut voir toutes les bases de données avec cette commande.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
| olivier            | 
| test               | 
+--------------------+
4 rows in set (0,00 sec)

olivier est ma base personnelle.

Pour ajouter les identifiants de connexion, il suffit d'ajouter une nouvelle ligne dans la table user.

mysql> INSERT INTO user (Host,User,Password) VALUES ('localhost','le_login',PASSWORD('mot_de_passe'));

ou

mysql> INSERT INTO user SET Host='localhost',User='le_login',Password=PASSWORD('mot_de_passe');
Généralement je reprends les identifiants de connexion de ma session.

Ensuite, nous allons lui accorder des privilèges pour sa base de données.

mysql> FLUSH PRIVILEGES;
		
mysql> GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON nom_bdd.* TO 'le_login'@'localhost' IDENTIFIED BY 'mot_de_passe';

Vous pouvez bien sur accorder moins de privilèges.

4. Simplifier la connexion

Vous vous peut êtes rendu compte que s'est assez lourd à chaque fois de taper cette commande mysql -u votre_login -p, on peut la réduire, sans passer par un script shell « maison » il suffit de copier dans votre espace personnel le fichier /etc/my-small.cnf (ou /etc/my.cnf) et le renommer en .my.cnf. Il faut repérer la ligne commençant par [client] et apporter ces modifications.

[client]
user		= le_login
password	= mot_de_passe
database	= nom_bdd
port		= 3306
socket		= /var/run/mysql/mysql.sock

Désormais pour se connecter, il suffira simplement de taper mysql. Par ailleurs, vous pouvez utiliser ce fichier, avec n'importe quels langages de programmation conforment à l'API MySQL, grâce à l'option defaults-file.

5. Un daemon de plus au démarrage (Slackware)

Pour que le serveur MySQL soit activé à chaque démarrage, Il faut rendre le fichier /etc/rc.d/rc.mysqld exécutable:

su root
chmod a+x /etc/rc.d/rc.mysqld

Remarque : Ce n'est pas une obligation de lancer le daemon à chaque fois, surtout, si on l'utilise occasionnellement.

1)
Se renseigner pour les autres distributions
2)
Celui qui administre le serveur de base de données
documentation/sgbd/mysql_slackware.txt · Dernière modification: le 04-12-2018 à 17h59 (modification externe)