MySQL

Installation/Démarrage

Installation

Paquet

sudo apt-get install mysql-server

Sécurisation

sudo mysql_secure_installation

Installation version donnée sur RedHat

Ajouter le dépôt MariaDB

Créer le fichier /etc/yum.repos.d/MariaDB.repo

[mariadb] name = MariaDB baseurl = https://yum.mariadb.org/11.6/rhel9-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

Mettre à jour la liste des paquets et installer MariaDB

sudo dnf update sudo dnf install mariadb-server

Démarrer et activer le service

sudo systemctl start mariadb sudo systemctl enable mariadb

Vérifier la version installée

mariadb -V

lancement service ou vérification

sudo service mysql status

connexion si pas de mot de passe

mysql -u root

connexion si mot de passe

mysql -u root -p

changement de mot de passe root

mysql> SET password FOR "root"@"localhost" = password('Nouveau_mot_de_passe');

configuration en UTF-8

Editer le fichier /etc/mysql/my.cnf et ajouter les 2 lignes suivantes à la fin de la section [mysqld]

character_set_server=utf8
skip-character-set-client-handshake

redémarrer le service

sudo service mysql restart

vérification sous mysql

mysql> SHOW VARIABLES LIKE 'char%';

Désinstallation

Package

Redhat

yum remove mysql mysql-server

Ubuntu

sudo apt purge mysql mysql-server

Nettoyage

rm -rf /var/lib/mysql rm -f /var/log/mysqld.log

Administration

lister utilisateurs et host

mysql> SELECT USER,host FROM mysql.user;

créer utilisateur

mysql> CREATE USER "nom_utilisateur"@"localhost";

définir mot de passe

mysql> SET password FOR "nom_utilisateur"@"localhost" = password('mot_de_passe');

supprimer un utilisateur

mysql> DROP USER "nom_utilisateur"@"localhost";

créer une bdd

mysql> CREATE DATABASE <nombdd> CHARACTER SET = 'utf8';

donner tous les droits sur une bdd

mysql> GRANT ALL ON nom_base.* TO "nom_utilisateur"@"localhost";

supprimer les droits

mysql> REVOKE ALL privileges ON nom_base.* FROM "nom_utilisateur"@"localhost";

lister les droits

mysql> SHOW grants FOR "nom_utilisateur"@"localhost";

exportation bdd maBase

mysqldump -u root -p maBase > maBase_backup.sql

importer une base

mysql -u root -p maBase < maBase_backup.sql

supprimer une base de données

mysql> DROP DATABASE <database_name>;

Utilisation

SHOW DATABASES; CONNECT <database_name>; SHOW TABLES; SHOW COLUMNS FROM <table_name>; DESCRIBE <table_name>;

MariaDB

Compatibilité MariaDB / MySQL

https://mariadb.com/kb/fr/la-compatibilite-entre-mariadb-et-mysql/

Debug

Activer les fichiers de log

Dans le fichier de conf

Ajouter dans la section [mysqld] du fichier de conf /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
# Log des requêtes générales
general_log = 1
general_log_file = /var/log/mysql/mysql-general.log
# Log des requêtes lentes
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2 # Seuil en secondes pour considérer une requête comme lente
# Log des erreurs
log_error = /var/log/mysql/mysql-error.log

Redémarrer le service

sudo service mysql restart

De façon temporaire

Positionner les variables suivantes sur le serveur (valable jusqu'au prochain redémarrage du serveur) :

SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/log/mysql/mysql-general.log'; SET GLOBAL slow_query_log = 'ON'; SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log'; SET GLOBAL long_query_time = 2; SHOW VARIABLES LIKE '%log%';
S'assurer que les répertoires de logs existent et sont accessibles en écriture par l'utilisateur MySQL

Lire le fichier log-bin

mysqlbinlog --start-datetime="2017-08-08 09:00:00" /var/log/mysql/mysql-bin.000001