Archives de catégorie : DBMS

MySQL activations des logs

Activation des logs

Modifications à effectuer dans le fichier /etc/mysql/my.cnf

[mysqld_safe]
#logging
log_error=/var/log/mysql/mysql_error.log

[mysqld]

log_error=/var/log/mysql/mysql_error.log #general_log_file=/var/log/mysql/mysql.log ##log toutes les requêtes ATTENTION #general_log = 1 log_slow_queries=/var/log/mysql/mysql_slow.log long_query_time = 10 log-queries-not-using-indexes # requêtes sans indexation

Différents moyen de relancer Mysql en fonction de la distribution.

service mysql restart
systemctl restart mysql
/etc/init.d/mysql restart

Résultats

/var/log/mysql
-rw-rw----  1 mysql adm    5287 Jan  8 15:44 mysql_error.log
-rw-rw----  1 mysql adm  719013 Jan  8 15:48 mysql.log
-rw-rw----  1 mysql adm    7516 Jan  8 15:47 mysql_slow.log

Activation à chaud des slow query

Cela ne fonctionne uniquement avec une version MySQL > 5.1

mysql> set global slow_query_log=1;
mysql> set global slow_query_log_file = '/var/log/mysql/mysql-slow-query';
mysql> set global long_query_time=5;

Vérification des variables

mysql> show variables like '%log%';

Gestion des log binaires

Purge des binary logs

mysql> PURGE BINARY LOGS BEFORE '2017-09-17 18:00:00';

Affiche le nombre de jour de conservation des bin log

mysql> SHOW VARIABLES WHERE Variable_Name='expire_logs_days';

Fixe la variable sans restart mysql, penser à éditer le my.cnf

mysql> SET GLOBAL expire_logs_days=1;

MySQL Gestion des droits

Connexion

Toutes ces commandes sont à exécuter dans le shell : mysql> que l’on obtient avec

mysql -u username -p
mysql -p
mysql -S /var/lib/mysql/mysql.socket -p 

Création d’utilisateur et sa base de donnée

CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
CREATE DATABASE IF NOT EXISTS database_name;
GRANT ALL PRIVILEGES ON database_name.* TO  'USER'@'localhost' ;
flush privileges ;

Toujours effectuer un flush privilèges après une modification des droits, sinon ils ne sont pas pris en compte.

Affiche des utilisateurs

select user, host, password from mysql.user;

Changement mot de passe

set password for 'username'@'localhost' = PASSWORD('s1234pass');

Affiche les droits

show grants for username ; 
show grants for 'user'@'%';
show grants for 'username'@'x.x.x.x';

Suppression Utilisateur

drop user  "username"@"localhost" ;

Attribution de droits sur une base

GRANT ALL PRIVILEGES ON database_name.* TO 'user_name'@'x.x.x.x' IDENTIFIED BY 'lfgskill';

Résolution du problème de charset

Lors de la création de la table suivante, on se retrouve avec

CREATE DATABASE redmine CHARACTER SET utf8mb4;

Error: Specified key was too long; max key length is 767 bytes

solution

mysql -u root -p -e "CREATE DATABASE redmine DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;