web-dev-qa-db-ja.com

Amazon RDS-SQL Server-マスターユーザー権限

SQL Server Express Editionを使用してRDSインスタンスを作成しました。インスタンスの設定はすべて問題なく、接続にも成功しました。

しかし、マスターユーザーを使用して接続すると、サーバー上にデータベース、スキーマ、またはテーブルを作成できなくなります。ユーザーが操作を実行する権限を持っていないと言い続けます。

何が欠けているのでしょうか?マスターユーザーはデフォルトですべての特権を持つべきではありませんか?そうでない場合、どうすればよいですか?

助けてくれてありがとう!

編集:

これは私が実行しようとしているものです:

CREATE TABLE [dbo].[wt_category] (
    [sys_id] bigint NOT NULL IDENTITY(1,1) ,
    [sys_timestamp] timestamp NOT NULL ,
    [country] varchar(5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    [days] date NOT NULL ,
    [pages] varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL DEFAULT NULL ,
    [visits] int NULL DEFAULT NULL ,
    [page_impressions] int NULL DEFAULT NULL ,
    [visits_w_product] int NULL DEFAULT NULL ,
    [products] varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    PRIMARY KEY ([sys_id])
)

そして私はこのエラーを受け取ります:

[エラー] 42000-[SQL Server]データベース 'rdsadmin'でCREATE TABLE権限が拒否されました。

6
Nirmal

エラーメッセージは、ユーザーにデータベース「rdsadmin」に新しいテーブルを作成する権限がないことを示しています。

「rdsadmin」データベースが存在し、コマンドを実行しようとしているユーザーに適切な権限があるかどうかを確認します。

トラブルシューティング:

SQL Serverの場合、おそらく次のようにする必要があります。

SQL Server Express 2008に現在の管理ユーザーを追加

CREATE LOGIN [domain\username] FROM WINDOWS;
GO
EXEC sp_addsrvrolemember 'domain\username', 'sysadmin';
GO

MySQLの場合:

  • rdsadminは、RDSで作成され、すべてのグローバル権限(ローカルホストのみ)を持つ管理ユーザーです。これはAWS/RDSでのみ使用でき、ユーザーでは使用できません。
  • rDSセットアップウィザードでdb/userを作成したときに、ユーザー「test」が作成されました。これには、ほとんどのグローバル権限(%)がありました。

これらのアカウントには、どのデータベースに対しても特定の特権が付与されていません。必要に応じて、特権を明示的に付与する必要があります。

通常、これを行うには、(ターミナルで、またはSequel ProのようなGUIを使用して)ログインし、必要な特権を実行します。この例では、「test」ユーザーを使用してmysqlにログインします。

ログインしたら、必要なMySQLコマンドを実行できます。

http://kb.mediatemple.net/questions/788/HOWTO%3A+GRANT+privileges+in+MySQL#dv または http://library.linode.com/databases/mysql/Arch-linux の例がありますが、簡単な例を次に示します。

CREATE DATABASE testdb;
CREATE USER 'testuser'@localhost IDENTIFIED BY 'CHANGEME';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@localhost;

もちろん、適切なデータベース/ユーザー名/パスワードに置き換える必要があります(dbまたはユーザーが既に存在する場合は、db/user createコマンドをスキップできます)。

Localhostだけに特権を付与するか、達成しようとしていることに応じて何か異なるものを付与することができます。

4
Drew Khoury

Amazon RDS SQL Serverインスタンスでは、 'rdsadmin'データベースはAmazon RDSrdsaインスタンス管理用のユーザー。新しいRDSインスタンスでは、システム以外の唯一のデータベースとして表示されます。マスターユーザーはサーバー上でほとんどのアクションを実行する権限を持っていますが、このデータベースを変更することはできず、実際に変更する必要もありません。 RDSマスターユーザーの制限の詳細については、こちらをご覧ください。 Amazon RDS上のSQL Server

テーブルを作成するには、最初にデータ用の新しいデータベースを作成する必要があります。次に、その新しいデータベース内にテーブルを作成できます。

次のスクリプトは、DBの作成、テーブルの作成、挿入、選択、およびテーブルとDBの削除の例を示しています。 RDSの起動時に作成した「マスター」アカウントのログインを使用して、このスクリプトを問題なく実行するための特権を持っている必要があります。

USE master;

CREATE DATABASE NewDB;
GO

USE NewDB;

CREATE TABLE NewTable (Msg TEXT);

INSERT INTO NewTable (Msg) VALUES ('THIS SHOULD WORK');

SELECT * FROM NewTable;

DROP TABLE NewTable;

USE master;

DROP DATABASE NewDB;
4
DAC