MySQLユーザー権限管理の詳細な説明

MySQLユーザー権限管理の詳細な説明

序文:

データベースのユーザー権限管理について理解されているかどうかわかりません。DBA にとって、ユーザー権限管理は避けられない仕事の一部です。特に本番データベースの場合、データベース ユーザーの権限は標準化された方法で管理する必要があります。この記事では、MySQL ユーザー権限管理の関連コンテンツを紹介します。

1. ユーザー権利の概要

データベース ユーザーを作成した後、まだ操作を実行することはできません。ユーザーに適切なアクセス権限を割り当てる必要があります。

MySQL のユーザー権限を簡単に理解すると、データベースでは、ユーザーに権限の範囲内でのみ操作を許可し、境界を越えることはできないということです。たとえば、選択操作のみ実行できる場合、更新操作は実行できません。 MySQL に接続できるのは特定の IP からのみであり、その IP 以外のマシンからは MySQL に接続できません。

MySQL では、ユーザー権限もレベルに分かれています。付与できる権限は次のとおりです。

  • 列レベル。テーブル内の特定の列に関連します。たとえば、UPDATE ステートメントを使用して、students テーブルの student_name 列の値を更新できます。
  • テーブル レベル。特定のテーブル内のすべてのデータに関連します。たとえば、SELECT ステートメントを使用して、students テーブル内のすべてのデータの権限を照会できます。
  • 特定のデータベース内のすべてのテーブルに関連するデータベース レベル。たとえば、既存のデータベース mytest に新しいテーブルを作成する権限を付与できます。
  • グローバル。MySQL 内のすべてのデータベースに関連します。たとえば、既存のデータベースを削除したり、新しいデータベースを作成したりできます。

権限情報は、mysql システム ライブラリの user、db、tables_priv、columns_priv、および procs_priv システム テーブルに保存されます。

  • ユーザー テーブル: ユーザー アカウント情報とグローバル レベル (すべてのデータベース) の権限を格納します。
  • db テーブル: データベース レベルの権限を格納します。これにより、どのホストのどのユーザーがこのデータベースにアクセスできるかが決まります。
  • tables_priv テーブル: テーブル レベルの権限を格納します。これにより、どのホストのどのユーザーがデータベース内のこのテーブルにアクセスできるかが決まります。
  • columns_priv テーブル: 列レベルの権限を格納します。これにより、どのホストのどのユーザーがデータベース テーブル内のこのフィールドにアクセスできるかが決まります。
  • procs_priv テーブル: ストアド プロシージャおよび関数レベルの権限を格納します。

公式ドキュメントを参照してください。付与できる権限は次の表のとおりです。

付与できる権限は多岐にわたるように思えますが、実際にはデータ、構造、管理の 3 つのカテゴリに大別でき、大まかに分類すると次のようになります。

2. 実際の権限管理

通常、データベース ユーザーに権限を付与するには grant ステートメントを使用します。まず create user ステートメントを使用してユーザーを作成し、その後権限を個別に付与することをお勧めします。例を通してこれを詳しく見てみましょう:

# ユーザーの作成 create user 'test_user'@'%' identifier by 'xxxxxxxx';

# グローバル権限 GRANT super, select on *.* to 'test_user'@'%';

# データベース権限 `testdb`.* に対する select、insert、update、delete、create、alter、execute を 'test_user'@'%' に GRANT します。

# テーブル権限 GRANT select,insert on `testdb`.tb to 'test_user'@'%';

# 列の権限 GRANT select (col1), insert (col1, col2) ON `testdb`.mytbl to 'test_user'@'%';

# GRANT コマンドの説明:
super,select は付与される特定の権限を示します。
ON は、権限が適用されるライブラリとテーブルを指定するために使用されます。
*.* では、先頭の * はデータベース名を指定するために使用され、末尾の * はテーブル名を指定するために使用されます。
TO はユーザーに権限を付与することを意味します。
'test_user'@'%' は test_user ユーザーを意味します。@ の後には制限されたホストが続きます。制限されるホストは IP、IP セグメント、ドメイン名、% のいずれかです。% は任意の場所を意味します。

#権限をフラッシュします。

# ユーザーの権限を表示します show grants for 'test_user'@'%';

# 権限を取り消す revoke delete on `testdb`.* from 'test_user'@'%';

権限管理は無視できないものです。利便性のためだけにデータベース ユーザーに過剰な権限を与えることはできません。特に本番データベースの場合は、権限制御を行う必要があります。プログラム ユーザーには追加、削除、変更、クエリなどの基本的な権限のみを付与し、個々のユーザーにはクエリ権限のみを付与することをお勧めします。

安全上の理由から、次の経験則に従うことをお勧めします。

  • ユーザーが不正行為をしないように、必要最小限の権限のみを付与します。たとえば、ユーザーがクエリのみを実行する必要がある場合は、選択権限のみが必要です。
  • ユーザーを作成するときは、ユーザーのログイン ホストを、通常は指定された IP またはイントラネット IP セグメントに制限します。
  • 各サービスごとに個別のデータベース ユーザーを作成します。 1 人のユーザーが 1 つのデータベースのみを操作できるのが最適です。
  • 各データベースのユーザー権限などの情報を、忘れないようにタイムリーに記録します。
  • 外部システム コールがある場合は、読み取り専用ユーザーを設定し、テーブルまたはビューに対して正確な権限を設定する必要があります。
  • 定期的に不要なユーザーをクリーンアップし、権限を取り消したり、ユーザーを削除したりします。

以上がMySQLユーザー権限管理の詳細な説明です。MySQLユーザー権限管理の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL ユーザー権限管理の実装
  • MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
  • MySQL ストアド プロシージャの作成、呼び出し、管理の詳細な説明
  • MySQL 実践演習 シンプルなライブラリ管理システム

<<:  画像をラベルとして使用すると、IE では for 属性が機能しません。

>>:  CSSレイアウトで中央揃えレイアウトを実現する方法

推薦する

ドロップダウンリスト選択ボックスを実装するJavaScript

この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...

W3C チュートリアル (9): W3C XPath アクティビティ

XPath は、XML ドキュメントの一部を選択するための言語です。 XPath は、XSLT、XQ...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...

URL 書き換えモジュール 2.1 URL 書き換えモジュールのルール記述

目次前提条件テストページの設定書き換えルールの作成命名規則モードの定義アクションの定義設定ファイル内...

Linux CentOS MySQL データベースのインストールと設定のチュートリアル

MySQLデータベースのインストールに関するメモ、みんなで共有a) MySQL ソースインストールパ...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...

トップに戻るボタンの例の JavaScript 実装

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Vue 折りたたみ表示の複数行テキスト コンポーネントの実装コード

折りたたみ表示の複数行テキストコンポーネント複数行のテキスト コンポーネントを折りたたんで表示し、展...

SQL でテーブルにフィールドとコメントを追加する方法

1. フィールドを追加します。 alter table テーブル名 ADD フィールド名 タイプ;例...

MySQL 5.7.30 のインストールとアップグレードの問題に関する詳細なチュートリアル

くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...

HTML テーブルタグチュートリアル (8): 背景画像属性 BACKGROUND

テーブルの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できます。基本的...

HTML内のフレームセットタグが正常に表示されない原因の解析と解決方法

<frameset></frameset>は皆さんもよくご存知のものです。こ...

CSS3 のフィルタプロパティの使用に関する詳細な説明

最近、イントラネットポータルを修正していたときに、フィルターを使用する必要がある箇所に遭遇しました。...

MySQLが2つのテーブルを関連付ける際のエンコードの問題と解決策

Mysqlが2つのテーブルを関連付けると、次のエラーメッセージが生成されます:照合順序の不正な組み合...