1

Informixを使用すると、次grant selectのようなテーブルで作業できます。

grant select on 'dba'.mytable to someuser as dba;

データベース内のすべてのテーブルでこれを実行するにはどうすればよいですか?

4

1 に答える 1

3

これを行う簡単な方法はありませんが (標準 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 つの可能性は、選択のみの役割を各ユーザーのデフォルトの役割として設定することです。

Server Studio Java Edition の使用

SSJEには、このタスクを簡素化する権限管理ツールがあります。

Open Admin の使用も

OATには、特権管理に役立つツールがあります。

于 2009-08-05T15:18:53.167 に答える