zoukankan      html  css  js  c++  java
  • 数据库权限分配探讨

    下载网站:www.SyncNavigator.CN 
     客服QQ1793040
    ----------------------------------------------------------


    关于HKROnline SyncNavigator 注册机价格的问题

     

    HKROnline SyncNavigator 8.4.1 非破解版 注册机 授权激活教程
     

     

    最近一直在研究数据库同步的问题,在网上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心网友那里得知一款很好用的软件—— SyncNavigator。

    好东西就要拿出来跟大家分享,所以今天向大家介绍一下这款软件,及其一些使用方法。下面先看看它有什么强大的功能吧!

    SyncNavigator的基本功能:

    自动同步数据/定时同步数据
    无论是实时同步/24小时不间断同步,还是根据计划任务(每小时/每日/每周/等)定时自动同步都能完全胜任。

    完整支持 Microsoft SQL Server
    完整支持 Microsoft SQL Server 2000 2005 2008 数据库类型。并能在不同数据库版本之间相互同步数据。

    支持 MySQL 4.1 以上版本
    支持 MySQL 4.1 5.0 5.1 5.4 5.5。并能在不同数据库版本之间相互同步数据。

    无人值守和故障自动恢复
    当数据库故障或网络故障以后,无需人工干预(或操作)自动恢复同步并确保数据完全准确,可靠。

    同构数据库同步/异构数据库同步
    SQL Server to SQL Server, MySQL to MySQL, SQL Server to MySQL 等都能轻松实现。

    断点续传和增量同步
    当同步完成(或中断)后,再次同步时能继续上一次的位置增量同步,避免每次都需要从头开始的问题。

    上周, 有位朋友给我提出了这样的需求:区分用户访问数据库的权限。顺便总结了下有如下要求:

    • 某个用户查询所有数据库的权限
    • 某个用户只有备份数据库的权限
    • 给一个用户只能查看指定数据库的权限
    • 给一个用户只有某个表的权限

    要进行以上任务,首先我们先了解下数据库的权限相关的内容

    主体

    “主体” 是可以请求 SQL Server资源的实体。 与 SQLServer授权模型的其他组件一样,主体也可以按层次结构排列。 主体的影响范围取决于主体定义的范围(Windows、服务器或数据库)以及主体是否不可分或是一个集合。 例如,Windows登录名就是一个不可分主体,而Windows组则是一个集合主体。 每个主体都具有一个安全标识符(SID)。

    Windows级别的主体

    Windows域登录名

    Windows 本地登录名

    SQL Server-级的主体

    SQL Server登录名

    服务器角色

    数据库级的主体

    数据库用户

    数据库角色

    应用程序角色

    SQLServer sa登录名

    SQL Server sa登录名是服务器级的主体。 默认情况下,该登录名是在安装实例时创建的。

    public数据库角色

    每个数据库用户都属于 public数据库角色。 当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的public角色的权限。

    INFORMATION_SCHEMA和 sys

    每个数据库都包含两个实体:

    INFORMATION_SCHEMA和 sys,它们都作为用户出现在目录视图中。这两个实体是 SQL Server 所必需的。 它们不是主体,不能修改或删除它们。

    基于证书的 SQL Server登录名

    名称由双井号 (##)括起来的服务器主体仅供内部系统使用。 下列主体是在安装 SQL Server时从证书创建的,不应删除。

    ##MS_SQLResourceSigningCertificate##

    ##MS_SQLReplicationSigningCertificate##

    ##MS_SQLAuthenticatorCertificate##

    ##MS_AgentSigningCertificate##

    ##MS_PolicyEventProcessingLogin##

    ##MS_PolicySigningCertificate##

    ##MS_PolicyTsqlExecutionLogin##

    guest用户

    每个数据库包括一个guest。 授予guest用户的权限由对数据库具有访问权限,但在数据库中没有用户帐户的用户继承。不能删除guest用户,但可通过撤消该用户的CONNECT权限将其禁用。 可以通过在master或 tempdb以外的任何数据库中执行 REVOKE CONNECTFROM GUEST来撤消 CONNECT权限。

    客户端和数据库服务器

    根据定义,客户端和数据库服务器是安全主体,可以得到保护。 在建立安全的网络连接前,这些实体之间可以互相进行身份验证。 SQLServer支持 Kerberos身份验证协议,该协议定义客户端与网络身份验证服务交互的方式。

    创建数据库用户

    SQL2016中支持11种用户类型:

    用户基于登录名在 master这是最常见的用户类型。

    基于登录名基于的Windows Active Directory帐户的用户

    CREATE USER [ContosoFritz];

    基于Windows组的登录名的用户。 CREATE USER [ContosoSales];

    基于使用 SQLServer身份验证的登录名的用户。 CREATE USER Mary;

    在数据库进行身份验证的用户建议以帮助使你的数据库可移植性。

    始终允许在 SQL Database。 中包含的数据库中只允许存在 SQL Server。

    基于无登录名的 Windows用户的用户

    CREATEUSER [ContosoFritz];

    基于无登录名的Windows组的用户。 CREATE USER [ContosoSales];

    中的用户 SQLDatabase或 SQL数据仓库 基于 Azure Active Directory的用户。 CREATE USER [ContosoFritz] FROMEXTERNAL PROVIDER;

    拥有密码的包含数据库用户。 (在中不可用 SQL数据仓库。)CREATE USER Mary WITHPASSWORD = '********';

    基于 Windows主体通过 Windows组登录名进行连接的用户

    基于无登录名但可通过Windows组中的成员身份连接到数据库引擎的Windows用户的用户

    CREATE USER [ContosoFritz];

    基于无登录名但可通过其他Windows组中的成员身份连接到数据库引擎的Windows组的用户。 CREATE USER [ContosoFritz];

    无法进行身份验证的用户 这些用户无法登录到 SQL Server或 SQL Database。

    没有登录名的用户。 不能登录,但可以被授予权限

    CREATE USER CustomAppWITHOUT LOGIN;

    基于证书的用户。 不能登录,但可以被授予权限,也可以对模块进行签名。 CREATE USERTestProcess FOR CERTIFICATE CarnationProduction50;

    基于非对称密钥的用户。 不能登录,但可以被授予权限,也可以对模块进行签名。 CREATE User TestProcessFROM ASYMMETRIC KEY PacificSales09;

    下面的图片显示了创建数据库用户需要的选项的含义:

    创建用户可以使用界面完成:

    也可以使用T-SQL来进行创建

    -- 创建登录名:Test 密码是: '123456'.

    CREATELOGIN Test

    WITH PASSWORD = '123456';

    GO

    上面说完了用户,下面说下数据库的角色和权限

    服务器级别的权限

    SQL Server 提供服务器级角色以帮助你管理服务器上的权限。 这些角色是可组合其他主体的安全主体。服务器级角色的权限作用域为服务器范围。 (“角色”类似于 Windows 操作系统中的“组”。)

    SQL Server 提供了九种固定服务器角色。 无法更改授予固定服务器角色的权限。 从 SQL Server 2012 开始,您可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色。

    你可以将服务器级主体(SQL Server 登录名、Windows帐户和 Windows 组)添加到服务器级角色。 固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。用户定义的服务器角色的成员则无法将其他服务器主体添加到角色。

    下表显示了服务器级的固定角色及其权限

    下表显示了固定数据库角色及其能够执行的操作。 所有数据库中都有这些角色。无法更改分配给固定数据库角色的权限

    无法更改分配给固定数据库角色的权限。 下图显示了分配给固定数据库角色的权限:

    SQL 2016有一些数据库的特殊权限

    msdb角色

    msdb数据库中包含下表显示的特殊用途的角色。

    使用R Services

    SQL Server(从 SQL Server vNext开始)

    安装 R Services时,其他数据库角色可用于管理包

    下面讲如何实现文章前面说的需求:

    给某个用户查询所有数据库的权限

    给某个用户只有备份数据库的权限

    给一个用户只有指定数据库的权限

    给一个用户只有某个表的权限

    给某个用户查询所有数据库的权限

    创建一个用户

    USE [master] GO CREATE LOGIN [Test1]WITH PASSWORD=N'password@123'

    使用Test1连接数据库实例

    可以看到数据库列表, 但是无法访问数据库,

    赋予test1对FinaceDemo的读取权限

    USE [FinaceDemo] GO CREATE USER [Test1] FOR LOGIN [Test1] ALTER ROLE [db_datareader] ADD MEMBER [Test1] GO

    这样就可以给test1用户对finacedemo的读取权限

    但是test1 没有写入权限

    这样就可以单独对test1赋予数据库的读取权限进行查看操作。

    给某个用户只有备份数据库的权限

    Test1 对于finacedemo无备份权限

    赋予备份权限

    ALTER ROLE [db_backupoperator] ADD MEMBER [Test1]

    给一个用户只有指定数据库的权限

    我们需要Test1只能看到 FinanceDemo,其他所有数据库都不能看到

    执行下面脚本

    USE [master] Deny VIEW any DATABASE TO Test1; go

    运行后的效果

    Test1 连接后看不到任何数据库

    执行:

    ALTER AUTHORIZATIONON DATABASE::FinanceDemo TO test1

    完成后结果:

    Test1能查看到赋予权限的数据库

    给一个用户只有某个表的权限

    创建测试用户test3

    USE [master] GO CREATE LOGIN [Test3] WITH PASSWORD=N'password@123' -----赋予test2可以登录testDB USE [testdb] GO CREATE USER [Test3] FOR LOGIN [Test3] GO

    赋予test3对于t2表的update和select权限 grant update on dbo.t2to test3 grant select on dbo.t2to test3 use testDB 查看test3用户获得的权限 exec sp_helprotect @username='test3'

    可以看到用户test3拥有了t2的select和update权限

    执行select * from t2

    执行插入操作失败。

    以上介绍了对数据库权限细致的管理,更加详细的控制可以参考technet上面的信息。

    权限管理非常复杂,以上只是做了简单的介绍。需要更加详细的内容,需要自己去研究。在technet上可以找到更加详细的信息。

  • 相关阅读:
    复杂json后端解析出现第二层无数据的问题
    idea启动springboot项目报Error running 'ServiceStarter': Command line is too long. Shorten command line for ServiceStarter or also for Application
    docker强制关闭命令
    scala下实现actor多线程基础
    orcale数据库分配用户
    多线程实现互相通信
    从一份配置清单详解 Nginx 服务器配置
    PostgreSQL CentOS 7 安装配置
    .net core session部分浏览器或移动客户端不可用
    VS2019 远程调试
  • 原文地址:https://www.cnblogs.com/syncnavigator/p/10198378.html
Copyright © 2011-2022 走看看