Pour nos futurs sites internet, nous allons avoir besoin de certain élément, nous possédons déjà le FTP pour créer des utilisateurs à notre guise, nous allons aussi avoir besoin d'une base de données. Aujourd'hui nous allons donc nous occuper de Mysql.

Commençons par installer les paquets nécessaires :

ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install mysql-client-5.0 mysql-server-5.0 mysql-common
[...]

Ceci fait comme pour le FTP commencer par couper le serveur tout frais installer.

bebeserv:~# /etc/init.d/mysql stop
[...]

Éditons la configuration :

bebeserv:~# cd /etc/mysql
bebeserv:/etc/mysql# nano my.cnf
[...]

Dans « [mysqld] » D'abord la langue ! ( très important :) )

language        = /usr/share/mysql/french

Puis puisque dans mon cas je n'ouvrirai pas Mysql à l'extérieur je laisse le

skip-networking
bind-address à 127.0.0.1

Pour enregistrer les mauvaises requêtes (coûteuses en performance).

log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Commentez les lignes suivantes, elles sont inutiles car nous ne feront pas de réplication Mysql.

#log_bin                        = /var/log/mysql/mysql-bin.log
#expire_logs_days       = 10
#max_binlog_size         = 100M

Puisque je compte utiliser Dotclear 2 qui nécessite le moteur « innodb », je ne décommenterai pas la ligne suivante :

#skip-innodb

Dans la section « [mysqldump] » je rajoute ces options :

skip-opt
add-drop-table
add-locks
create-options
set-charset
disable-keys
complete-insert

Enregistrez et quittez. Maintenant vous pouvez relancer Mysql.

bebeserv:/etc/mysql# /etc/init.d/mysql start
[...]

Maintenant il va falloir sécuriser Mysql car sont installation d'origine est plein de trou. Entrez dans la console Mysql :

bebeserv:~# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Maintenant que vous êtes dans la console, tapez les commandes suivantes :

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| root             | bebeserv  |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+

Nous observons un compte « root » sous le nom « bebeserv » qui ne servira pas puisque nous utiliserons uniquement Mysql en local. Nous allons donc le supprimé.

mysql> delete from user where Host <> "localhost";
Query OK, 1 row affected (0.00 sec)

mysql> select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

Maintenant modifions le compte « root » pour plus de sécurité et renommons le au passage (remplacé **** par votre mot de passe dans la seconde commande):

mysql> rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> update user set password=password('****') where user = "bebeserv";
Query OK, 1 row affected (0.00 sec)
Enregistrements correspondants: 1  Modifiés: 1  Warnings: 0

mysql> select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| bebeserv         | localhost | *A7581E9CC269EDA8C16D974E1032E393B33DC199 |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

Parfait ! Appliquons tout ça :

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Maintenant vérifions les bases présentes :

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

Parfait encore ! Par défaut Mysql créer un utilisateur vide et une base test que nous aurions du supprimer car inutile voir dangereux pour l'utilisateur sans nom. Mais l'installation dans Debian était déjà propre.

Maintenant quittons la console et tentons de nous loguer en « root » (« bebeserv » excuser moi !).

mysql> exit
Bye

bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Parfait ! nous pouvons quitter sachant que tout fonctionne bien :

mysql> exit
Bye

Voilà ce chapitre est terminé.

bebeserv:/etc/mysql# exit
logout
ALBAN@bebeserv:~$