sql:mysql

Ceci est une ancienne révision du document !


MySQL

Les logs sont par défaut dans /var/log/mysql/.

Le fichier de configuration est par défaut /etc/mysql/my.cnf


Installer le paquet mysql-server. L'alternative semble maintenant être mariadb-server et mariadb-client. Si utilisation avec PHP, également le paquet php-mysql (valable également pour MariaDB).

Pour configurer la sécurité du serveur, notamment définir le mot de passe root, lancer la commande mysql_secure_installation.


Installer le paquet mysql-client. La commande est ensuite mysql.

Options:

  • -h: préciser l'adresse de l'hôte. Par défaut, essaie la socket locale.
  • -u <user>
  • -p: affichera un prompt pour saisir le mot de passe
  • –ssl utilise SSL
  • <database>

Exécuter des commandes depuis un fichier

mysql <database> < script.sql

Exécuter des commandes sans lancer la CLI

mysql <database> -e "SELECT * FROM table"

Lister les bases de données

SHOW DATABASES;

Sélectionner une base de données

USE <database>;

Lister les tables

SHOW TABLES;

Obtenir les informations sur le serveur

\s

Supprimer un utilisateur

Source

DROP USER 'jeffrey'@'localhost';

cp /etc/letsencrypt/live/mysite.com/{chain,cert}.pem /var/lib/mysql/
openssl rsa -in /etc/letsencrypt/live/mysite.com/privkey.pem -out /var/lib/mysql/privkey.pem
chmod 400 /var/lib/mysql/*.pem
chown mysql:mysql /var/lib/mysql/*.pem

Ajouter dans le fichier de configuration de MySQL:

/etc/mysql/my.cnf
ssl_ca=/var/lib/mysql/chain.pem
ssl_cert=/var/lib/mysql/cert.pem
ssl_key=/var/lib/mysql/privkey.pem

Redémarrer MySQL:

service mysql restart

Les erreurs concernant SSL sont rapportées dans le fichier /var/log/mysql/errors.log.

Pour s'assurer que SSL est bien configuré:

mysql --ssl

Puis demander:

SHOW STATUS LIKE 'Ssl_cipher';

La valeur ne doit pas être vide.


Connexion interdite avec root

Source

Si PhpMyAdmin refuse de se connecter avec l'utilisateur root:

Dans un shell MySQL, connecté en tant que root:

SELECT USER, Host, plugin FROM mysql.user;

Si cette commande renvoie autre chose que mysql_native_password, exécuter les commandes suivantes:

USE mysql;
UPDATE USER SET plugin='mysql_native_password' WHERE USER='root';
FLUSH PRIVILEGES;

Fonctionne avec MySQL 5.5. À voir si cela persiste avec les mises à jour.

La meilleure solution semble être la création d'un utilisateur dédié à PhpMyAdmin


Source

Télécharger le paquet de MySQL pour l'installation via APT: https://dev.mysql.com/downloads/repo/apt/.

Installer le paquet avec dpkg.

apt update
apt install mysql-community-server

En root, en s'assurant que MySQL fonctionne, lancer la commande suivante:

mysql_upgrade -p

Source

Si mysql_upgrade échoue avec un problème d'accès pour l'utilisateur debian-sys-maint, il faut probablement corriger le mot de passe MySQL de cet utilisateur:

  1. le mot de passe est dans /etc/mysql/debian.cnf
  2. dans une console MySQL root: sudo mysql:
    ALTER USER 'debian-sys-maint'@'localhost' IDENTIFIED BY '<mdp>';

Sauvegardes incrémentales et compressées :

# Sauvegardes :
mkdir 20220306-1230-full
mariabackup --backup --stream=xbstream --extra-lsndir=$(pwd)/20220306-1230-full | gzip > $(pwd)/20220306-1230-full/backup.stream.gz
mkdir 20220306-1408
mariabackup --backup --stream=xbstream --extra-lsndir=$(pwd)/20220306-1540 --incremental-basedir=$(pwd)/20220306-1408/ | gzip > $(pwd)/20220306-1540/backup.stream.gz 
 
# Restauration :
cd 20220306-1230-full
mkdir backup
gunzip -c backup.stream.gz | mbstream -x -C backup/
cd ../20220306-1408
mkdir backup
gunzip -c backup.stream.gz | mbstream -x -C backup/
cd ..
mariabackup --prepare --target-dir 20220306-1230-full/backup
mariabackup --prepare --target-dir 20220306-1230-full/backup --incremental-dir 20220306-1408/backup
service mysql stop
mv /var/lib/mysql{,.old}
mariabackup --copy-back --target-dir 20220306-1230-full/backup/
chown -R mysql:mysql /var/lib/mysql
service mysql start
  • sql/mysql.1646584893.txt.gz
  • Dernière modification : 2022/03/06 17:41
  • de phsw