Table des matières

Changer l’emplacement des bases de données mysql

Dans l'exemple, nous choisissons comme nouvel emplacement /srv/data/mysql

Pré-requis

Première étape : connaître l'emplacement actuel du dossier mysql

  1. Affichez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf :

    USER@MACHINE:~$ 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
    (...)

  2. cherchez la ligne définissant datadir (par défaut /var/lib/mysql) : c'est l'emplacement cherché.

Autres étapes

  1. Créez le nouveau dossier :

    USER@MACHINE:~$ sudo mkdir /srv/data/mysql

  2. Rendez mysql propriétaire du nouveau dossier :

    USER@MACHINE:~$ sudo chown mysql:mysql /srv/data/mysql

  3. Allez dans votre datadir actuel :

    USER@MACHINE:~$ cd /var/lib/mysql

  4. Stoppez le service mysql pour éviter une copie non correcte :

    USER@MACHINE:~$ sudo systemctl stop mysql

  5. copiez les bases dans le nouveau dossier :

    USER@MACHINE:~$ sudo cp * /srv/data/mysql

    Cela peut prendre du temps selon la taille du dossier

  6. Éditez avec les droits d'administration le fichier /etc/mysql/mariadb.conf.d/50-server.cnf :

    USER@MACHINE:~$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    et modifiez la directive datadir par votre nouveau dossier (ici /srv/data/mysql)

  7. Redémarrez mysql :

    USER@MACHINE:~$ sudo systemctl start mysql

  8. Ouvrez mysql :

    USER@MACHINE:~$ sudo mysql -u root -p
    Enter password: 
    (...)
    MariaDB [(none)]> create database newdir_test;
    (...)
    MariaDB [(none)]> exit
    Bye

  9. Lancez :

    USER@MACHINE:~$ ls /srv/data/mysql | grep newdir_test
    newdir_test

    Si newdir_test s’affiche, c’est que tout marche bien

  10. Effacez la base de test :

    USER@MACHINE:~$ sudo mysql -u root -p
    Enter password: 
    (...)
    MariaDB [(none)]> drop database newdir_test;
    (...)
    MariaDB [(none)]> exit
    Bye

  11. vous pouvez supprimer l’ancien datadir :

    USER@MACHINE:~$ sudo rm -rf /var/lib/mysql

Conclusion

Vous venez de déplacer vos bases de données mysql.

Problèmes connus

Voir aussi


Basé sur « Changer l’emplacement des bases de données mysql sur debian » par Le Libre Au Quotidien.