3.b. Installation et configuration MySQL

  • warning: array_map(): Argument #2 should be an array in /var/www/titouille.ch/www/modules/system/system.module on line 1050.
  • warning: array_keys() expects parameter 1 to be array, null given in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
  • warning: Invalid argument supplied for foreach() in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
Portrait de titouille


^ Sommaire ^

3.a. SSH et DynDNS ‹

› 3.c. Apache2 / PHP5




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.


^ Sommaire ^

3.a. SSH et DynDNS ‹

› 3.c. Apache2 / PHP5