>  기사  >  데이터 베이스  >  액세스 감사 기능을 추가하기 위해 init-connect를 사용하는 mysql의 예를 공유하세요.

액세스 감사 기능을 추가하기 위해 init-connect를 사용하는 mysql의 예를 공유하세요.

零下一度
零下一度원래의
2017-04-21 15:56:562239검색

다음 편집기에서는 init-connect를 사용하여 액세스 감사 기능을 향상시키는 mysql 구현에 대한 기사를 제공합니다. 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 에디터를 따라가서 살펴보겠습니다

Mysql 연결은 먼저 init-connect를 통해 초기화한 후 인스턴스에 연결해야 합니다.

이를 활용하여 init-connect 시 사용자의 thread_id, 사용자 이름, 사용자 주소를 기록하여 db 액세스 감사 기능을 구현합니다.

구현 단계

1. 감사용 라이브러리 테이블을 만듭니다.

비즈니스 라이브러리와 충돌하지 않도록 별도로 라이브러리를 만드세요.


#建库表代码
create database db_monitor ;
use db_monitor ;
CREATE TABLE accesslog
( thread_id int(11) DEFAULT NULL,  #进程id
 log_time datetime default null,  #登录时间
 localname varchar(50) DEFAULT NULL, #登录名称,带详细ip
 matchname varchar(50) DEFAULT NULL, #登录用户
 key idx_log_time(log_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. init-connect 매개변수 구성

이 매개변수는 동적으로 조정될 수 있으며 구성 파일 my.cnf에 추가해야 합니다. 그렇지 않으면 다음에 다시 시작할 때 유효하지 않게 됩니다.


mysql> show variables like 'init_connect%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| init_connect |    |
+---------------+-------+
1 row in set (0.00 sec
mysql> set global init_connect='insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user());';

3. 일반 사용자에게 액세스 로그 테이블에 대한 삽입 권한을 부여합니다

이 점이 매우 중요합니다.

이 매개변수는 일반 사용자에게만 적용되며 슈퍼 권한이 있는 사용자에게는 적용되지 않습니다.

일반 사용자인 경우 이 기능을 추가한 후

user@'xx.xx.xx에게 db_monitor.accesslog에 대한 삽입 권한을 부여해야 합니다. % ';

인증하지 않으면 데이터베이스 연결이 실패합니다.

액세스 로그 테이블에 삽입 권한이 없는 사용자:


mysql> show databases;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:  7
Current database: *** NONE ***
ERROR 1184 (08S01): Aborted connection 7 to db: 'unconnected' user: 'user2' host: 'localhost' (init_connect command failed)

4. 감사 기능 확인

사용자가 테스트 라이브러리에서 테이블을 삭제했는지 확인해 보겠습니다. binlog 로그를 사용하여 확인하세요.

액세스 감사 기능을 추가하기 위해 init-connect를 사용하는 mysql의 예를 공유하세요.

binlog 보기:

액세스 감사 기능을 추가하기 위해 init-connect를 사용하는 mysql의 예를 공유하세요.

감사를 완료하기 위해 작업을 수행한 사용자를 확인하세요.

위 내용은 액세스 감사 기능을 추가하기 위해 init-connect를 사용하는 mysql의 예를 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.