==== Déplacer ses bases de données MySQL ==== L'emplacement des données de MySQL est indiqué dans la variable **datadir** qui se trouve dans le fichier ''my.cnf''. Toutefois, il peut exister plusieurs fichiers ''my.cnf'' : $ mysqld --verbose --help | head -n13 | tail -n2 Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf Éventuellement ce fichier contient des directives **!includedir**. Il faut alors chercher dans ces répertoires le fichier qui contient **datadir**. Dans la suite, nous allons déplacer les données dans **/home/mysql**. Tout d'abord on arrête le service : $ sudo service mysql stop [[:tutoriel:comment_modifier_un_fichier|On édite le fichier]] qui contient **datadir** : datadir = /home/mysql On suppose que l'ancienne valeur de **datadir** était **/var/lib/mysql**. On déplace les données : $ sudo mv /var/lib/mysql /home Malheureusement cela ne suffit pas. Le premier problème vient du fichier''/usr/share/mysql/mysql-systemd-start'' : $ head /usr/share/mysql/mysql-systemd-start -n25 | tail -n16 sanity () { if [ ! -r /etc/mysql/my.cnf ]; then echo "MySQL configuration not found at /etc/mysql/my.cnf. Please create one." exit 1 fi if [ ! -d /var/lib/mysql ] && [ ! -L /var/lib/mysql ]; then echo "MySQL data dir not found at /var/lib/mysql. Please create one." exit 1 fi if [ ! -d /var/lib/mysql/mysql ] && [ ! -L /var/lib/mysql/mysql ]; then echo "MySQL system database not found. Please run mysql_install_db tool." exit 1 fi } Il faut donc créer le répertoire **/var/lib/mysql/mysql** avec les bons droits : $ sudo mkdir -p /var/lib/mysql/mysql $ sudo chown -R mysql:mysql /var/lib/mysql $ sudo chmod -R 700 /var/lib/mysql Il faut maintenant configurer [[:apparmor|AppArmor]]. D'après ce qui suit, nous devons modifier le fichier ''local/usr.sbin.mysqld'' : $ tail /etc/apparmor.d/usr.sbin.mysqld -n3 # Site-specific additions and overrides. See local/README for details. #include [[:tutoriel:comment_modifier_un_fichier|Modifier le fichier]] ''/etc/apparmor.d/local/usr.sbin.mysqld'' en ajoutant : # Allow data dir access /home/mysql/ r, /home/mysql/** rwk, Rechargez : sudo service apparmor reload Redémarrez le service : sudo service mysql start Vérifiez le changement : $ mysql -u root -p -e 'select @@datadir' Enter password: +--------------+ | @@datadir | +--------------+ | /home/mysql/ | +--------------+