Làm cách nào để kiểm tra nhật ký cảnh báo trong MySQL?

Ghi nhật ký tất cả các lần thử hoặc chỉ những lần thất bại là một nhiệm vụ rất quan trọng trong một số tình huống. Thật không may, không có quá nhiều khả năng kiểm tra trong Cộng đồng MySQL, vì vậy tùy chọn đầu tiên để kiểm tra quy trình xác thực của MySQL là lấy tất cả thông tin chúng tôi cần từ nhật ký

Nhật ký truy vấn chung

Tùy chọn đầu tiên là Nhật ký truy vấn chung. Hãy xem một ví dụ

Kích hoạt nhật ký

Vỏ bọc

1

2

General_log_file         = / var/log/mysql/mysql.log

General_log             = 1

Người dùng được xác thực chính xác

Vỏ bọc

1

2

121227  8. 31. 49    38 Kết nối root<@localhost on

   38 Truy vấn chọn @@version_comment limit 1

Người dùng không được xác thực chính xác

Vỏ bọc

1

2

121227  8. 32. 18    39 Kết nối root<@localhost on

   39 Kết nối Quyền truy cập bị từ chối for user 'root'@'localhost' (using password: )

Vấn đề của Nhật ký truy vấn chung là nó sẽ ghi lại mọi thứ nên có thể làm giảm hiệu suất và bạn sẽ phải xử lý các tệp rất lớn trên các máy chủ được tải nhiều. biến general_log là biến động nên giải pháp có thể bật và tắt nhật ký ngay khi cần

Nhật ký lỗi

Nếu bạn chỉ quan tâm đến những lần đăng nhập không thành công thì có một cách tiếp cận khác và ít vấn đề hơn. từ 5. 5 có thể ghi các thông báo bị từ chối truy cập vào nhật ký lỗi

Chúng ta chỉ cần kích hoạt log_warnings với giá trị lớn hơn 1

Vỏ bọc

1

log_warnings = 2

Sau đó kiểm tra nhật ký lỗi

Vỏ bọc

1

121227  8. 44. 21 [Cảnh báo] Quyền truy cập . denied for user 'root'@'localhost' (using password: )

Thống kê người dùng

Nếu bạn đang sử dụng Máy chủ Percona thì có tùy chọn thứ ba để nhận thông tin về người dùng của chúng tôi, Thống kê người dùng. Như với các tùy chọn trước, chúng tôi có thể nhận được số lượng kết nối và kết nối không thành công do một người dùng cụ thể thực hiện chứ không phải ngày và giờ của những lần thử đó. Bên cạnh thông tin đó, chúng tôi có thể nhận được các số liệu thống kê khác có thể rất hữu ích nếu MySQL đang chạy trên môi trường nhiều bên thuê hoặc chúng tôi cần kiểm soát cách sử dụng tài nguyên

Hãy xem một ví dụ, trước tiên chúng tôi bật Thống kê người dùng trong. cnf

5. 5

Vỏ bọc

1

chỉ số người dùng = 1

5. 1

Vỏ bọc

1

userstat_running = 1

Sau đó, chúng tôi nhận được thông tin về một người dùng cụ thể

Vỏ bọc

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

mysql> chọn * từ user_statistics where user='root'\G

*************************** 1. hàng ***************************

                  NGƯỜI DÙNG. gốc

     TOTAL_CONNECTIONS. 25

CONCURRENT_CONNECTIONS. 0

        CONNECTED_TIME. 464

             BUSY_TIME. 96

              CPU_TIME. 19

        BYTES_RECEIVED. 62869617

            BYTES_SENT. 14520

  BINLOG_BYTES_WRITTEN. 0

          ROWS_FETCHED. 783051

          ROWS_UPDATED. 1017714

       TABLE_ROWS_READ. 1484751

       SELECT_COMMANDS. 14

       UPDATE_COMMANDS. 103

        OTHER_COMMANDS. 3556

   COMMIT_TRANSACTIONS. 0

ROLLBACK_TRANSACTIONS. 0

    DENIED_CONNECTIONS. 2

      LOST_CONNECTIONS. 16

         ACCESS_DENIED. 0

         EMPTY_QUERIES. 0

TOTAL_SSL_CONNECTIONS. 0

Ở đây chúng ta có thể thấy rằng root đã thực hiện tổng cộng 25 kết nối. Hai kết nối bị từ chối (mật khẩu sai) và 16 kết nối bị mất (không được đóng đúng cách). Ngoài thông tin đó, chúng tôi nhận được thời gian kết nối, byte nhận và gửi, hàng được truy cập, lệnh được thực thi, v.v. Thông tin rất có giá trị

Điều quan trọng cần đề cập là các bảng này được lưu trữ trong INFORMATION_SCHEMA và điều đó có nghĩa là sau khi khởi động lại mysqld, tất cả thông tin sẽ bị mất. Vì vậy, nếu bạn thực sự cần thông tin đó, bạn nên sao chép thông tin đó sang một bảng khác hoặc xuất sang tệp csv để phân tích thêm

Phần kết luận

Chúng tôi không có quá nhiều khả năng kiểm tra trong Cộng đồng MySQL nên việc ghi lại tất cả các sự kiện và sau đó lọc chúng bằng các tập lệnh tùy chỉnh là giải pháp tốt nhất mà chúng tôi có hiện nay. Nếu bạn đang sử dụng Máy chủ Percona, bạn có thể nhận được thông tin chi tiết hơn về những gì một người dùng cụ thể đang làm. Tất cả các tùy chọn có thể được kết hợp để đáp ứng nhu cầu của bạn

Làm cách nào để kiểm tra nhật ký trong MySQL?

Trên các hệ thống Ubuntu, vị trí mặc định cho MySQL là /var/log/mysql/error. đăng nhập. Trong nhiều trường hợp, các bản ghi lỗi được đọc dễ dàng nhất với chương trình less, một tiện ích dòng lệnh cho phép bạn xem các tệp nhưng không chỉnh sửa chúng. sudo less /var/log/mysql/error .

Nhật ký lỗi MySQL được lưu trữ ở đâu?

Máy chủ MySQL sử dụng nhật ký lỗi để ghi lại thông tin liên quan đến lỗi ngăn máy chủ khởi động. Nhật ký lỗi nằm trong thư mục dữ liệu được chỉ định trong tệp my. tệp ini .

Làm cách nào để kiểm tra nhật ký lỗi trong MySQL Workbench?

MySQL Workbench khởi động và các hành động SQL được ghi lại và lưu trữ trong thư mục log/. Thư mục này nằm trong thư mục MySQL Workbench của người dùng. Để tìm các tệp văn bản này, hãy chọn Hiển thị tệp nhật ký từ menu Trợ giúp .

Làm cách nào để kiểm tra nhật ký lỗi MySQL trong Windows?

Bạn sẽ tìm thấy nhật ký lỗi trong thư mục dữ liệu được chỉ định trong tệp my. tệp ini . Vị trí thư mục dữ liệu mặc định trong Windows là "C. \Tệp chương trình\MySQL\Máy chủ MySQL 5. 7\dữ liệu" hoặc "C. \ProgramData\Mysql".