4 242
modifications
(28 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:serveur]] | [[Category:serveur]] | ||
[[Category:debian]] | [[Category:debian]] | ||
=Installation et configuration= | |||
Pour installer le serveur mariadb, tapez : | |||
[ | <pre>aptitude install mariadb-server mariadb-client</pre> | ||
= | |||
Puis lancez | |||
<pre>mysql_secure_installation</pre> | |||
Mariadb recommande d'éviter au maximum l'[https://mariadb.com/kb/en/configuring-swappiness/ utilisation du swap]. Définissez la ligne suivante par exemple dans <code>/etc/sysctl.d/local.conf</code> : | |||
<pre>vm.swappiness = 1</pre> | |||
==Changement du datadir== | |||
Stoppez le serveur : | |||
<pre>/etc/init.d/mysql stop</pre> | |||
Nous allons modifier la configuration de mysql afin de stocker les bases de données à un endroit plus propre. Pour cela, éditez le fichier <code>/etc/mysql/my.cnf</code>, recherchez la ligne <code>datadir</code> et remplacez la par : | Nous allons modifier la configuration de mysql afin de stocker les bases de données à un endroit plus propre. Pour cela, éditez le fichier <code>/etc/mysql/my.cnf</code>, recherchez la ligne <code>datadir</code> et remplacez la par : | ||
Ligne 16 : | Ligne 22 : | ||
Copiez l'ancien répertoire de la base de donnée au nouvel emplacement et attribuez lui les bons privilèges : | Copiez l'ancien répertoire de la base de donnée au nouvel emplacement et attribuez lui les bons privilèges : | ||
<pre> | <pre> | ||
rsync -av /var/lib/mysql/ /srv/mysql/ | |||
</pre> | </pre> | ||
Ligne 26 : | Ligne 30 : | ||
</pre> | </pre> | ||
Si mysql refuse de démarrer, c'est probablement un problème de permission. | Si mysql refuse de démarrer, c'est probablement un problème de permission. | ||
=Servir des requêtes sur le réseau= | |||
Par défaut sous debian | Par défaut sous debian, mysql/mariadb n'écoute que sur localhost. Si vous souhaitez écouter sur une ip autre (attention aux problèmes de sécurité que cela peut poser !), éditez la ligne suivante dans le fichier <code>/etc/mysql/mariadb.conf.d/50-server.cnf</code> : | ||
<pre>bind-address = 192.168.50.5</pre> | <pre>bind-address = 192.168.50.5</pre> | ||
=Le mot de passe root de | =Le login root de MySQL= | ||
Après avoir lancé <code>mysql_secure_installation</code> vous avez probablement du définir un mot-de-passe root et désactivé le login extérieur avec l'utilisateur mysql root. | |||
Par défaut sous Debian Buster, mariadb log l'utilisateur root avec le socket unix, sans mot-de-passe nécessaire : | |||
<pre>mysql -u root</pre> | |||
Le défaut de cette mécanique est qu'il va empêcher, par exemple, le login root avec phpmyadmin. Pour ré-activer le login root par mot-de-passe : | |||
<pre> | |||
mysql -u root | |||
use mysql; | |||
update user set plugin='' where user='root'; | |||
flush privileges; | |||
</pre> | |||
Désormais pour vous connecter à mysl vous devrez entrer un mot-de-passe : | |||
<pre>mysql -u root -p</pre> | <pre>mysql -u root -p</pre> | ||
Je vous recommande également d'entrer le mot-de-passe root que vous avez défini dans <code>/etc/mysql/debian.cnf</code> sinon certains scripts risquent de ne plus fonctionner. Anciennement, debian créait un utilisateur debian-sys-maint à cet usage, ce n'est plus le cas depuis debian 9 qui configuré désormais l'utilisateur root à cet usage dans <code>/etc/mysql/debian.cnf</code> et parfois dans <code>/etc/dbconfig-common/*</code> | |||
Éventuellement, vous pouvez stocker le mot-de-passe root comme ceci dans <code>/root/.my.cnf</code> (veillez bien à ce que ce fichier ne soit lisible que par l'utilisateur unix root) : | |||
<pre> | <pre> | ||
[client] | |||
user=root | |||
password= | |||
socket=/var/run/mysqld/mysqld.sock | |||
</pre> | </pre> | ||
Si vous souhaitez revenir à la configuration "passwordless" pour l'utilisateur root, tapez dans la console mysql : | |||
<pre>use mysql; update user set plugin='unix_socket' where user='root'; flush privileges;</pre> | |||
=Créer un utilisateur et lui attribuer les droits sur une base de donnée= | =Créer un utilisateur et lui attribuer les droits sur une base de donnée= | ||
Ligne 58 : | Ligne 80 : | ||
Vous pourrez désormais utiliser cette base avec l'utilisateur plop. | Vous pourrez désormais utiliser cette base avec l'utilisateur plop. | ||
=Sauvegarder et restaurer une base de donnée MySQL= | =Sauvegarder et restaurer une base de donnée MySQL= | ||
==Sauvegarde== | ==Sauvegarde== | ||
Pour sauvegarder une base entière : | Pour sauvegarder une base entière afin de la restaurer sur le même serveur mysql : | ||
<pre>mysqldump -u root -p --opt nom_de_la_base > sauvegarde.sql</pre> | <pre>mysqldump -u root -p --opt nom_de_la_base > sauvegarde.sql</pre> | ||
Pour sauvegarder une base entière afin de la restaurer sur un autre serveur mysql (ajout d'un champ créant la base de donnée): | |||
<pre>mysqldump -u root -p --databases --opt nom_de_la_base > sauvegarde.sql</pre> | |||
Pour sauvegarder uniquement une table d'une base : | Pour sauvegarder uniquement une table d'une base : | ||
<pre>mysqldump -u root -p --opt nom__de_la_base nom__de_la_table > sauvegarde.sql</pre> | <pre>mysqldump -u root -p --opt nom__de_la_base nom__de_la_table > sauvegarde.sql</pre> | ||
<br> | |||
L'option <code>--opt</code> active les flags <code>--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset</code> | |||
==Restauration== | ==Restauration== | ||
Ligne 103 : | Ligne 108 : | ||
Lorsque l'installeur vous demandera s'il faut configurer automatiquement phpmyadmin sur un serveur web, ne cochez aucune case et validez. | Lorsque l'installeur vous demandera s'il faut configurer automatiquement phpmyadmin sur un serveur web, ne cochez aucune case et validez. | ||
Si par erreur vous avez validé l'autoconfiguration pour apache, vous pouvez toujours désactiver la configuration ajoutée avec | |||
<pre>a2disconf phpmyadmin</pre> | |||
L'installeur vous demandera ensuite s'il doit configurer la base de donnée de phpmyadmin avec dbconfig-common. Choisissez oui. A l'écran suivant, vous devrez entrer le mot-de-passe de votre utilisateur mysql root. | L'installeur vous demandera ensuite s'il doit configurer la base de donnée de phpmyadmin avec dbconfig-common. Choisissez oui. A l'écran suivant, vous devrez entrer le mot-de-passe de votre utilisateur mysql root. | ||
Enfin, un invite vous demandera de choisir un mot-de-passe pour l'utilisateur phpmyadmin puis de le confirmer. | Enfin, un invite vous demandera de choisir un mot-de-passe pour l'utilisateur phpmyadmin puis de le confirmer. | ||
Ligne 133 : | Ligne 140 : | ||
AuthUserFile /srv/http/admin.domain.tld/.htpasswd | AuthUserFile /srv/http/admin.domain.tld/.htpasswd | ||
AuthGroupFile /srv/http/admin.domain.tld.htgroup | AuthGroupFile /srv/http/admin.domain.tld.htgroup | ||
require group root user | |||
</pre> | </pre> | ||
=Optimiser les réglages de MySQL= | =Optimiser les réglages de MySQL= | ||
MySQLTuner est un petit script perl qui vous proposera des optimisations pour votre configuration MySQL en fonction des statistiques de votre utilisation.<pre> | |||
MySQLTuner est un petit script perl qui vous proposera des optimisations pour votre configuration MySQL en fonction des statistiques de votre utilisation. | wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl | ||
<pre> | |||
wget | |||
chmod +x mysqltuner.pl | chmod +x mysqltuner.pl | ||
./mysqltuner.pl | ./mysqltuner.pl | ||
</pre> | </pre> | ||
Vous pouvez | Vous pouvez aussi essayer https://launchpad.net/mysql-tuning-primer | ||
=Optimiser les tables= | |||
<pre>mysqlcheck -o --all-databases</pre> | |||
=Quelques commandes MySQL= | =Quelques commandes MySQL= |