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