4D v16

GRANT

ホーム

 
4D v16
GRANT

GRANT  


 

 

 GRANT[READ | READ_WRITE | ALL] ON sql_name TO sql_name

説明  

GRANT コマンドはsql_name スキーマ (第一引数) に割り当てるアクセス権を設定するために使用します。これらのアクセス権は、二番目のsql_name 引数で指定する4Dユーザグループに割り当てられます。

READREAD_WRITEそしてALL キーワードを使用して、テーブルに許可されるアクセス権を指定します:

  • READ は読み込みのみアクセスを設定します (データ)。デフォルト: <Everybody>
  • READ_WRITE は読み書きアクセスを設定します (データ)。デフォルト: <Everybody>
  • ALL はフルアクセスモードを設定します (データとストラクチャ)。デフォルト: <Nobody>

各アクセスタイプはそれぞれ個別に設定される点に留意してください。あるグループに READ アクセス権のみを設定した場合、この設定は効果を持たないでしょう。なぜなら当該のグループおよび他のグループも、デフォルトですべてのグループに対し設定されている READ_WRITE アクセスが有効だからです。READ アクセスを設定するには GRANT を二回呼び出さなければなりません (例題 2参照)。

アクセスコントロールは外部接続にのみ適用されます。Begin SQL/End SQLタグやSQL EXECUTEなどのコマンドで4D内で実行されるSQLコードは依然としてフルアクセスを持っています。

互換性に関する注意: 以前のバージョンのデータベースをバージョン11.3以降に変換する際、(アプリケーション環境設定のSQLページで設定された) グローバルアクセス権がデフォルトスキーマに転送されます。

二番目の sql_name 引数には、スキーマにアクセス権を割り当てたい4Dユーザグループ名を指定しなければなりません。このグループは4Dデータベースに存在していなければな りません。

注: 4Dはグループ名にスペースやアクセント文字を許可しますが、これはSQL標準で許可されていません。この場合、グループ名を [ と ] の間に記述します。例えば: GRANT READ ON [my schema] TO [the admins!]

データベースのDesignerとAdministratorのみがスキーマを変更できます。

4D はアクセス権とは独立して、参照整合性に関する原則を適用します。例えば2つのテーブルTable1とTable2があり、N対1のリレーション (Table2 -> Table1) で接続されているとします。 Table1はスキーマS1に属し、Table2はスキーマS2に属します。スキーマS1へのアクセス権を持つが、S2へのアクセス権を持たないユーザは、Table1のレコードを削除できます。この場合、参照整合性の原則を適用するため、Table1の削除されたレコードにリレートするTable2のレコードも削除されます。

"Power_Users" グループに、MySchema1のデータへの読み書きアクセスを許可します:

GRANT READ_WRITE ON MySchema1 TO POWER_USERS

"Readers" グループに読み込みのみアクセスを設定します。この場合 (READ_WRITE アクセスを持つグループが <Everybody> でなくなるため)、最低一つのグループに READ_WRITE アクセスを設定しなければなりません (ここでは"Admin"):

GRANT READ ON MySchema2 TO Readers /*READ アクセスを設定*/
GRANT READ_WRITE ON MySchema2 TO Admins /*READ_WRITEアクセスを特定のグループに限定して設定*/



参照 

ALTER SCHEMA
CREATE SCHEMA
REVOKE

 
プロパティ 

プロダクト: 4D
テーマ: SQLコマンド

 
履歴 

 
ARTICLE USAGE

SQLリファレンス ( 4D v16)