1

私はそれをグーグルで検索しましたが、何も見つかりませんでした。短い話ですが、ユーザーを作成し、SyBase のテーブルに付与しました。しかし、私がしようとすると

select * from table1

うまくいきませんでした。エラーが表示Permission denied: you don't have permission to select from "table1"され、次のようにテーブル名の前に dbname を追加しようとすると、機能します:

select * from dbname.table1

ユーザーの既定のデータベースが別のものであると思われるので、dbname を既定のデータベースに設定したいと考えています。誰でもこれを行う方法を知っていますか?

4

3 に答える 3

2

これは、データベース名 (またはログイン ポリシー) とは関係ありません。「dbname」は実際にはテーブルを所有するユーザーであるというコメントを考えると、ここで何が起こっているのか.

所有者なしでテーブル名を指定すると、サーバーはどのテーブルを意味するかを判断する必要があります。最初に、その名前で所有しているテーブルが検索されます。見つからない場合は、メンバーであるグループが所有するテーブルを探します。これらのグループの 1 つに、選択する権限のない「table1」という名前のテーブルがあると思われます。

所有者とともにテーブル名を指定すると、サーバーは使用するテーブルを正確に認識します。そのテーブルから選択する権限があるため、必要な結果が得られます

于 2013-07-24T14:10:31.277 に答える
1

IQ にはデフォルトのデータベース/スキーマがありません。代わりに、ログイン ポリシーを使用します。各データベースには、変更可能なログイン ポリシーが割り当てられています。カスタム ログイン ポリシーを作成することもできます。

ログイン ポリシーを指定せずにユーザー アカウントを作成すると、ルート ログイン ポリシーが自動的に取得されます。

詳細については、次の SAP Sybase IQ ドキュメントを確認してください。

IQ の概要: ユーザーとグループの管理

システム管理者ガイド V1: ユーザー ID と権限の管理

于 2013-07-24T13:22:28.650 に答える
0

ビューまたはプロシージャの使用は便利な方法です。つまり、(IQ 15.x) で「デフォルト」スキーマを確立するには、グループを使用します。基本的に、スキーマ所有者にグループを付与し、個々のログイン アカウント (または他のグループ) をそのグループのメンバーにします。これはユーザーにスキーマへのアクセス権を与えるだけであることに注意してください。つまり、オブジェクトの前にスキーマ/所有者名を付ける必要がなくなります (明示的な schema.object 命名によってのみ解決できるオブジェクト名の競合がある場合を除く)。これには、アクセス許可の付与は含まれません。テーブル所有者に関連する暗黙的な権限は継承されません。ただし、スキーマ/所有者もグループになっているため、そのレベルで権限を付与できます。

http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc00170.1540/doc/html/san1288042708174.html (ユーザー ID と権限の管理)を参照してください 。警告: この資料は、一般に、役に立つようになる前に、よく読んで実験する必要があります。

私が理解しているように、この方法は IQ 16 の新しい役割ベースのモデルを補完する (機能的に置き換えられる) ものです。まだコメントする準備ができていません。

于 2013-08-06T13:50:59.517 に答える