3.b. Installation et configuration MySQL
Un serveur sans base de données, ça ne se fait pas... MySQL est incontournable dans ce cas, et voici la procédure pour son installation.
1. Installation de MySQL5
Ouverture d'un terminal et hop :
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev mysql-admin mysql-query-browser
Les 2 derniers, mysql-admin et mysql-query-browser sont des outils visuels permettant d'administrer et d'exécuter des requêtes sur les bases de données MySQL.
L'installation va me demander un mot de passe initial pour MySQL, que je vais insérer. Il est vraiment préférable d'insérer une valeur à cet instant du déroulement. Le serveur étant ouvert sur le monde, garder le mot de passe par défaut serait du plus mauvais effet.
2. Configuration de MySQL5
Ok, c'est bien beau, on a un serveur MySQL installé et fonctionnel (plutôt simple non ?). Maintenant, il serait temps de sécuriser légèrement les données. Pour ce faire, je vais déplacer le répertoire qui sert à contenir les bases de données vers une partition externe, afin de protéger un peu mieux les données par rapport à la configuration.
Le répertoire par défaut des données est /var/lib/mysql.
Je vais le rediriger vers /mnt/dev/mysql.
# arrêt du serveur mysql sudo /etc/init.d/mysql stop #création du nouveau répertoire de stockage # et affectation des droits sudo mkdir /mnt/dev/mysql sudo chown mysql:mysql /mnt/dev/mysql # copie des fichiers de l'ancien vers le nouveau répertoire sudo cp -pr /var/lib/mysql/* /mnt/dev/mysql # suppression des anciens fichiers ib_logfile # attention, pas sur que ça soit nécessaire, voire même conseillé... # a tester... sudo rm /mnt/dev/mysql/ib_*
Il est nécessaire maintenant de modifier un peu les fichiers de configuration.
2 possibilités pour la configuration mysql :
- soit je modifie le fichier de configuration par défaut /etc/mysql/my.cnf,
- soit je rajoute un nouveau fichier dans /etc/mysql/conf.d/ pour prendre en compte des modifications de configuration.
Je préfère le second cas, car la configuration ne sera pas écrasée par une nouvelle installation de mysql.
sudo gedit /etc/mysql/conf.d/datadir.cnf
dans lequel je rajoute ces 2 lignes :
[mysqld] datadir = /mnt/dev/mysql
Puis je le sauvegarde.
Il reste néanmoins un problème. Une application de sécurité nommée apparmor a été introduite depuis les dernières versions d'ubuntu (8.04). Cette dernière effectue certains tests de sécurité afin d'éviter les corruptions de données. Et il possède un fichier de configuration dans lequel il stocke les chemins de MySQL. Il est donc nécessaire de modifier également ce fichier, via la commande suivante :
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
et trouver les lignes qui contiennent /var/lib/mysql pour les remplacer par /mnt/dev/mysql.
Une fois ceci fait, je redémarre les services apparmor et mysql (dans cet ordre) via les commandes suivantes :
sudo /etc/init.d/apparmor restart sudo /etc/init.d/mysql restart
Mon serveur sql est désormais installé. Via le menu Applications->Programmation, je peux trouver MySQL-Administrator et MySQL-Query-Browser pour faire quelques tests de fonctionnement. Ou via ligne de commande :
mysql -u [nom d'utilisateur]
3. Configuration supplémentaire pour les accès de l'extérieur
Encore une petite astuce : j'aime bien accéder à MySQL depuis l'extérieur via les outils MySQL (Administrator, QueryBrowser). Depuis un moment déjà, j'ai installé un pare-feu qui se nomme Gufw, dans lequel je peux configurer les ports ouverts et pour qui ils sont ouverts. J'ai simplement rajouté une règle pour autoriser les connexions entrantes sur le port 3306 afin de permettre une connexion sur MySQL depuis l'extérieur. Mais ce n'est pas tout. Dans le fichier /etc/mysql/my.cnf, j'ai mis en commentaire la ligne "bind-address = 127.0.0.1" qui n'autorisait jusqu'ici que des connexions locales. Je suis maintenant autorisé à me connecter depuis mon mac via MySQL Administrator par exemple. Enfin, dernière configuration à ajouter : permettre à l'utilisateur d'avoir accès aux bases de données. Pour ce faire, sur le serveur, j'ouvre MySQL Administrator, et je vais sur la gestion des utilisateurs. Dans le compte utilisateur que je veux utiliser, je rajoute un domaine, qui sera celui de ma plage d'adresses privées : 192.168.1.% (ainsi tous les ordinateurs sur 192.168.1.xxx seront autorisés) et pour chaque base de données que je veux autoriser, je vais rajouter les permissions nécessaires.
Ainsi, je peux maintenant me connecter via les outils d'administration MySQL et voir, modifier, supprimer les données que je veux sans avoir besoin de passer par la ligne de commande et ssh. Une bonne chose pour être plus efficace dans mon travail.
Sources :
ubuntu-fr, mysql
howtoforge (section 14)
la case de l'oncle Tom
Jusqu'ici tout va bien, ou presque. Un serveur de bases de données tout beau tout frais.