Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:grigouille:brouillons:deplacer_mysql [Le 12/01/2017, 22:11]
grigouille erreur dans mv
utilisateurs:grigouille:brouillons:deplacer_mysql [Le 28/04/2018, 11:32] (Version actuelle)
Ligne 1: Ligne 1:
 +==== 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''​ :
 +<​code>​
 +$ 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 ​
 +</​code>​
 +É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 :
 +<​code>​$ sudo service mysql stop</​code>​
 +[[:​tutoriel:​comment_modifier_un_fichier|On édite le fichier]] qui contient **datadir** :
 +<​code>​
 +datadir = /home/mysql
 +</​code>​
 +On suppose que l'​ancienne valeur de **datadir** était **/​var/​lib/​mysql**.
 +On déplace les données :
 +<​code>​$ sudo mv /​var/​lib/​mysql /​home</​code>​
 +
 +Malheureusement cela ne suffit pas.
 +Le premier problème vient du fichier''/​usr/​share/​mysql/​mysql-systemd-start''​ :
 +<​code>​
 +$ 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
 +}
 +</​code>​
 +
 +Il faut donc créer le répertoire **/​var/​lib/​mysql/​mysql** avec les bons droits :
 +<​code>​$ sudo mkdir -p /​var/​lib/​mysql/​mysql
 +$ sudo chown -R mysql:mysql /​var/​lib/​mysql
 +$ sudo chmod -R 700 /​var/​lib/​mysql</​code>​
 +
 +Il faut maintenant configurer [[:​apparmor|AppArmor]]. D'​après ce qui suit, nous devons modifier le fichier ''​local/​usr.sbin.mysqld''​ :
 +<​code>​
 +$ tail /​etc/​apparmor.d/​usr.sbin.mysqld -n3
 +  # Site-specific additions and overrides. See local/​README for details.
 +  #include <​local/​usr.sbin.mysqld>​
 +</​code>​
 +[[:​tutoriel:​comment_modifier_un_fichier|Modifier le fichier]] ''/​etc/​apparmor.d/​local/​usr.sbin.mysqld''​ en ajoutant :
 +<​code>​
 +# Allow data dir access
 +  /​home/​mysql/​ r,
 +  /​home/​mysql/​** rwk,
 +</​code>  ​
 +Rechargez :
 +<​code>​sudo service apparmor reload</​code>​
 +Redémarrez le service :
 +<​code>​sudo service mysql start</​code>​
 +Vérifiez le changement :
 +<​code>​
 +$ mysql -u root -p -e '​select @@datadir'​
 +Enter password: ​
 ++--------------+
 +| @@datadir ​   |
 ++--------------+
 +| /​home/​mysql/​ |
 ++--------------+
 +</​code>​
  
  • utilisateurs/grigouille/brouillons/deplacer_mysql.txt
  • Dernière modification: Le 28/04/2018, 11:32
  • (modification externe)