Làm cách nào để xem lịch sử MySQL?

Truy vấn cơ sở dữ liệu MySQL được thực thi hoặc thực hiện trong Bảng điều khiển lệnh MySQL có thể được truy xuất hoặc có thể được ghi lại. Trong bài viết này, mô tả liên quan đến cách lấy lệnh lịch sử Truy vấn SQL đã được thực thi hoặc thực hiện trước đó. Truy vấn được thực thi trong Bảng điều khiển lệnh MySQL thực sự được ghi lại hoặc được ghi trong một tệp có tên ‘. mysql_history'. Nó nằm trong thư mục chính của mỗi người dùng đã đăng nhập

Nói cách khác, nếu có một người dùng có tên 'myuser' đã đăng nhập vào một phiên đăng nhập nhất định được biểu thị bằng màn hình dấu nhắc bash và hơn nữa nếu có một lệnh được thực thi trong dấu nhắc bash để đăng nhập vào Máy chủ cơ sở dữ liệu MySQL, thì ngay sau khi một . mysql_history’ nằm trong thư mục chính của nó

Ví dụ: bên dưới là phiên của người dùng có tên 'myuser' và chính người dùng đó đang truy cập MySQL Command Console như hình bên dưới

myuser@hostname:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.12-0ubuntu1.1 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
mysql> show status;
+-----------------------+-------+-----------+
| Variable_name         | Value |           |
+-----------------------+-------+-----------+
| Aborted_clients       | 0     |           |
| ..                   |       |           |
| Tc_log_max_pages_used | 0     |           | 
| Tc_log_page_size      | 0     |           | 
| Tc_log_page_waits     | 0     |           |
|..                    |       |           |
+-----------------------+-------+-----------+
358 rows in set (0,06 sec)

mysql> quit
Bye
myuser@hostname:~$

Sau khi thực hiện một truy vấn nhất định, chỉ cần kiểm tra tệp có tên ‘. mysql_history’ trong thư mục chính hoặc thư mục của người dùng như hình bên dưới

myuser@hostname:~$ ls -al | grep .mysql_history
-rw------- 1 myuser myuser 34449 Jul 16 17:52 .mysql_history
myuser@hostname:~$

Vì vậy, để chứng minh liệu truy vấn SQL được thực thi cuối cùng có đang được ghi lại hay nó đã được ghi trong tệp hay không. Chỉ cần xem nội dung của tệp bằng bất kỳ trình soạn thảo văn bản nào có sẵn hoặc được cung cấp trong hệ điều hành như hình bên dưới

myuser@hostname:~$ vim .mysql_history
myuser@hostname:~$ 

Dưới đây là nội dung trong tệp trình bày truy vấn SQL cuối cùng được thực thi trong MySQL Command Console

Bài viết này nêu bật nhiều cách khác nhau trong Windows và Linux để lấy lịch sử các lệnh MySQL mà chúng tôi đã thực thi

Lịch sử lệnh MySQL

Chúng tôi sẽ sử dụng Windows và Linux (Ubuntu 20. 04) Hệ điều hành để tìm hiểu về các cách tiếp cận khác nhau để có được lịch sử của các lệnh MySQL

Đối với HĐH Windows, chúng tôi sẽ sử dụng MySQL Workbench và Windows Command Line (còn được gọi là cmd và dấu nhắc lệnh) để truy cập lịch sử của các lệnh MySQL ở dạng tệp và bảng

Trong trường hợp của HĐH Linux, chúng tôi sẽ sử dụng trình bao Linux (thiết bị đầu cuối) để truy cập lịch sử lệnh MySQL

Sử dụng Windows Command Line để lấy lịch sử lệnh trong MySQL

Ở đây chúng ta sẽ khám phá ba phương pháp để lấy lịch sử lệnh trong MySQL

Nhận lịch sử của tất cả các lệnh MySQL ở dạng bảng

  1. Mở Dòng lệnh Windows và chuyển đến thư mục MySQL

    myuser@hostname:~$ ls -al | grep .mysql_history
    -rw------- 1 myuser myuser 34449 Jul 16 17:52 .mysql_history
    myuser@hostname:~$
    
    2 có thể được đặt tại
    SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
    
    0 theo mặc định

  2. Đăng nhập vào MySQL bằng thông tin đăng nhập của bạn

  3. Chạy hai truy vấn sau để bật nhật ký truy vấn MySQL và chuẩn bị lịch sử của các lệnh MySQL ở dạng bảng

    SET GLOBAL log_output = 'table';
    SET GLOBAL general_log = 'on';
    

  4. Thực hiện truy vấn sau để lấy lịch sử của các lệnh MySQL đã thực thi làm đầu ra

    SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
    

Trong truy vấn trên, chúng tôi sử dụng phương pháp

SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
1 để chuyển đổi các giá trị thập lục phân của trường
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
2 thành văn bản. Bạn cũng có thể nhận các giá trị thuộc tính
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
2 ở dạng giá trị thập lục phân bằng MySQL phiên bản 5. 7 trở lên

Vì chúng tôi có không gian hạn chế trên dòng lệnh, chúng tôi đang chọn các trường cụ thể như sau

SELECT a.event_time,a.user_host, a.thread_id, a.server_id,
CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a LIMIT 10;

đầu ra

Làm cách nào để xem lịch sử MySQL?

Nhận lịch sử lệnh MySQL trong một tệp hoặc nhiều tệp

Chúng tôi có thể lấy tất cả lịch sử trong một tệp tại đường dẫn đã chỉ định

myuser@hostname:~$ ls -al | grep .mysql_history
-rw------- 1 myuser myuser 34449 Jul 16 17:52 .mysql_history
myuser@hostname:~$
0

Chúng tôi cũng có thể đi đến vị trí

SELECT a.event_time,a.user_host, a.thread_id, a.server_id,
CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a LIMIT 10;
2 để xem tất cả các tệp riêng lẻ có lịch sử của các lệnh MySQL

Làm cách nào để kiểm tra lịch sử trên MySQL?

Làm cách nào để hiển thị nhật ký truy vấn trong MySQL? .
Cho phép ghi nhật ký truy vấn trên cơ sở dữ liệu. SET toàn cầu general_log = 1;
Bây giờ bạn có thể xem nhật ký bằng cách chạy truy vấn này. CHỌN * TỪ mysql. chung_log;
Nếu bạn muốn tắt ghi nhật ký truy vấn trên cơ sở dữ liệu, hãy chạy truy vấn này. SET toàn cầu general_log = 0;

Tệp lịch sử MySQL ở đâu?

Trên Unix, mysql ghi các câu lệnh vào tệp lịch sử. Theo mặc định, tệp này được đặt tên. mysql_history trong thư mục chính của bạn .

Làm cách nào để xem truy vấn cuối cùng trong MySQL?

Để lấy bản ghi cuối cùng, đây là truy vấn. mysql> select *from getLastRecord ORDER BY id DESC LIMIT 1; Sau đây là kết quả.

Làm cách nào để nhận lệnh trước đó trong MySQL?

Phát hành lệnh \history trong MySQL Shell hiển thị các mục nhập lịch sử theo thứ tự chúng được phát hành, cùng với số mục nhập lịch sử của chúng, có thể được sử dụng với lệnh \history delete entry_number.