0

既存の Sybase ユーザーのすべての権限を新しいアカウントにコピーするにはどうすればよいですか? たとえば、一部のテーブルには select 権限しかなく、多くの proc には実行権限があります。元のアカウントでは、数百のデータベース オブジェクトのうち、数十のテーブルといくつかのストアド プロシージャへのアクセスが制限されていました。

4

1 に答える 1

1

これを複数回行う場合:ロールを作成し、ロールに権限を付与して、ユーザーをそのロールに割り当てます。

データベースで誰が何をしているのかを監査することが重要でない場合:新しいユーザーをデータベース内の古いユーザーにエイリアスします

sp_dropuser 'NEW_USERNAME'
go
sp_addalias 'NEW_USERNAME', 'EXISTING_USERNAME'
go

sp_helprotect EXISTING_USERNAMEは、そのユーザーの権限のリストを出力します。その出力をキャプチャし、それを使用してそれらの権限を新しいアカウントに追加できます。

次の手順では、システムテーブルを編集する必要があります。システムを壊さないように注意してください。適切なバックアップがあることを確認してください。*

ユーザー権限はsysprotectsテーブルに保存されます。理論的には、次のことができるはずです。

  1. 新規ユーザーログインの作成
  2. データベースにユーザーを追加
  3. ロールまたはエイリアスを追加します
  4. uid=EXISTING_USER_IDであるsysprotectsから一時テーブルへのアクセス許可を選択します。
  5. 一時テーブルを更新し、uidをEXISTING_USERからNEW_USERのuidに変更します
  6. sp_configureを使用して、システムテーブルの更新を許可します
  7. 更新された一時テーブルを使用して、sysprotectsにレコードを挿入します
  8. sp_configureを使用して、システムテーブルの更新を禁止します

免責事項 私はこれが機能することを確認するためにこれをテストしていないので、本番サーバーで試す前にこれをテストしてください。

于 2012-07-17T15:58:01.080 に答える