サーバーの権限システムは、どのように機能しますか?
更新日時:
対応OS: iOS
Navicat対応製品: Navicat for MySQL, Navicat for PostgreSQL
Navicat対応バージョン: すべて
MySQL & MariaDB
ユーザー権限に関する情報は、mysqlデータベース(つまり、mysqlという名前の出データベース)のuser、db、host、tables_priv、columns_privテーブルに保存されます。MySQLサーバーは、起動時、これらのテーブルの内容を読み込みます。
MySQLアクセスコントロールは、2つの段階を含みます:
- サーバーは、デスクトップ(ホストアドレスまたはIPアドレス)が接続を許可されているかどうかを確認します。
- 接続できると仮定すると、サーバーは、あなたが発行する各リクエストを確認します。これは、あなたがそのリクエストを実行する十分な権限を持っているかどうかを確認するためです。例えば、Create table権限、Drop table権限、Alter table権限。
MySQLサーバーは、アクセスコントロールの両方の段階でMysqlデータベースのUser、Db、Hostテーブルを使用します。
サーバーは、以下のように5つの権限テーブルを使用します:
mysql.userテーブルスコープフィールドは、入ってくる接続を許可するか拒否するかを決定します。許可される接続について、mysql.userテーブルに与えられたいかなる権限もユーザーのグローバル(superuser)権限を表します。これらの権限は、サーバーのすべてのデータベースに適用されます。
mysql.dbとmysql.hostテーブルは共に使用されます:
mysql.dbテーブルスコープフィールドは、どのユーザーがどのホストからどのデータベースにアクセスできるかを決定します。権限フィールドはどの操作が許可されているが決定します。
mysql.hostテーブルは、与えられるmysql.dbテーブルエントリーがさまざまなホストに適用するようにしたい時、mysql.dbの拡張機能として使用されます。 例えば、ユーザーがあなたのネットワークのさまざまなホストからデータベースを使用できるようにしたい場合、ユーザーのmysql.dbテーブルエントリーのmysql.hostの値を空のままにし、その後、それらのホストのそれぞれに関するエントリーをmysql.hostテーブルに追加します。
mysql.tables_privとmysql.columns_privテーブルは、mysql.dbテーブルとほとんど同じです。しかし、これらは、データベースレベルではなく、テーブルレベルと列レベルで適用されます。
PostgreSQL
ユーザー権限に関する情報は、pg_catalogと呼ばれるスキーマのpg_shadowテーブルに保存されます。PostgreSQLサーバーは、起動時、このテーブルの内容を読み込みます。
PostgreSQLアクセスコントロールは、2つの段階を含みます:
- サーバーは、デスクトップ(ホストアドレスまたはIPアドレス)が接続を許可されているかどうかを確認します。
- 接続できると仮定すると、サーバーは、あなたが発行する各リクエストを確認します。これは、あなたがそのリクエストを実行する十分な権限を持っているかどうかを確認するためです。例えば、Create table権限、Drop table権限、Alter table権限。