MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

まず init-connect を通じて mysql 接続を初期化し、次にインスタンスに接続する必要があります。

これを活用して、init-connect 中にユーザーの thread_id、ユーザー名、ユーザー アドレスを記録することで、db アクセス監査機能を実装します。

実装手順

1. 監査用のライブラリ テーブルを作成します。

ビジネス ライブラリとの競合を避けるには、独自のライブラリを別途作成します。

#データベーステーブルを作成するコード create database db_monitor;
db_monitor を使用します。
CREATE TABLE アクセスログ
(thread_id int(11) デフォルト NULL、#プロセスID
 log_time datetime デフォルト null、#ログイン時間 localname varchar(50) デフォルト NULL、#詳細な IP を含むログイン名
 matchname varchar(50) DEFAULT NULL、#ログインユーザーキー idx_log_time(log_time)
)ENGINE=InnoDB デフォルト文字セット=utf8; 

2. init-connectパラメータを設定する

このパラメータは動的に調整できます。また、このパラメータは設定ファイル my.cnf に追加する必要があることに注意してください。追加しないと、次回の再起動後に無効になります。

mysql> 'init_connect%' のような変数を表示します。
+---------------+-------+
| 変数名 | 値 |
+---------------+-------+
| 初期化接続 | |
+---------------+-------+
セット内の1行(0.00秒)

mysql> グローバル init_connect を 'db_monitor.accesslog(thread_id,log_time,localname,matchname) に挿入します。values(connection_id(),now(),user(),current_user());' を設定します。 

3. 一般ユーザーにaccesslogテーブルへの挿入権限を付与する

この点は重要です

このパラメータは通常のユーザーに対してのみ有効であり、スーパー権限を持つユーザーには機能しません。

通常のユーザーの場合は、この機能を追加した後に認証する必要があります。

db_monitor.accesslog への挿入権限を user@'xx.xx.xx.%' に付与します。

承認しない場合、データベースへの接続は失敗します。

accesslog テーブルへの挿入権限を持たないユーザー:

mysql> データベースを表示します。
エラー 2006 (HY000): MySQL サーバーが消えました
接続できません。再接続を試行しています...
接続ID: 7
現在のデータベース: *** なし ***

エラー 1184 (08S01): db への接続 7 が中止されました: 'unconnected' ユーザー: 'user2' ホスト: 'localhost' (init_connect コマンドが失敗しました) 

4. 監査機能の検証

ユーザーがテスト データベース内のテーブルを削除しました。binlog ログを使用してユーザーを追跡できるかどうか確認してみましょう。


バイナリログを表示:


どのユーザーが操作を実行したかを確認できるため、監査が完了します。

MySQL で init-connect を使用してアクセス監査機能を強化する方法については、上記の記事が皆さんに共有できるすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Spring Data JPAのAudit機能はデータベースの変更を監査します
  • Spring Data に基づく AuditorAware 監査機能のサンプル コード
  • springdataJPA がネ​​イティブ SQL をサポートする問題を解決する
  • SpringDataJPA ネイティブ SQL クエリ カプセル化操作
  • Spring Data JPA の監査機能の分析: データベースの変更を監査する

<<:  vue で h5 側のアプリを開きます (Android か Apple かを判断します)

>>:  Linux で文字列を整理するためのヒント

推薦する

VMware Workstation 仮想マシンのインストール操作方法

仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...

Mysql テーブル、列、データベースの追加、削除、変更、クエリの問題の概要

以下は私がまとめた基本的なSQL知識です。主に参考資料として、また将来の他の初心者の助けとして、私自...

Vue+nodeはオーディオ録音・再生機能を実現

結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありま...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...

シンプルなスネークゲームを実現するネイティブjs

この記事では、スネークゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...

Maven モードで Tomcat ソースコードを実行する方法

序文最近、Tomcat の起動プロセスを分析していました。Tomcat のソース コードはアイデア次...

MySQLでテーブルを作成し、フィールドコメントを追加する方法

コードと例を直接投稿する #テーブル作成時にコメントを記述する CREATE TABLE useri...

SQLインジェクションの詳しい解説 - セキュリティ編(第2部)

この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

Linux で最も頻繁に使用されるターミナル コマンドのトップ 10 のリストを取得します。

私が最も頻繁に使用するコマンドは次の通りです:選択肢CDギットls ssh須藤数週間前、私はこの R...

Nginx での SSL 証明書のインストールと展開手順の概要

目次問題の説明:インストール手順1. 準備2. サーバーにリモート接続する3. 証明書と秘密鍵ファイ...

Vue バックグラウンドでステータス ラベルをエレガントに記述する例

目次序文最適化変数の抽出二次包装 el-tag コンポーネント使用要約する序文バックエンドシステムの...

回転するフリップカードアニメーションの効果を実現するCSS

回転フリップ効果の CSS アニメーション、具体的な内容は次のとおりです。 1. まず2つのボックス...

Dockerコンテナを停止および削除できない問題の解決策

実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...

CSS ポインターイベント属性の使用に関する詳細な説明

フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...