1. SQL试题 解答题: 角色有哪几种,角色和用户有哪些关系
--用户指的是数据库用户,单纯的用户是没有任何权限的,需要给相应的角色才可以
--不明白可以随时来问我,希望采纳
SqlServer固定服务器角色:
1、bulkadmin服务器级权限已授予:ADMINISTERBULKOPERATIONS
2、dbcreator服务器级权限已授予:CREATEDATABASE
3、diskadmin服务器级权限已授予:ALTERRESOURCESSqlServer2005固定服务器角色:
4、processadmin服务器级权限已授予:ALTERANYCONNECTION、ALTERSERVERSTATE
5、securityadmin服务器级权限已授予:ALTERANYLOGIN6、serveradmin服务器级权限已授予:ALTERANYENDPOINT、ALTERRESOURCES、ALTERSERVERSTATE、ALTERSETTINGS、SHUTDOWN、VIEWSERVERSTATE
7、setupadmin服务器级权限已授予:固定服务器角色:
8、sysadmin服务器级权限已使用GRANT选项授予:CONTROLSERVER
2. SQL Server 2000的角色分哪两种各自的功能是什么
SQL SERVER 2000 使用哪三种类型的角色 ?每种角色的作用是什么? 固定的服务器角色 固定的数据库角色 应用程序角色 难道是这3种么?
3. sql server 固定服务器角色有哪些
8的等级最高,相当于sqlserver的sa账户和oracle的sysadmin,可以做一切操作,包括以下七种角色,事实上一般以下七种角色的权限都是他来指派的,企业中一般严禁这个账户登陆的,因为一旦误操作将会造成灾难性损失。
1管理数据库大小,数据空间大小以及数据日志大小等
2拥有建立数据库的权限
3对已经分配磁盘空间进行分配
4可以管理进程,比如剔除一些非法进程
5可以管理连接权限,用户权限等。
6这个可以启动服务器,对服务器的属性进行分配(连接池、cpu、内存空间等),貌似是sqlserver特有
7这个角色很多数据库是没有的,比如sqlserver就是没有的,oracle8以前好像也是没有的,可以安装数据库以及删除数据库(在非常安全控制地方这种账户是没有连接权限的,也就是说只能安装,但是不能读取里面的数据)
这些权限各不相同,所以很难说是对服务器的还是数据库的,比如7这种,根本说不上是不是服务器级别的,因为它只有安装权限,可以认为是系统级别的,事实上,只有sqlserver存在服务器和数据库的区别,一般的诸如db2和oracle中的所谓服务器指的是那台机器而不是一个sqlserver意义上的服务器,具体情况具体对待
其实主要角色不止这些,还有诸如备份管理员backupadmin,数据清理员英文忘记了等等。
4. 在SQL Server 里,登录名,用户,角色,权限,有啥联系
登录名
就是用户名,同一个数据库中含有多个用户;
【用户】与【角色】还有【权限】是“多对多”的关系,一个用户可以有多个角色,也可以被赋予多个权限;同一个角色可以赋给多个用户,也可以含有多个权限;同一个权限也可以赋给多个用户和角色;
说道区别:你可以把
登录名比作一个人的名字,而用户是这个人,角色就是这个在不同情况下所具有的职能的总和,而权限就是做各种事的能力。
5. sqlserver中,用户和角色有什么区别
用户是具体到某一个账户个体,角色是某一类账户的集合。
比如说仓库管理员,这是一个角色,他们管理着仓库;
但是可能公司里有好几个仓库管理员,他们是不同的用户;
在数据库里,角色代表一系列权限的集合,如果将某个角色分配给某个用户,则这个用户就拥有了这一系列的权限。
这样做的好处是不必为单个用户分配不同的权限;假如公司新招库管员一名,直接赋予他库管员的角色,他就有了管理仓库的一系列权限,如果这个人要调换到销售部门去,那么直接给他换个角色就解决了权限的问题。
数据库下同理,有些用户只能查询某些表,而有些用户又只能执行SP,这种权限就需要角色来管理。
6. MySQL8.0里的角色功能是什么
角色一直存在各个数据库中,比如 SQL Server、Oracle 等,MySQL 自从版本 8.0 release,引入了角色这个概念。
角色的概念
角色就是一组针对各种数据库权限的集合。比如,把一个角色分配给一个用户,那这个用户就拥有了这个角色包含的所有权限。一个角色可以分配给多个用户,另外一个用户也可以拥有多个角色,两者是多对多的关系。不过 MySQL 角色目前还没有提供类似于其他数据库的系统预分配的角色。比如某些数据库的 db_owner、 db_datareader 、 db_datawriter 等等。那接下来我分几个方面,来示例说明角色的使用以及相关注意事项。
示例 1:一个完整角色的授予步骤
用管理员创建三个角色:db_owner, db_datareader, db_datawriter
mysql> create role db_owner,db_datareader,db_datawriter;
Query OK, 0 rows affected (0.02 sec)
mysql> grant all on ytt_new.* to db_owner;
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on ytt_new.* to db_datareader;
Query OK, 0 rows affected (0.01 sec)
mysql> grant insert,delete,update on ytt_new.* to db_datawriter;
Query OK, 0 rows affected (0.01 sec)
-- 授权角色
mysql> grant db_owner to ytt1;
Query OK, 0 rows affected (0.02 sec)
-- 激活角色
mysql> set default role db_owner to ytt1;
Query OK, 0 rows affected (0.00 sec)
mysql> grant db_datareader to ytt2;
Query OK, 0 rows affected (0.01 sec)
mysql> set default role db_datareader to ytt2;
Query OK, 0 rows affected (0.01 sec)
mysql> grant db_datawriter to ytt3;
Query OK, 0 rows affected (0.01 sec)
mysql> set default role db_datawriter to ytt3;
Query OK, 0 rows affected (0.01 sec)
示例 2:一个用户可以拥有多个角色
-- 用管理员登录并且创建用户
mysql> create user ytt4 identified by 'ytt';
Query OK, 0 rows affected (0.00 sec)
-- 把之前的三个角色都分配给用户ytt4.
mysql> grant db_owner,db_datareader,db_datawriter to ytt4;
Query OK, 0 rows affected (0.01 sec)
-- 激活用户ytt4的所有角色.
mysql> set default role all to ytt4;
Query OK, 0 rows affected (0.02 sec)
-- ytt4 用户登录
root@ytt-pc:/var/lib/mysql# mysql -uytt4 -pytt -P3304 -hytt-pc
...
-- 查看当前角色列表
mysql> select current_role();
+--------------------------------------------------------+
| current_role() |
+--------------------------------------------------------+
| `db_datareader`@`%`,`db_datawriter`@`%`,`db_owner`@`%` |
+--------------------------------------------------------+
1 row in set (0.00 sec)
-- 简单创建一张表并且插入记录, 检索记录,完了删掉这张表
mysql> use ytt_new
Database changed
mysql> create table t11(id int);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into t11 values (1);
Query OK, 1 row affected (0.02 sec)
mysql> select * from t11;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql> drop table t11;
Query OK, 0 rows affected (0.04 sec)
其实意思是说,用户连接到 MySQL 服务器后,可以切换当前的角色列表,比如由 db_owner 切换到 db_datareader。
-- 还是之前的用户ytt4, 切换到db_datareader
mysql> set role db_datareader;
Query OK, 0 rows affected (0.00 sec)
mysql> select current_role();
+---------------------+
| current_role() |
+---------------------+
| `db_datareader`@`%` |
+---------------------+
1 row in set (0.00 sec)
-- 切换后,没有权限创建表
mysql> create table t11(id int);
ERROR 1142 (42000): CREATE command denied to user 'ytt4'@'ytt-pc' for table 't11'
-- 切换到 db_owner,恢复所有权限。
mysql> set role db_owner;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t11(id int);
Query OK, 0 rows affected (0.04 sec)
示例 4:关于角色的两个参数
-- 用管理员连接MySQL,
-- 设置默认激活角色
mysql> set global activate_all_roles_on_login=on;
Query OK, 0 rows affected (0.00 sec)
-- 设置强制给所有用户赋予角色db_datareader
mysql> set global mandatory_roles='db_datareader';
Query OK, 0 rows affected (0.00 sec)
-- 创建用户ytt7.
mysql> create user ytt7;
Query OK, 0 rows affected (0.01 sec)
-- 用 ytt7登录数据库
root@ytt-pc:/var/lib/mysql# mysql -uytt7 -P3304 -hytt-pc
...
mysql> show grants;
+-------------------------------------------+
| Grants for ytt7@% |
+-------------------------------------------+
| GRANT USAGE ON *.* TO `ytt7`@`%` |
| GRANT SELECT ON `ytt_new`.* TO `ytt7`@`%` |
| GRANT `db_datareader`@`%` TO `ytt7`@`%` |
+-------------------------------------------+
3 rows in set (0.00 sec)
示例 5 :create role 和 create user 都有创建角色权限,两者有啥区别?
-- 管理员登录,创建用户ytt8,ytt9.
mysql> create user ytt8,ytt9;
Query OK, 0 rows affected (0.01 sec)
mysql> grant create role on *.* to ytt8;
Query OK, 0 rows affected (0.02 sec)
mysql> grant create user on *.* to ytt9;
Query OK, 0 rows affected (0.01 sec)
-- 用ytt8 登录,
root@ytt-pc:/var/lib/mysql# mysql -uytt8 -P3304 -hytt-pc
...
mysql> create role db_test;
Query OK, 0 rows affected (0.02 sec)
-- 可以创建角色,但是不能创建用户
mysql> create user ytt10;
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation
mysql> q
Bye
-- 用ytt9 登录
root@ytt-pc:/var/lib/mysql# mysql -uytt9 -P3304 -hytt-pc
...
-- 角色和用户都能创建
mysql> create role db_test2;
Query OK, 0 rows affected (0.02 sec)
mysql> create user ytt10;
Query OK, 0 rows affected (0.01 sec)
mysql> q
Bye
示例 6:MySQL 用户也可以当角色来用
-- 用管理员登录,创建用户ytt11,ytt12.
mysql> create user ytt11,ytt12;
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on ytt_new.* to ytt11;
Query OK, 0 rows affected (0.01 sec)
-- 把ytt11普通用户的权限授予给ytt12
mysql> grant ytt11 to ytt12;
Query OK, 0 rows affected (0.01 sec)
-- 来查看 ytt12的权限,可以看到拥有了ytt11的权限
mysql> show grants for ytt12;
+-----------------------------------+
| Grants for ytt12@% |
+-----------------------------------+
| GRANT USAGE ON *.* TO `ytt12`@`%` |
| GRANT `ytt11`@`%` TO `ytt12`@`%` |
+-----------------------------------+
2 rows in set (0.00 sec)
-- 在细化点,看看ytt12拥有哪些具体的权限
mysql> show grants for ytt12 using ytt11;
+--------------------------------------------+
| Grants for ytt12@% |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `ytt12`@`%` |
| GRANT SELECT ON `ytt_new`.* TO `ytt12`@`%` |
| GRANT `ytt11`@`%` TO `ytt12`@`%` |
+--------------------------------------------+
3 rows in set (0.00 sec)
示例 7:角色的撤销
-- 用管理员登录,移除ytt2的角色
mysql> revoke db_datareader from ytt2;
Query OK, 0 rows affected (0.01 sec)
-- 删除所有角色
mysql> drop role db_owner,db_datareader,db_datawriter;
Query OK, 0 rows affected (0.01 sec)
-- 对应的角色也从ytt1上移除掉了
mysql> show grants for ytt1;
+----------------------------------+
| Grants for ytt1@% |
+----------------------------------+
| GRANT USAGE ON *.* TO `ytt1`@`%` |
+----------------------------------+
1 row in set (0.00 sec)
7. sql server 服务器角色和数据库角色有什么区别
顾名思义!
服务器角色就是针对整个数据库服务器设定的角色和权限。
数据库角色就是针对某个特定数据库设定的角色和权限。
给你举个例子:
setupadmin
该角色仅限于管理链接服务器和启动过程。这个是针对整个服务器权限的角色。
db_datareader
能够在数据库中所有的用户表上执行SELECT语句,这个就是数据库角色,是针对特定某个数据库的权限设置,只对该特定数据库有效
8. SQL SERVER 2005 使用哪三种类型的角色 每种角色的作用是什么
server
role:在SQL
Server服务器级别的角色。
database
role:
在SQL
Server数据库级别的角色。
application
role:用户设置的application连接后的角色。
9. sql server里 服务器角色都是什么意思
各个角色是对应不同权限的,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_ssisltser
这些数据库角色的成员可以管理和使用 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)
元数据
返回有关当前数据库中某个角色的成员的信息。
sys.database_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 角色的权限。
10. SQL sever中 什么是权限和角色,分别说出一下。
--什么是角色?
例如,一个公司可能成立慈善活动委员会,其中包括来自不同部门,来自组织中各种不同级别的职员。这些职员需要访问数据库中特殊的项目表。没有只包括这些职员的现有 Windows NT 4.0 或 Windows 2000 组,而且没有其它理由在 Windows NT 4.0 或 Windows 2000 中创建这样一个组。可以为此项目创建一个自定义 SQL Server 数据库角色 CharityEvent,并将个别的 Windows NT 和 Windows 2000 用户添加到此数据库角色。当应用权限后,数据库角色中的用户便获得对表的访问权限。其它数据库活动的权限不受影响,只有 CharityEvent 用户可以使用该项目表。
SQL Server 角色存在于一个数据库中,不能跨多个数据库。
使用数据库角色的好处包括:
1.对于任何用户,都可以随时让多个数据库角色处于活动状态.如果所有用户、组和角色都在当前数据库中,则 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 组和用户,以及 SQL Server用户和其它角色。
2.在同一数据库中,一个用户可属于多个角色。
3.提供了可伸缩模型以便在数据库中设置正确的安全级别。
说明:数据库角色要么在创建角色时由明确指定为所有者的用户所拥有,要么在未指定所有者时为创建角色的用户所拥有。角色的所有者决定可以在角色中添加或删除谁。但是,因为角色不是数据库对象,不能在同一数据库中创建由不同用户所拥有的多个同名角色。
权限--
是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。它常常用“具有批准……事项的权限”来进行表达。例如,具有批准预算外5000元以内的礼品费支出的权限。