154 votes

Commande SQL pour afficher l'historique des requêtes

Je voudrais afficher l'historique de mes commandes sql exécutées dans mon navigateur de requêtes MYSQL. Quelle est l'instruction sql permettant d'afficher l'historique ?

6 votes

Ça ressemble à un repostage de cette question : stackoverflow.com/questions/650238/

0 votes

214voto

Maysam Points 336

Essayez

 cat ~/.mysql_history

cela vous montrera toutes les commandes mysql exécutées sur le système

2 votes

Eh bien non tous la suppression se produit pour certains qui contiennent des chaînes comme "password".

1 votes

De plus, il n'est généralement pas mis à jour avec votre CLI MySQL ouvert, ce qui vous obligera probablement à exit MySQL lit alors le fichier.

3 votes

Cela ne montre que les commandes exécutées par l'utilisateur qui est connecté.

41voto

DimiDak Points 515

Vous le trouverez là.

~/.mysql_history

Vous le rendrez lisible (sans les échappatoires) comme ceci :

sed "s/\\\040/ /g" < .mysql_history

41voto

GTodorov Points 1487

Pour MySQL > 5.1.11 ou MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Jetez un coup d'œil au tableau mysql.general_log

Si vous voulez sortir dans un fichier journal :

  1. SET GLOBAL log_output = "FILE";
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log"
  3. SET GLOBAL general_log = 'ON';

Comme mentionné par jeffmjack dans les commentaires, ces paramètres seront oubliés avant la prochaine session, à moins que vous ne modifiiez les fichiers de configuration (par exemple, éditer /etc/mysql/my.cnf puis redémarrer pour appliquer les changements).

Maintenant, si vous voulez, vous pouvez tail -f /var/log/mysql/mysql.log

Plus d'informations ici : Variables du système du serveur

4 votes

Juste quelques précisions sur ce qui précède : Les commandes copier-coller présentées ici sont destinées à une seule session de MySQL, c'est-à-dire que vous pouvez les saisir à partir de la ligne de commande interactive de MySQL. Si vous voulez qu'elles soient une caractéristique permanente de votre instance MySQL, vous devez mettre ces commandes dans /etc/mysql/my.cnf et redémarrer le service MySQL.

0 votes

Notez également que la journalisation s'arrêtera si /path/to/your/logfile.log est supprimé, jusqu'à ce que vous exécutiez SET GLOBAL general_log_file = "/path/to/your/logfile.log"; (ou peut-être redémarrer la session si vous avez modifié la configuration).

22voto

(Linux) Ouvrez votre terminal ctrl+alt+t exécuter la commande

 cat ~/.mysql_history

vous obtiendrez l'historique de toutes les requêtes mysql précédentes, profitez-en :)

3voto

Sérgio Points 854

Réponse de @GoYun.Info mais avec python 3

cat ~/.mysql_history | python3 -c "import sys; print(''.join([l.encode('utf-8').decode('unicode-escape') for l in sys.stdin]))"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X