有没有办法在 Azure PaaS 数据库中创建第二个登录名(用户)?
Is there a way to create a second login (with user) in the Azure PaaS database?
我们已将数据库从物理服务器移至 Azure PaaS SQL 数据库。应用程序使用服务器登录名连接到数据库。我需要创建另一个对数据库具有只读访问权限的登录帐户。有人可以帮忙吗?
我已经尝试过的东西。
CREATE LOGIN login123
WITH PASSWORD = *******
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
ALTER ROLE db_datareader ADD MEMBER login123
以上已成功执行,但当应用程序使用此登录名时,出现以下错误。
"The server pricipal "login123" 在当前安全上下文下无法访问数据库 "master"。无法打开用户默认数据库。登录失败。"
使用 Azure-Sql-database 您不能使用 sql 服务器登录连接到 master 数据库
您必须将要访问的数据库放入连接字符串中。
您可以找到有关此 link 的更多信息:
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-manage-logins#non-administrator-users
当你运行这个查询时:
CREATE LOGIN login123
WITH PASSWORD = *******
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
ALTER ROLE db_datareader ADD MEMBER login123
这意味着新用户只有数据库的只读权限。
查询运行在哪个数据库,只读权限是针对哪个数据库。
用户没有访问其他数据库或主数据库的权限。
详情请见:
如果你想让一个用户都对多个数据库有只读权限,你应该在不同的数据库中创建多个用户(相同)。使用一个登录映射到更多用户。
这里是 T-SQL 代码,我测试过它可以在 Azure SQL 数据库中运行:
USE master
CREATE LOGIN login123
WITH PASSWORD = '****'
GO
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = db_datareader
GO
USE Mydatabase
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
GO
ALTER ROLE db_datareader ADD MEMBER login123
GO
``````
希望对您有所帮助。
我们已将数据库从物理服务器移至 Azure PaaS SQL 数据库。应用程序使用服务器登录名连接到数据库。我需要创建另一个对数据库具有只读访问权限的登录帐户。有人可以帮忙吗?
我已经尝试过的东西。
CREATE LOGIN login123
WITH PASSWORD = *******
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
ALTER ROLE db_datareader ADD MEMBER login123
以上已成功执行,但当应用程序使用此登录名时,出现以下错误。 "The server pricipal "login123" 在当前安全上下文下无法访问数据库 "master"。无法打开用户默认数据库。登录失败。"
使用 Azure-Sql-database 您不能使用 sql 服务器登录连接到 master 数据库 您必须将要访问的数据库放入连接字符串中。
您可以找到有关此 link 的更多信息: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-manage-logins#non-administrator-users
当你运行这个查询时:
CREATE LOGIN login123
WITH PASSWORD = *******
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
ALTER ROLE db_datareader ADD MEMBER login123
这意味着新用户只有数据库的只读权限。
查询运行在哪个数据库,只读权限是针对哪个数据库。
用户没有访问其他数据库或主数据库的权限。
详情请见:
如果你想让一个用户都对多个数据库有只读权限,你应该在不同的数据库中创建多个用户(相同)。使用一个登录映射到更多用户。
这里是 T-SQL 代码,我测试过它可以在 Azure SQL 数据库中运行:
USE master
CREATE LOGIN login123
WITH PASSWORD = '****'
GO
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = db_datareader
GO
USE Mydatabase
CREATE USER login123
FOR LOGIN login123
WITH DEFAULT_SCHEMA = dbo
GO
ALTER ROLE db_datareader ADD MEMBER login123
GO
``````
希望对您有所帮助。