授予和撤消用户

insrf1ej  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(286)

我还是gcp的新手。我有一个sql server。我有两个用户。第一个是“sqlserver”(这是gcp的默认值)和“usera”(这是新帐户)
我有这么多的数据库,我想'sqlserver'帐户是唯一一个谁可以访问一切。但是对于“usera”,我希望它只能访问1个数据库(比如databasea)
我试过撤销select,拒绝select,撤销all。但是usera仍然可以查询其他数据库。
有什么解决办法吗?谢谢您

s6fujrry

s6fujrry1#

使用gcp sql server创建的所有用户都创建为customerdbrootrole角色的成员,并且具有与sql server用户相同的权限。
您可以使用alter role命令更改任何用户的权限。
例如,可以使用以下脚本从customerdbrootrole中删除用户:

ALTER ROLE CustomerDbRootRole DROP MEMBER YourUser;

另外,我建议您通过以下查询检查所有youruser的权限:

SELECT 
    DB_NAME() AS DB
    ,P.name   AS Database_Principal
    ,P2.name  AS Ruolo
    ,P.type_desc
    ,P.create_date
FROM
    sys.database_principals P 
    INNER JOIN sys.database_role_members R ON R.member_principal_id = P.principal_id
    INNER JOIN sys.database_principals P2  ON P2.principal_id = R.role_principal_id 
WHERE
     P.[name] IN ('YourUser')
ORDER BY
     P.[name]

之后,您可以像上面那样使用alter role撤销所有不必要的权限。
在您的情况下,如果您只想将单个数据库的读取权限授予特定用户,我建议:
1-创建用户:

USE [YourDB]
GO

CREATE USER [YourUser] WITH DEFAULT_SCHEMA=[dbo]
GO

2-将用户添加到db\u datareader角色:

USE [YourDB]
GO

ALTER ROLE db_datareader ADD MEMBER [YourUser]
GO

相关问题