新用户无法登录到 SQLAzure

我在 SQL Azure 上创建了一个新的读/写用户,如下所示:

-- Connected to master
create login [fred] with password = 'xxx';


-- Connected to my DB
create user [fred] from login fred;
EXEC sp_addrolemember 'db_datareader', 'fred';
EXEC sp_addrolemember 'db_datawriter', 'fred';

当我使用 SSMS 登录时,我得到一个说 Cannot open database "master" requested by the login. The login failed.的错误

我到底做错了什么或者错过了什么?

52545 次浏览

默认情况下,SSMS 尝试连接到 master,但是您的新帐户不能访问 master; 我推测只能访问用户数据库。

在 SSMS 的登录屏幕上,您还需要指定数据库名称; 只需单击 选项 > >图标,它将打开 Connection Properties 选项卡。在这里,指定要连接到的数据库名称。

在特定数据库 Database1中创建数据库用户后, 再次选择“ master”并创建数据库用户。 执行下面的语句两次-一次用于 Database1,另一次用于“ master”

CREATE USER appuser1 FROM LOGIN appuser1;

不幸的是,在 Azure 帮助中没有对此进行记录 Https://learn.microsoft.com/en-gb/azure/azure-sql/database/logins-create-manage

打开主数据库的新查询窗口并执行此命令

CREATE LOGIN AppLogin WITH password='XXXXXX'
GO


CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO

为你的数据库打开新的查询窗口

CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO


EXEC sp_addrolemember 'db_owner', 'AppUser';
GO

Source: 如何为 Azure SQL Database 创建自定义用户登录名

正如 Karol 在 Herve Roggero 的回复中所说的那样,即使在选择了数据库之后,我也遇到了同样的问题。

在我们的例子中,问题是我们在数据库中创建的用户被禁用了。 the blackened users are the users we added... and were like that

在数据库中运行以下脚本后,我们希望为每个用户连接:

  GRANT CONNECT TO [ourDbUser]

我们刷新了数据库的用户,现在启用了他们,然后我们能够成功地连接到数据库。

对我来说,问题在于在数据库上创建用户的人没有指定 FROM LOGIN,因此该用户可以在 Security-> Users 选项卡中使用,但是仍然不能登录。我必须重新创建用户,并将其链接到数据库中具有相同名称的登录名:

DROP USER [myuser]
GO


CREATE USER [myuser] FROM LOGIN [myuser] WITH DEFAULT_SCHEMA=[dbo]
GO

然后授予对数据库的正确权限,在我的例子中:

ALTER ROLE db_datareader ADD MEMBER [myuser]
ALTER ROLE db_datawriter ADD MEMBER [myuser]

另外两个让你犯错的原因:

  1. 服务器登录名和数据库用户必须相同。你不能有 APIUser 的 APILogin 链接,Azure 只是不喜欢它
  2. 在 Azure 的用户名中不允许使用连字符,所以你不能使用 API-User