登录名:服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。SQLSERVER把登录名与用户名的关系称为映射。用登录名登录SQLSERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。链接或登录Sql Server服务器时是用的登录名而非用户名登录的,程序里面的链接字符串中的用户名也是指登录名我们常见的dbo(用户名)是指以sa(登录名)或windows administration(Windows集成验证登录方式)登录的用户,也就是说数据库管理员在SQLSERVER中的用户名就叫dbo,而不叫 sa,这一点看起来有点蹊跷,因为通常用户名与登录名相同(不是强制相同,但为了一目了然通常都在创建用户名时使用与登录名相同的名字),例如创建了一个登录名称为me,那么可以为该登录名me在指定的数据库中添加一个同名用户,使登录名me能够访问该数据库中的数据当在数据库中添加了一个用户me 后,之后以me登录名登录时在该数据库中创建的一切对象(表,函数,存储过程等)的所有者都为me,如metable1,mefn_test(),而不是dbotable1,dbofn_test()SQL Server中还有一个特殊的数据库角色public,它存在于每一个数据库中,包括系统数据库,如master、msdb、model和用户数据库,数据库的所有用户都属于public角色,并且不能从public角色中删除。
分为:服务器级别角色和数据库级别的角色 服务器级别角色 固定服务器角色在其作用域内属于服务器范围。固定服务器角色的每个成员都可以向其所属角色添加其他登录名。 固定服务器角色有: bulkadmin dbcreator diskadmin processadmin securityadmin serveradmin setupadmin sysadmin 数据库级别的角色 固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。 db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份;但是,只有 db_owner 数据库的成员可以向 db_owner 固定数据库角色中添加成员。 固定数据库角色包括: db_accessadmin db_backupoperator db_datareader db_datawriter db_ddladmin db_denydatareader db_denydatawriter db_owner db_securityadmin public 数据库角色 每个数据库用户都属于 public 数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的 public 角色的权限。
创建好用户后,几个需要赋权限的地方,写出来以备后用。
1在安全性用户属性中,登录用户的服务器角色为public
2
用户映射到数据的数据库角色成员身份为:db_owner和public,默认架构为dbo
3
状态为允许连接到数据引擎和登录
在允许访问的数据库属性权限中,创建用户权限
1加上读取、更新、删除,
2加上控制和连接复制这两个,用户可以在sql
server管理界面中直接连接,
3加上更改任意架构,用户可以修改表结构
把其他的权限设为拒绝,这样他就只有读取、更新、删除,及修改表结构的权限
bulkadmin 可以执行bulk insert 语句
dbcreator 可以创建、更改和除去数据库
diskadmin 可以管理磁盘文件
processadmin 可以管理在sql server 中运行的进程
securityadmin 可以管理登录和create database权限,还可以读取错误日志和更改密码
serveradmin 可以设置服务器范围的配置选项,关闭服务器
setupadmin 可以管理链接服务器和启动过程
sysadmin 可以在Sql server中执行任何活动
db_accessadmin 在数据库中添加或删除windows nt40或windows2000用户和组以及sql server用户
db_backupoperator 有备份数据库的权限
db_datareader 查看来自数据库中所有用户表的全部数据
db_datawriter 添加、更改或删除来自数据库中所有用户表的数据
db_ddladmin 添加、修改或除去数据库中的对象
db_denydatareader 拒绝选择数据库数据的权限
db_denydatawriter 拒绝更改数据库数据的权限
db_owner 进行所有数据库角色活动,以及数据库中的其他维护和配置活动,该角色的权限跨越所有其他固定数据库角色。
db_securityadmin 管理sql server2000数据库角色的角色和成员,并管理数据库中的语句和对象权限
public 为数据用户维护的默认许可权限,每个数据库用户都属于public角色的成员。
以上是各个角色的介绍,在学习sql时不必记忆,简单了解一下就可以了,用的地方很少。累死我了,又打了这么多字。
安全的实现 在多用户环境中 有效管理Oracle数据库最重要的方面就是创建一个安全模式来控制对数据库的访问和更改 在一个Oracle中 可以对单独的用户或数据库角色授予安全许可 安全管理一般在 个级别中执行 ·数据库级· *** 作系统级·网络安全级 用户名 权限 组和角色 DBA或数据库安全管理员创建用户名(username)来提供有效的用户标识符 用来和数据库连接 在安装过程中自动创建两个赋予DBA角色的用户账号 SYS和SYSTEM 角色(role)是权限的命名组 可以被创建 更改或删除 在大多数实现中 DBA或安全管理员为用户创建用户名并分配角色 从而赋予用户一个权限集 每个数据库都有个伪角色 称为PUBLIC 它包含所有的拥护 所有的用户都可以赋予PUBLIC权限 如果通过关键字PUBLIC创建了数据库链接 那么对于所有用户这些链接都是可见的 安全权限 有 个基本的安全权限可适用于Oracle数据库中的数据 ·SELECT 执行查询·INSERT 在表或视图中插入行·UPDATE 更新表或视图中的行·DELETE 从表 表分区或视图中删除行除了这些数据特定的权限外 还有以下用于数据库模式中对象的权限 ·CREATE 在模式中创建表·DROP 在模式中删除表·ALTER 更改表或视图所有权限都是通过两个SQL命令来处理 GRANT命令把一个特定的权限赋予一个用户或角色 REVOKE命令用于取消某个特定的权限其中任何一个命令都可以结合关键字PUBLIC对所有的用户赋予或取消某个权限 默认角色和权限 默认角色和权限集是Oracle安装过程中预先定义的每个版本的默认角色都有所变化CONNECT可用于注册登录到数据库 创建对象和执行导出 RESOURCE可用于创建过程 触发器 以及用户模式区内的类型 DBA赋予无限制的权限 SYSOPER权限集 允许远程地建立与数据库的连接 并执行有限的已授权的 *** 作 包括启动和关闭 SYSDBA权限集 和DBA角色十分相近 包含了SYSOPER权限集以及ADMIN OPTION所有的权限 可用于与远程数据库连接 并远程执行已授权的 *** 作 如关闭或启动数据库 EXP_FULL_DATABASE允许执行任何数据库对象导出 *** 作 并且将导出 *** 作记录在数据字典中 IMP_FULL_DATABASE可用于成为数据库的用户 这样用户的对象就可以导入适当的模式内 DELETE_CATALOG_ROLE可用于从SYS AUD$审计表中删除行 EXECUTE_CATALOG_ROLE可用于执行恢复目录中列出的所有导出包 SELECT_CATALOG_ROLE可用于从所有导出恢复目录视图和表中选择角色 RECOVERY_CATALOG_OWNER可用于创建恢复目录的所有者 SNMPAGENT可用于Oracle企业智能代理 DBA角色STARTUP启动一个数据库实例 SHUTDOWN关闭数据库实例 ALTER DATABASE OPEN打开一个已安装的但是关闭的数据库 ALTER DATABASE MOUNT通过前面的启动实例来安装一个数据库 ALTER DATABASE BACKUP例如 启动一个控制文件的备份 但是现在用的大多是通过RMAN来备份ALTER DATABASE ARCHIVELOG指定在日志文件组可以重用之前 日志文件组的内容必须归档 ALTER DATABASE RECOVER逐个地应用日志或启动日志文件的自动化应用 CREATE DATABASE创建并命名一个数据库 指定数据文件和大小 并指定日志文件及其大小 还要设置参数限制RESTRICTED SESSION可用于与受限(Restricted)模式中启动的数据库相连接 设计受限模式的目的是使用户避免进行某些数据库 *** 作DBA角色的权限一般用于对用户分配表空间配额 设置系统资源限制以及建立审计 安全审计 lishixinzhi/Article/program/Oracle/201311/16942
Pg权限分为两部分,一部分是“系统权限”或者数据库用户的属性,可以授予role或user(两者区别在于login权限);一部分为数据库对象上的 *** 作权限。对超级用户不做权限检查,其它走acl。对于数据库对象,开始只有所有者和超级用户可以做任何 *** 作,其它走acl。在pg里,对acl模型做了简化,组和角色都是role,用户和角色的区别是角色没有login权限。
可以用下面的命令创建和删除角色,
CREATE ROLE name;
DROP ROLE name;
为了方便,也可以在 shell 命令上直接调用程序 createuser 和 dropuser,这些工具对相应命令提供了封装:
createuser name
dropuser name
数据库对象上的权限有:SELECT,INSERT, UPDATE,DELETE,RULE, REFERENCES,TRIGGER,CREATE, TEMPORARY,EXECUTE,和 USAGE等,具体见下面定义
typedefuint32AclMode; / a bitmask of privilege bits /
#define ACL_INSERT (1<<0) / forrelations /
#defineACL_SELECT (1<<1)
#defineACL_UPDATE (1<<2)
#defineACL_DELETE (1<<3)
#defineACL_TRUNCATE (1<<4)
#defineACL_REFERENCES (1<<5)
#defineACL_TRIGGER (1<<6)
#defineACL_EXECUTE (1<<7) / for functions /
#defineACL_USAGE (1<<8) / for languages, namespaces, FDWs, and
servers /
#defineACL_CREATE (1<<9) / for namespaces and databases /
#defineACL_CREATE_TEMP (1<<10) / for databases /
#defineACL_CONNECT (1<<11) / for databases /
#defineN_ACL_RIGHTS 12 / 1plus the last 1<<x /
#defineACL_NO_RIGHTS 0
/Currently, SELECT FOR UPDATE/FOR SHARE requires UPDATE privileges /
#defineACL_SELECT_FOR_UPDATE ACL_UPDATE
我们可以用特殊的名字 PUBLIC 把对象的权限赋予系统中的所有角色。 在权限声明的位置上写 ALL,表示把适用于该对象的所有权限都赋予目标角色。
beigang=# grantall on schema csm_ca to public;
GRANT
beigang=# revoke all on schema csm_ca frompublic;
REVOKE
beigang=#
每种对象的all权限定义如下:
/
Bitmasks defining "allrights" for each supported object type
/
#defineACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)
#defineACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)
#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT)
#define ACL_ALL_RIGHTS_FDW (ACL_USAGE)
#defineACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE)
#defineACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE)
#defineACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE)
#defineACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_NAMESPACE (ACL_USAGE|ACL_CREATE)
#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)
区别:
登录名是服务器方的一个实体,使用一个登录名只能进入服务器,但是不能让用户访问服务器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中
用户名是一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。
联系:用户名当权限足够的时候也可以算是登录名。一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。
好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库,登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙,一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。
扩展资料:
作用
用户名主要用来对应各个库的权限,登录名用来对于实例的登陆权限。
例如:
同一台服务器上,实例A有这个登录名而实例B没有,可以登陆实例A。
而用户在每个库下,需要把用户和登录名进行对应。
例如:现在是职员,那你登陆进去以后,你是职员的角色,只能做份内的 *** 作。
现在你升职了,你是经理了,只需要修改你的登录名和用户的映射,你就可以获取不同的权限。
各个角色是对应不同权限的,sql server中有很多权限,可以把这些权限组合或单独赋给各个角色,从而使不同角色的用户的权限不同,你列出的都是内置角色。你看看下面这些对你有没有帮助,希望你解决你的问题。
为便于管理数据库中的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。它们类似于 Microsoft Windows *** 作系统中的组。数据库级角色的权限作用域为数据库范围。
SQL Server 中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”。
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份。但是,只有 db_owner 数据库角色的成员能够向 db_owner 固定数据库角色中添加成员。msdb 数据库中还有一些特殊用途的固定数据库角色。
您可以向数据库级角色中添加任何数据库帐户和其他 SQL Server 角色。固定数据库角色的每个成员都可向同一个角色添加其他登录名。
重要提示:
请不要将灵活数据库角色添加为固定角色的成员。这会导致意外的权限升级。
下表显示了固定数据库级角色及其能够执行的 *** 作。所有数据库中都有这些角色。
数据库级别的角色名称 说明
db_owner
db_owner 固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以删除数据库。
db_securityadmin
db_securityadmin 固定数据库角色的成员可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。
db_accessadmin
db_accessadmin 固定数据库角色的成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。
db_backupoperator
db_backupoperator 固定数据库角色的成员可以备份数据库。
db_ddladmin
db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。
db_datawriter
db_datawriter 固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。
db_datareader
db_datareader 固定数据库角色的成员可以从所有用户表中读取所有数据。
db_denydatawriter
db_denydatawriter 固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据。
db_denydatareader
db_denydatareader 固定数据库角色的成员不能读取数据库内用户表中的任何数据。
有关数据库级固定角色权限的特定信息,请参阅固定数据库角色的权限(数据库引擎)。
msdb 角色
msdb 数据库中包含下表显示的特殊用途的角色。
msdb 角色名称 说明
db_ssisadmin
db_ssisoperator
db_ssisltduser
这些数据库角色的成员可以管理和使用 SSIS。从早期版本升级的 SQL Server 实例可能包含使用 Data Transformation Services (DTS)(而不是 SSIS)命名的旧版本角色。有关详细信息,请参阅 使用 Integration Services 角色。
dc_admin
dc_operator
dc_proxy
这些数据库角色的成员可以管理和使用数据收集器。有关详细信息,请参阅数据收集器的安全性。
PolicyAdministratorRole
db_ PolicyAdministratorRole 数据库角色的成员可以对基于策略的管理策略和条件执行所有配置和维护活动。有关详细信息,请参阅使用基于策略的管理来管理服务器。
ServerGroupAdministratorRole
ServerGroupReaderRole
这些数据库角色的成员可以管理和使用注册的服务器组。有关详细信息,请参阅创建服务器组。
重要提示:
db_ssisadmin 角色和 dc_admin 角色的成员也许可以将其权限提升到 sysadmin。之所以会发生此权限提升,是因为这些角色可以修改 Integration Services 包,而 SQL Server 可以使用 SQL Server 代理的 sysadmin 安全上下文来执行 Integration Services 包。若要防止在运行维护计划、数据收集组和其他 Integration Services 包时出现此权限提升,请将运行包的 SQL Server 代理作业配置为使用拥有有限权限的代理帐户,或只将 sysadmin 成员添加到 db_ssisadmin 和 dc_admin 角色。
使用服务器级角色
下表说明了用于服务器级角色的命令、视图和函数。
功能 类型 说明
sp_helpdbfixedrole (Transact-SQL)
元数据
返回固定数据库角色的列表。
sp_dbfixedrolepermission (Transact-SQL)
元数据
显示固定数据库角色的权限。
sp_helprole (Transact-SQL)
元数据
返回当前数据库中有关角色的信息。
sp_helprolemember (Transact-SQL)
元数据
返回有关当前数据库中某个角色的成员的信息。
sysdatabase_role_members (Transact-SQL)
元数据
为每个数据库角色的每个成员返回一行。
IS_MEMBER (Transact-SQL)
元数据
指示当前用户是否为指定 Microsoft Windows 组或 Microsoft SQL Server 数据库角色的成员。
CREATE ROLE (Transact-SQL)
命令
在当前数据库中创建新的数据库角色。
ALTER ROLE (Transact-SQL)
命令
更改数据库角色的名称。
DROP ROLE (Transact-SQL)
命令
从数据库中删除角色。
sp_addrole (Transact-SQL)
命令
在当前数据库中创建新的数据库角色。
sp_droprole (Transact-SQL)
命令
从当前数据库中删除数据库角色。
sp_addrolemember (Transact-SQL)
命令
为当前数据库中的数据库角色添加数据库用户、数据库角色、Windows 登录名或 Windows 组。
sp_droprolemember (Transact-SQL)
命令
从当前数据库的 SQL Server 角色中删除安全帐户。
public 数据库角色
每个数据库用户都属于 public 数据库角色。如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的 public 角色的权限。
以上就是关于SQLServer的用户和系统用户是什么关系全部的内容,包括:SQLServer的用户和系统用户是什么关系、sql server2005里什么叫角色分哪两种、如何给SQL Server数据库设置修改表结构的权限等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)