Назад | Перейти на главную страницу

Amazon RDS - SQL Server - привилегии главного пользователя

Я создал экземпляр RDS с SQL Server Express Edition на нем. С настройкой экземпляра все было хорошо, и мне также удалось к нему подключиться.

Но после подключения с использованием главного пользователя я не могу создать ни одну базу данных, схему или таблицу на сервере. Он постоянно говорит, что у пользователя нет разрешения на выполнение операции.

Что я мог упустить? Разве главный пользователь не должен иметь все права по умолчанию? Если нет, как мне продолжить?

Спасибо за любую помощь!

Редактировать:

Вот что я пытаюсь запустить:

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])
)

и я получаю эту ошибку:

[Err] 42000 - [SQL Server] отказано в разрешении CREATE TABLE в базе данных 'rdsadmin'.

На экземпляре Amazon RDS SQL Server значок 'rdsadmin'база данных используется Amazon RDS rdsa пользователь для управления экземпляром. Он будет отображаться как единственная несистемная база данных в новом экземпляре RDS. Хотя главный пользователь имеет привилегии для выполнения большинства действий на сервере, вы не сможете изменять эту базу данных, да и не должны это делать. Дополнительная информация об ограничениях главного пользователя RDS доступна здесь: SQL Server на Amazon RDS

Чтобы создать таблицу, вам нужно сначала создать новую базу данных для ваших данных, а затем вы можете создать свою таблицу в этой новой базе данных.

Следующий сценарий дает пример создания БД, создания таблицы, вставки, выбора и последующего удаления таблицы и БД. Используя "основную" учетную запись для входа в систему, которую вы создали при запуске 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;

Сообщение об ошибке указывает на то, что у вашего пользователя нет разрешения на создание новой таблицы в базе данных «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, а не вами.
  • когда я создал db / user в мастере настройки RDS, был создан мой пользовательский «test», у него было большинство глобальных привилегий (на%).

Ни одна из этих учетных записей не имела каких-либо конкретных привилегий для какой-либо базы данных. Вы должны явно предоставлять привилегии по мере необходимости.

Обычно я делал это, войдя в систему (либо в терминале, либо с помощью графического интерфейса, такого как Sequel Pro) и выполнив необходимые привилегии. В этом примере я должен войти в 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;

Конечно, вам нужно будет заменить правильную базу данных / имя пользователя / пароль (вы можете пропустить команды создания базы данных / пользователя, если база данных или пользователь уже существует).

Вы можете предоставить привилегию только на localhost или что-то другое, в зависимости от того, чего вы пытаетесь достичь.