none
SQL SERVER数据库授权的问题 RRS feed

  • 问题

  • SQL SERVER数据库授权的问题,我们在SQL SERVER2008 R2数据库系统里面建立一个用户 k3foracc ,目前只给这个用户授予了‘AIS201202141748434’这个数据库的dbo只读权限。但是在用 k3foracc 登入SQL SERVER 数据库之后,却发现这个用户还可以访问其它数据库(如:图中的 ‘AIS20210309210001')有访问权限。请帮忙分析一下要如何解决。谢谢!

    2021年3月26日 7:17

答案

  • 你好,

    由于这个数据库是备份还原过来的,且没有迁移相关登录名,这可能会导致孤立用户。就算在新服务器上重建同名的登录名,但是SID不一致。

    建议你将登录名从原服务器迁移过来。

    或者使用以下方法找到孤立用户,然后重新链接“k3foracc ”服务器登录账户与数据库用户“k3foracc ”,将它们的SID改成一致。注意这个方法只适用于SQL Server帐号,不可用于Windows 帐号。

    USE databasename; --还原的数据库
    
    sp_change_users_login @Action='Report'; --检测孤立用户
    
    sp_change_users_login @Action='update_one', @UserNamePattern='k3foracc ', @LoginName='k3foracc' ;
    2021年4月7日 7:17

全部回复

  • 你好,

    此数据库用户 k3foracc对应的login具有什么样的权限,是什么服务器固定角色的成员,public?有没有另外赋予其他权限,例如CONNECT ANY DATABASE.

    另外该login是否在其他数据库存在数据库用户的映射。

    >>但是在用 k3foracc 登入SQL SERVER 数据库之后,却发现这个用户还可以访问其它数据库

    说明login k3forac要么在服务器端被授予了访问数据库的权限,要么在多个数据库存在用户映射。

    通过SSMS, 查看login或者数据库用户的属性,登录名和用户之间的对应关系是容易看出来的。

    2021年3月29日 2:25
  • 检查一下你赋予的权限。应该是没有正确赋予权限导致;


    family as water

    2021年3月29日 3:25
  • 如果只是能看到库名(无法访问内容),则是正常现象,默认是没有限制的

    如果在未授权下访问内容,则检查一下能访问的库中的账号授权情况,以及public/guest 的授权情况

    2021年3月31日 0:46
  • 授权应该是没有问题的;无论是通过管理界面授权,还是通过命令当时授权,都是一样
    2021年4月7日 6:20
  • 你好,

    打开SSMS, 使用具有管理员权限的用户(如SA)连接到SQL Server,在Security>Logins 下,右键单击登录用户名k3foracc 并选择属性,查看服务器角色和用户映射。


    2021年4月7日 6:35
  • 已经检查,这个数据库账号只映射了一个数据库
    因为这个数据库是从其他SQL  SERVER服务器的数据库先备份,再还原过来的;是不是与把这个备份数据库之前的权限属性带过来了?会与这个有关吗
    2021年4月7日 6:48
  • 你好,

    k3foracc是新建的登录名吗,还原的数据库中有用户映射到此登录名?该login属性里的服务器角色是什么。

    如果只是备份还原数据库,因为没有迁移登录名,权限属性作用范围只限于这个数据库。


    2021年4月7日 6:57
  • 重新建立了用户名也是一样的问题;
    2021年4月7日 7:05
  • 你好,

    由于这个数据库是备份还原过来的,且没有迁移相关登录名,这可能会导致孤立用户。就算在新服务器上重建同名的登录名,但是SID不一致。

    建议你将登录名从原服务器迁移过来。

    或者使用以下方法找到孤立用户,然后重新链接“k3foracc ”服务器登录账户与数据库用户“k3foracc ”,将它们的SID改成一致。注意这个方法只适用于SQL Server帐号,不可用于Windows 帐号。

    USE databasename; --还原的数据库
    
    sp_change_users_login @Action='Report'; --检测孤立用户
    
    sp_change_users_login @Action='update_one', @UserNamePattern='k3foracc ', @LoginName='k3foracc' ;
    2021年4月7日 7:17