Informixを使用すると、次grant select
のようなテーブルで作業できます。
grant select on 'dba'.mytable to someuser as dba;
データベース内のすべてのテーブルでこれを実行するにはどうすればよいですか?
Informixを使用すると、次grant select
のようなテーブルで作業できます。
grant select on 'dba'.mytable to someuser as dba;
データベース内のすべてのテーブルでこれを実行するにはどうすればよいですか?
これを行う簡単な方法はありませんが (標準 SQL または Informix のいずれか)、その特定の特権は通常デフォルトで付与されるため、通常は必要ありません。ただし、実際には、より一般的な操作も行いたいと考えており、どのようなオプションがあるかを知りたいと考えています。
目的とシステムのセットアップ方法に応じて、さまざまな方法で目標を達成できます。
SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
' TO someuser AS dba;'
FROM "informix".systables
WHERE tabid >= 100;
これから出力を取得し、プログラムにフィードします。特に不要な出力が生成されないため、ジョブにSQLCMDを使用します。
sqlcmd -d dbname -e "
SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
' TO someuser AS dba;'
FROM "informix".systables
WHERE tabid >= 100;" |
sqlcmd -d dbname -f -
シェルを回避するには、追加のバックスラッシュが必要です。' -f -
' オプションは厳密には必要ありませんが、2 番目の SQLCMD が標準入力から読み取ることを明示してください。DB-Access を使用する場合、DB-Access が生成する言葉遣いについて心配する必要があります。これが、最初に SQLCMD を作成した理由です。
明らかに、このソリューションはかなり簡単にスクリプト化して一般化できます。引用符の使用には注意する必要があります。
もう 1 つのオプションは、必要なすべてのアクセス許可を持つ役割を作成し、必要に応じてその役割をユーザーに付与することです。これの欠点は、接続する人がその特権を持つように、ソフトウェアでロールを設定する必要があることです。1 つの可能性は、選択のみの役割を各ユーザーのデフォルトの役割として設定することです。
SSJEには、このタスクを簡素化する権限管理ツールがあります。
OATには、特権管理に役立つツールがあります。