Lệnh SQL để hiển thị lịch sử truy vấn


112

Tôi muốn hiển thị lịch sử lệnh sql đã thực thi của mình trong Trình duyệt truy vấn MYSQL. Câu lệnh sql để hiển thị lịch sử là gì?


6
nghe giống như một bài đăng lại của câu hỏi này: stackoverflow.com/questions/650238/…
lazarus

Câu trả lời:


161

thử

 cat ~/.mysql_history

điều này sẽ hiển thị cho bạn tất cả các lệnh mysql đã chạy trên hệ thống


2
không phải tất cả , sự đàn áp xảy ra đối với một số chứa các chuỗi như "mật khẩu".
mckenzm

1
Nó cũng thường không được cập nhật với MySQL CLI đang mở của bạn, vì vậy bạn có thể phải sử dụng exitMySQL sau đó đọc tệp.
Joel Mellon

1
Điều này chỉ hiển thị các lệnh được thực thi bởi người dùng đã đăng nhập.
Christia

1
Cách thực hiện điều này trong windowss
ßiansor Å. Ålmerol

Có khả năng là các lệnh khác bị chặn hoặc chúng không có thứ tự? Và, nhật ký có tự cập nhật nó trong thời gian thực không?
Drubio

32

Đối với MySQL> 5.1.11 hoặc MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Hãy nhìn vào bảng mysql.general_log

Nếu bạn muốn xuất ra tệp nhật ký:

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

Như đã đề cập bởi jeffmjack trong nhận xét, các cài đặt này sẽ bị quên trước phiên tiếp theo trừ khi bạn chỉnh sửa tệp cấu hình (ví dụ: chỉnh sửa /etc/mysql/my.cnf, sau đó khởi động lại để áp dụng thay đổi).

Bây giờ, nếu bạn muốn bạn có thể tail -f /var/log/mysql/mysql.log

Thông tin thêm tại đây: Biến hệ thống máy chủ


3
Chỉ cần làm rõ một số điều ở trên: Các lệnh sao chép-dán ở đây dành cho một phiên duy nhất của MySQL, ví dụ: bạn có thể nhập các lệnh này từ dòng lệnh MySQL tương tác. Nếu bạn muốn chúng là một tính năng vĩnh viễn của phiên bản MySQL của mình, bạn cần đặt các lệnh đó vào /etc/mysql/my.cnf và khởi động lại dịch vụ MySQL.
jeffmjack

Cũng lưu ý rằng việc ghi nhật ký sẽ dừng nếu /path/to/your/logfile.logbị xóa, cho đến khi bạn thực thi SET GLOBAL general_log_file = "/path/to/your/logfile.log";lại (hoặc có thể khởi động lại phiên nếu bạn đã chỉnh sửa cấu hình?).
Skippy le Grand Gourou

21

(Linux) Mở Terminal của bạn, ctrl+alt+t chạy lệnh

 cat ~/.mysql_history

bạn sẽ nhận được tất cả lịch sử truy vấn mysql trước đó tận hưởng :)


18

Bạn sẽ tìm thấy nó ở đó

~/.mysql_history

Bạn sẽ làm cho nó có thể đọc được (mà không cần thoát) như thế này:

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

2

Nhìn vào ~/.myslgui/query-browser/history.xml đây, bạn có thể tìm thấy các truy vấn cuối cùng được thực hiện với mysql_query_browser (cách đây vài ngày)



-1

Bạn có thể xem bộ đệm truy vấn: http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm nhưng nó có thể không cung cấp cho bạn quyền truy cập vào các truy vấn thực tế và sẽ rất hit-and-miss nếu nó hoạt động (ý định chơi chữ tinh tế)

Nhưng MySQL Query Browser rất có thể duy trì danh sách truy vấn của riêng nó mà nó chạy, bên ngoài MySQL engine. Bạn sẽ phải làm điều tương tự trong ứng dụng của mình.

Chỉnh sửa: xem bình luận của dan m dẫn đến điều này: Làm thế nào để hiển thị các truy vấn cuối cùng được thực thi trên MySQL? trông âm thanh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.