my sql 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.일반 사용자 에 게 accesslog 표 에 대한 insert 권한 부여그 점 이 중요 해 요.
이 매개 변 수 는 일반 사용자 에 게 만 적용 되 며 슈퍼 권한 이 있 는 사람 은 모두 작용 하지 않 습 니 다.
일반 사용자 라면 이 기능 을 추가 한 후 권한 을 부여 해 야 합 니 다.
grant insert on db_monitor.accesslog to user@'xx.xx.xx.%';
권한 을 부여 하지 않 은 결 과 는 데이터 베 이 스 를 연결 하 는 데 실패 합 니 다.
accesslog 표 에 insert 권한 이 없 는 사용자:
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.감사 기능 검증한 사용자 가 test 라 이브 러 리 에 표를 삭 제 했 습 니 다.binlog 로그 에 맞 춰 어느 사용 자 를 추적 할 수 있 는 지 확인 하 십시오.
binlog 보기:
어떤 사용자 가 조작 을 해서 감 사 를 마 쳤 는 지 알 수 있다.
이상 의 my sql 은 init-connect 를 이용 하여 방문 감사 기능 을 추가 하 는 실현 은 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.