Différences
Ci-dessous, les différences entre deux révisions de la page.
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, 21:25] grigouille avant apparmor |
utilisateurs:grigouille:brouillons:deplacer_mysql [Le 20/01/2017, 21:07] (Version actuelle) grigouille plus général pour my.cnf |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf | /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf | ||
</code> | </code> | ||
- | Par défaut, il s'agit du fichier ''/etc/mysql/my.cnf'' : | + | Éventuellement ce fichier contient des directives **!includedir**. Il faut alors chercher dans ces répertoires le fichier qui contient **datadir**. |
- | <code>$ tail /etc/mysql/my.cnf | + | |
- | # For explanations see | + | |
- | # http://dev.mysql.com/doc/mysql/en/server-system-variables.html | + | |
- | # | + | Dans la suite, nous allons déplacer les données dans **/home/mysql**. |
- | # * IMPORTANT: Additional settings that can override those from this file! | + | |
- | # The files must end with '.cnf', otherwise they'll be ignored. | + | |
- | # | + | |
- | + | ||
- | !includedir /etc/mysql/conf.d/ | + | |
- | !includedir /etc/mysql/mysql.conf.d/ | + | |
- | </code><code> | + | |
- | $ grep datadir /etc/mysql/mysql.conf.d/*.cnf | + | |
- | /etc/mysql/mysql.conf.d/mysqld.cnf:datadir = /var/lib/mysql | + | |
- | </code> | + | |
- | Donc par défaut, les données sont dans **/var/lib/mysql**. | + | |
- | On va mettre les données dans **/home/mysql**. | + | |
Tout d'abord on arrête le service : | Tout d'abord on arrête le service : | ||
<code>$ sudo service mysql stop</code> | <code>$ sudo service mysql stop</code> | ||
- | On modifie **datadir** avec le nouvel emplacement : | + | [[:tutoriel:comment_modifier_un_fichier|On édite le fichier]] qui contient **datadir** : |
<code> | <code> | ||
- | $ grep datadir /etc/mysql/mysql.conf.d/*.cnf | + | datadir = /home/mysql |
- | /etc/mysql/mysql.conf.d/mysqld.cnf:datadir = /home/mysql | + | |
</code> | </code> | ||
+ | On suppose que l'ancienne valeur de **datadir** était **/var/lib/mysql**. | ||
On déplace les données : | On déplace les données : | ||
- | <code>$ sudo mv /var/lib/mysql /home/mysql</code> | + | <code>$ sudo mv /var/lib/mysql /home</code> |
Malheureusement cela ne suffit pas. | Malheureusement cela ne suffit pas. | ||
Ligne 58: | Ligne 43: | ||
</code> | </code> | ||
- | Il faut donc faire créer le répertoire **/var/lib/mysql/mysql** : | + | Il faut donc créer le répertoire **/var/lib/mysql/mysql** avec les bons droits : |
<code>$ sudo mkdir -p /var/lib/mysql/mysql | <code>$ sudo mkdir -p /var/lib/mysql/mysql | ||
$ sudo chown -R mysql:mysql /var/lib/mysql | $ sudo chown -R mysql:mysql /var/lib/mysql | ||
- | $ sudo chmod 700 /var/lib/mysql | + | $ sudo chmod -R 700 /var/lib/mysql</code> |
- | $ sudo chmod 750 /var/lib/mysql/mysql</code> | + | |
- | Il faut maintenant configurer [[:apparmor|AppArmor]]. | + | 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 | |
- | + | ||
- | et | + | |
- | + | ||
- | === Préambule === | + | |
- | Avant de vous lancer voir la discussion ici [[http://forum.ubuntu-fr.org/viewtopic.php?id=1660321]] | + | |
- | en particulier: | + | |
- | <note>On te conseille de faire un lien symbolique « afin de ne pas "casser" les fichiers de configuration originel de MySQL » | + | |
- | D'abord c'est stupide car les fichiers de configuration sont justement faits pour y personnaliser la configuration… | + | |
- | L'auteur de cette documentation craignait sans doute que le fichier my.cnf ne soit écrasé lors d'une mise à jour. ( de toute façon il est recommendé de faire un ''**'' cp my.cfn my.cfn.bak ''**'' ainsi si il y a un problème, il suffira simplement de restaurer le backup du fichier de conf. Mais cela n'arrivera pas, car lors d'une mise à jour le gestionnaire de paquets demande ce qu'il doit faire : remplacer, conserver, afficher les différences… | + | |
- | Si l'on a vraiment cette crainte, on ne touche pas au fichier my.cnf et on utilise le dossier conf.d qui est prévu pour y placer ses propres configurations. | + | |
- | </note> | + | |
- | <note> | + | |
- | Ensuite c'est en contradiction avec la manipulation suivante qui fait modifier directement /etc/apparmor.d/usr.sbin.mysqld. Là curieusement l'auteur de la documentation ne craint plus de « casser » le fichier de configuration originel :-D. La bonne manipulation aurait été de placer la configuration supplémentaire dans /etc/apparmor.d/local/usr.sbin.mysqld et de dé-commenter la ligne du premier fichier : | + | |
- | **''Code « # Site-specific additions and overrides. See local/README for details. | + | |
- | #include <local/usr.sbin.mysqld></note> »'' ** | + | |
- | </note> | + | |
- | La plupart des utilisateurs créent de 2 à 3 partitions sur leur(s) installation(s) : | + | |
- | * / - une partition système | + | |
- | * swap - une partition de de //swap// | + | |
- | * /home - une partition réservée aux utilisateurs | + | |
- | + | ||
- | L'intérêt de ce partitionnement est qu'en cas de réinstallation, les données utilisateurs (données, profils, compte courrier, favoris Internet, thème de bureau, etc.) sont sauvegardées et aussitôt exploitables. Ça n'est malheureusement pas le cas pour les bases de données MySql, et un utilisateur non averti, écrasera sans le savoir ses bases de données qui sont stockées sur **/var/lib/mysql** (donc dans la partition '**/**' système). | + | |
- | + | ||
- | Il peut donc être intéressant pour cela de déplacer ses bases de données dans la partition /home. | + | |
- | + | ||
- | Remarque importante : Il y a deux méthodes pour changer le dossier des données, soit par lien symbolique comme décrit ci-après, soit en modifiant le fichier de configuration my.cnf. Toutefois si les utilitaires de MySQL comme mysqldump sont utilisés, il faut préférer la méthode de modification du my.cnf, car les liens symboliques ne semblent pas pris en compte par ces utilitaires. | + | |
- | + | ||
- | + | ||
- | === Mise en place === | + | |
- | + | ||
- | Arrêter MySQL : | + | |
- | + | ||
- | sudo service mysql stop | + | |
- | + | ||
- | Déplacer le répertoire des bases de données : | + | |
- | + | ||
- | sudo mv /var/lib/mysql /home/mysql | + | |
- | + | ||
- | Le déplacement par 'mv' permet de ne pas modifier les droits originaux. | + | |
- | + | ||
- | Créer un lien symbolique afin de ne pas "//casser//" les fichiers de configuration originel de MySQL : | + | |
- | + | ||
- | sudo ln -s /home/mysql /var/lib/mysql | + | |
- | + | ||
- | S'assurer que l'utilisateur 'mysql' est bien le propriétaire de ce lien symbolique : | + | |
- | + | ||
- | sudo chown -h mysql:mysql /home/mysql | + | |
- | + | ||
- | Pour les versions d'Ubuntu utilisant [[Apparmor]] (notamment Ubuntu 10.04 LTS), il vous faut modifier le fichier de configuration MySQL dans Apparmor. | + | |
- | + | ||
- | [[:tutoriel:comment_modifier_un_fichier|Ouvrir le fichier]] **/etc/apparmor.d/usr.sbin.mysqld** et trouver les deux lignes suivantes : | + | |
- | + | ||
- | <file> | + | |
- | /var/lib/mysql/ r, | + | |
- | /var/lib/mysql/** rwk, | + | |
- | </file> | + | |
- | + | ||
- | et de les modifier en : | + | |
- | + | ||
- | <file> | + | |
/home/mysql/ r, | /home/mysql/ r, | ||
/home/mysql/** rwk, | /home/mysql/** rwk, | ||
- | </file> | + | </code> |
- | + | Rechargez : | |
- | On relance la configuration d'Apparmor : | + | <code>sudo service apparmor reload</code> |
- | + | Redémarrez le service : | |
- | sudo service apparmor reload | + | <code>sudo service mysql start</code> |
- | + | Vérifiez le changement : | |
- | On relance MySql : | + | <code> |
- | + | $ mysql -u root -p -e 'select @@datadir' | |
- | sudo service mysql start | + | Enter password: |
- | + | +--------------+ | |
- | Et voilà. | + | | @@datadir | |
+ | +--------------+ | ||
+ | | /home/mysql/ | | ||
+ | +--------------+ | ||
+ | </code> | ||