• mssql 用户只能查看授权的数据库


    问题背景:公司的一台数据库服务器上放在多个数据库,每个数据库都使用不同的登录名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的
    一旦客户那边使用配置文件中的数据库信息连接到数据库他就能够看到服务器上所有的数据库,虽然它不能访问其他的数据库但还是有安全隐患的
    现在我需要的是指定的登录用户只能看到并访问它自己的数据库而不能看到其他的数据库,于是在网络上找到解决方案
     
    复制代码
    --创建测试数据库
    Create database Test;
    USE master
    GO
    --通过sp_addlogin创建登录名
    --TestUser:用户登陆账号
    --Test123456:用户登陆密码
    execute sp_addlogin 'TestUser','Test123456'
    --在数据库Test里创建数据库TestUser账号
    --每一个TestUser为登陆名
    --第二个TestUser为数据库账号
    execute sp_grantdbaccess 'TestUser','TestUser'
    --将TestUser账号添加到数据库角色为数据库所有者
    execute sp_addrolemember 'db_owner','TestUser'
    复制代码
     
    在SSMS中使用“TestUser”账号登录后就可能看到所有的数据库
    但如果访问的数据库不是Test则为提示没有权限
     
    复制代码
    USE master
    GO
    --将所有数据库的查看权限给Public角色,每个登录用户只能查看指定的数据库
    --此语句会导致服务器上所有的用户在没有设置数据库权限的情况下不会显示任何数据库,有可能会影响正常使用
    DENY VIEW any DATABASE TO PUBLIC;
    --将数据库Test的所有权给TestUser用户
    --TestUser用户可以查看并访问Test数据库
    ALTER AUTHORIZATION ON DATABASE::Test TO TestUser
    复制代码
    “DENY VIEW any DATABASE TO PUBLIC;”后如果没有进行权限设置默认的登录用户是不能查看任何数据库的
     
     
    “ALTER AUTHORIZATION ON DATABASE::Test TO TestUser”后TestUser就可以只能查看并访问Test数据库了
     
     
    参考:
  • 相关阅读:
    Android教程 -07 Activity的任务栈和启动模式
    ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
    hdu 5900 区间dp
    状压dp入门
    poj 3280
    hdu 4745 two Rabits
    食了智,过来水一发
    poj 2142 the Balance
    hdu 6188 Duizi and Shunzi
    hdu 6186 CS Course
  • 原文地址:https://www.cnblogs.com/ShenJH/p/5076888.html
Copyright © 2020-2023  润新知