Table des matières
Installation & configuration de MySQL
Cette page est peut-être obsolète !
MySQL a été remplacé par MariaDB.
Cette page explique les différentes étapes pour installer et configurer le serveur de base de données : MySQL sous une Slackware.
1. Récupération du paquet
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.
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.
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');
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
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.