Table des matières
Changer l’emplacement des bases de données mysql
Introduction
Pré-requis
-
une machine sous debian avec accès root
-
un serveur mysql
Dans l'exemple, nous choisissons comme nouvel emplacement /srv/data/mysql
Première étape : connaître l'emplacement actuel du dossier mysql
-
Affichez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf :
...@...:~$ cat /etc/mysql/mariadb.conf.d/50-server.cnf (...) # * Basic Settings # user = mysql pid-file = /run/mysqld/mysqld.pid socket = /run/mysqld/mysqld.sock #port = 3306 basedir = /usr datadir = /var/lib/mysql (...)
-
cherchez la ligne définissant datadir (par défaut /var/lib/mysql) : c'est l'emplacement cherché.
Autres étapes
-
Créez le nouveau dossier :
...@...:~$ sudo mkdir /srv/data/mysql
-
Rendez mysql propriétaire du nouveau dossier :
...@...:~$ sudo chown mysql:mysql /srv/data/mysql
-
Allez dans votre datadir actuel :
...@...:~$ cd /var/lib/mysql
-
Stoppez le service mysql pour éviter une copie non correcte :
...@...:~$ sudo systemctl stop mysql
-
copiez les bases dans le nouveau dossier :
...@...:~$ sudo cp * /srv/data/mysql
Ça peut prendre du temps selon la taille du dossier
-
Éditez avec les droits d'administration le fichier /etc/mysql/mariadb.conf.d/50-server.cnf :
...@...:~$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
et modifiez la directive datadir par votre nouveau dossier (ici /srv/data/mysql)
-
Redémarrez mysql :
...@...:~$ sudo systemctl start mysql
-
Ouvrez mysql :
...@...:~$ sudo mysql -u root -p Enter password: (...) MariaDB [(none)]> create database newdir_test; (...) MariaDB [(none)]> exit Bye
-
Lancez :
...@...:~$ ls /srv/data/mysql | grep newdir_test newdir_test
Si newdir_test s’affiche, c’est que tout marche bien
-
Effacez la base de test :
...@...:~$ sudo mysql -u root -p Enter password: (...) MariaDB [(none)]> drop database newdir_test; (...) MariaDB [(none)]> exit Bye
-
vous pouvez supprimer l’ancien datadir de mysql avec la commande :
...@...:~$ sudo rm -rf /var/lib/mysql
Conclusion
Vous venez de déplacer vos bases de données mysql.