ホームページ  >  記事  >  データベース  >  init-connect を使用してアクセス監査機能を追加する mysql の例を共有する

init-connect を使用してアクセス監査機能を追加する mysql の例を共有する

零下一度
零下一度オリジナル
2017-04-21 15:56:562191ブラウズ

以下のエディターは、アクセス監査機能を強化するための 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 を追加することに注意してください。追加しない場合は、次回の再起動後に無効になります


3. 一般ユーザーにアクセスログテーブルへの挿入権限を付与します

この点は非常に重要ですこのパラメータは通常のユーザーに対してのみ有効です。スーパー権限を持つユーザーであっても効果はありません。

通常のユーザーの場合は、次の関数を追加した後に認証する必要があります:

grant insert on db_monitor.accesslog to user@'xx.xx.xx.%';

認証しない場合の結果は次のとおりです。 : データベースへの接続は失敗します:
アクセスログ テーブルに挿入権限のないユーザー:

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());';


4. 監査機能を確認します

ユーザーがテスト ライブラリ内のテーブルを削除したかどうかを確認します。 binlog ログと連携できます。追跡できるユーザー:

binlog の表示: init-connect を使用してアクセス監査機能を追加する mysql の例を共有する

どのユーザーが操作を実行したかを確認でき、監査が完了します。 init-connect を使用してアクセス監査機能を追加する mysql の例を共有する

以上がinit-connect を使用してアクセス監査機能を追加する mysql の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。