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