Polecenie SQL do wyświetlania historii zapytań

Odpowiedzi:

161

próbować

 cat ~/.mysql_history

to pokaże ci wszystkie polecenia mysql uruchomione w systemie

Maysam Torabi
źródło
2
cóż, nie wszystkie , pomijanie występuje w przypadku niektórych, które zawierają ciągi znaków, takie jak „hasło”.
mckenzm
1
Zwykle nie jest też aktualny z otwartym MySQL CLI, więc prawdopodobnie będziesz musiał exitMySQL, a następnie przeczytać plik.
Joel Mellon
1
Pokazuje tylko polecenia wykonane przez zalogowanego użytkownika.
Christia
1
Jak to zrobić w
systemie Windows
Czy istnieje możliwość, że inne polecenia są wygaszone lub są nieuporządkowane? I czy dziennik aktualizuje się sam w czasie rzeczywistym?
Drubio,
32

Dla MySQL> 5.1.11 lub MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Spójrz na stół mysql.general_log

Jeśli chcesz wyprowadzić dane do pliku dziennika:

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

Jak wspomniał jeffmjack w komentarzach, ustawienia te zostaną zapomniane przed następną sesją, chyba że edytujesz pliki konfiguracyjne (np. Edytuj /etc/mysql/my.cnf, a następnie uruchom ponownie, aby zastosować zmiany).

Teraz, jeśli chcesz, możesz tail -f /var/log/mysql/mysql.log

Więcej informacji tutaj: Zmienne systemowe serwera

GTodorov
źródło
3
Tylko kilka wyjaśnień do powyższego: Polecenia kopiuj-wklej tutaj dotyczą pojedynczej sesji MySQL, np. Możesz je wprowadzić z interaktywnej linii poleceń MySQL. Jeśli chcesz, aby były one stałą funkcją Twojej instancji MySQL, musisz umieścić te polecenia w /etc/mysql/my.cnf i ponownie uruchomić usługę MySQL.
jeffmjack
Należy również pamiętać, że rejestrowanie zatrzyma się, jeśli /path/to/your/logfile.logzostanie usunięte, do czasu SET GLOBAL general_log_file = "/path/to/your/logfile.log";ponownego wykonania (lub może ponownego uruchomienia sesji, jeśli zmodyfikowałeś konfigurację?).
Skippy le Grand Gourou
21

(Linux) Otwórz terminal i ctrl+alt+t uruchom polecenie

 cat ~/.mysql_history

otrzymasz całą poprzednią historię zapytań mysql ciesz się :)

Vamsidhar Muggulla
źródło
18

Znajdziesz to tam

~/.mysql_history

Sprawisz, że będzie czytelny (bez znaków specjalnych) w ten sposób:

sed "s/\\\040/ /g" < .mysql_history
DimiDak
źródło
2

Spójrz ~/.myslgui/query-browser/history.xml tutaj możesz znaleźć ostatnie zapytania wykonane za pomocą mysql_query_browser (kilka dni)

user4493696
źródło
0

Możesz zobaczyć historię z ~ / .mysql_history. Jednak zawartość pliku jest kodowana przez wctomb. Aby wyświetlić zawartość:

powłoka> cat ~ / .mysql_history | python2.7 -c "import sys; print (''. join ([l.decode ('unicode-escape') for l in sys.stdin]))"

Źródło: Sprawdź historię zapytań MySQL z wiersza poleceń

GoYun.Info
źródło
-1

Możesz zajrzeć do pamięci podręcznej zapytań: http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm, ale może ona nie dawać dostępu do rzeczywistych zapytań i będzie bardzo trafienie i chybienie, jeśli zadziałało (zamierzona subtelna gra słów)

Ale przeglądarka zapytań MySQL najprawdopodobniej utrzymuje własną listę zapytań, które uruchamia, poza silnikiem MySQL. Musiałbyś zrobić to samo w swojej aplikacji.

Edycja: zobacz komentarz dan m prowadzący do tego: Jak wyświetlić ostatnie zapytania wykonane na MySQL? wygląda dobrze.

Kieren Johnstone
źródło