hoạt động đăng nhập mysql từ người dùng hoặc ip cụ thể


8

Tôi có máy chủ mysql.

Máy chủ được truy cập bởi ứng dụng của tôi và bởi kiểm toán viên bên ngoài (người sử dụng bàn làm việc mysql). Kiểm toán viên có người dùng và mật khẩu cụ thể và IP chuyên dụng và nó chỉ được cấp cho các đặc quyền được chọn.

Tôi cần phải đăng nhập các hoạt động từ kiểm toán viên. Có thể làm điều đó bằng cách nào đó? Nếu không tôi có thể đăng nhập các gói đến từ mạng không?

Câu trả lời:


9

Bạn có thể sử dụng nhật ký chung. Trong thực tế, bạn nên thử sử dụng phiên bản bảng MySQL của nhật ký chung.

Nếu bạn chạy này:

SHOW CREATE TABLE mysql.general_log\G

Bạn sẽ thấy một cái gì đó như thế này:

mysql> show create table mysql.general_log\G
*************************** 1. row ***************************
       Table: general_log
Create Table: CREATE TABLE `general_log` (
  `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `thread_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `command_type` varchar(64) NOT NULL,
  `argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
1 row in set (0.14 sec)

mysql>

Các user_hostcột sẽ ghi lại người sử dụng MySQL và địa chỉ IP / DNS Tên lệnh đến từ đâu.

Có lẽ bạn đang nói ngay bây giờ, "Bảng đó là một tệp CSV. Tôi sẽ phải phân tích cú pháp." Đó là sự thật, bạn sẽ phải. Tuy nhiên, bạn có biết rằng bạn có thể chuyển đổi nó thành bảng MyISAM không? Tôi thực sự đã thử điều này cho một trong những Khách hàng DB Hosting của chủ nhân của tôi và tôi đã viết một bài giải thích về nó (Xem Feb 24, 2011bài đăng bên dưới).

Dưới đây là các bước cơ bản:

  1. Tạo bảng mysql.general_log MyISAM

    Chạy như sau:

    CREATE TABLE mysql.general_log_original LIKE mysql.general_log;
    ALTER TABLE mysql.general_log ENGINE=MyISAM;
    ALTER TABLE mysql.general_log ADD INDEX (event_time);
  2. Kích hoạt nhật ký chung

    Thêm vào đây /etc/my.cnf

    [mysqld]
    log-output=TABLE
    general-log

    Nếu bạn cũng muốn phiên bản văn bản của nhật ký chung, hãy thêm phần này:

    [mysqld]
    log-output=TABLE,FILE
    general-log
    general-log-file=/var/log/mysql_general.log
  3. Khởi động lại mysql

    Đơn giản chỉ cần chạy service mysql restart

Tôi có nhiều bài viết về việc sử dụng nhật ký chung và nhật ký chậm dưới dạng bảng MyISAM:

CAUPAT

MySQL 5.5.28 gần đây đã giới thiệu plugin đăng nhập kiểm toán và cách cài đặt nó .

Dưới đây là các tùy chọn

Đây là những điểm mới đối với tôi vì vậy tôi không có ưu và nhược điểm nào tại thời điểm này trên Plugin Audit Log.


Tôi mới bạn sẽ trả lời này :), câu trả lời tuyệt vời, cảm ơn. Nhưng liệu hiệu suất nhật ký chung sẽ giảm (vì sẽ có hàng ngàn truy vấn ở đó)? Tôi cam kết rằng chỉ có thể cho phép người dùng được chỉ định kích hoạt nhật ký.
darpet

Nhìn lại bài đăng ngày 24 tháng 2 năm 2011 của tôi ( dba.stackexchange.com/a/1434/877 ). Tôi ánh xạ mysql.general_logtới một đĩa khác bằng cách sử dụng symlink. Điều đó sẽ làm giảm trục chính đĩa. Nếu mysql.general_logtrên cùng một đĩa với dữ liệu, thì nó có thể chậm đáng chú ý.
RolandoMySQLDBA

Tôi cũng sẽ xem qua plugin nhật ký kiểm toán - có vẻ thú vị.
darpet

1
Plugin nhật ký kiểm toán chỉ là một sản phẩm $$$ "Phiên bản doanh nghiệp": dev.mysql.com/doc/refman/5.5/en/audit-log-plugin.html
Michael - sqlbot

@ Michael-sqlbot Ôi hôi quá !!!
RolandoMySQLDBA
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.