Catégorie : Sécurité

2 mai 2016 /

Voici un petit mémo qui montre comment changer le répertoire de données MySQL par défaut, puis à régler SELinux pour qu’il tienne compte des changements.

Arrêt du serveur MySQL:

service mysqld stop

Création d’un nouveau répertoire de données:

mkdir /nouveau/repertoire/mysql
chown mysql:mysql /nouveau/repertoire/mysql

Déplacer la base de données d’origine:

mv /var/lib/mysql/* /nouveau/repertoire/mysql

Modification du fichier de configuration MySQL:

vi /etc/mysql/my.cnf

Et on y change cette ligne:

datadir = /var/lib/mysql

devient:

datadir = /nouveau/repertoire/mysql

ainsi que celle la:

socket = /var/lib/mysql/mysql.sock

qui devient:

socket = /nouveau/repertoire/mysql/mysql.sock

Mappage du contexte SELinux pour le répertoire /nouveau/repertoire/mysql/ , avec la commande semanage:

semanage fcontext -a -t mysqld_db_t "/nouveau/repertoire/mysql(/.*)?"

Application du contexte pour une prise en compte par le système à chaud:

restorecon -Rv /nouveau/repertoire/mysql/

Démarrage du serveur MySQL:

service mysqld start

Vérification de l’accès et de la connectivité:

mysql -u root -p

mysql> show databases;

Si cela fonctionne, vous avez changé le répertoire par défaut de MySQL avec une prise en compte par SELinux avec succès.

Par contre si vous obtenez un message de ce genre:

ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local par socket '/var/lib/mysql/mysql.sock'

Il faudra ajouter cela à votre fichier /etc/my.cnf :

[client]
socket = /srv/mysql/mysql.sock

Et dernière chose, pour éviter la connexion via le socket:

mysql -u root -p --protocol tcp