
GRANT -- 定义访问权限
语法
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
[,] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
GRANT { { CREATE | TEMPORARY | TEMP } [,] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION funcname ([type, ]) [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON LANGUAGE langname [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
GRANT { { CREATE | USAGE } [,] | ALL [ PRIVILEGES ] }
ON SCHEMA schemaname [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
GRANT { CREATE | ALL [ PRIVILEGES ] }
ON TABLESPACE tablespacename [, ]
TO { username | GROUP groupname | PUBLIC } [, ] [ WITH GRANT OPTION ]
例子
把表 films 的插入权限赋予所有用户:
GRANT INSERT ON films TO PUBLIC;
赋予用户manuel对视图kinds的所有权限:
GRANT ALL PRIVILEGES ON kinds TO manuel;
请注意,如果上面的命令由超级用户或者 kinds 的所有者执行,那么它实际上会赋予所有权限, 如果由其他人执行,那么它会赋予这个“其他人”拥有授权选项的所有权限。
收回授权 搜索 Revoke!
按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:
1bulkadmin:这个角色可以运行BULK INSERT语句该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计
2dbcreator:这个角色可以创建,更改,删除和还原任何数据库不仅适合助理DBA角色,也可能适合开发人员角色
3diskadmin:这个角色用于管理磁盘文件,比如镜像数据库和添加备份设备适合助理DBA
4processadmin:SQL Server 2008可以同时多进程处理这个角色可以结束进程(在SQL Server 2008中称为"删除")
5public:有两大特点:第一,初始状态时没有权限;第二,所有数据库用户都是它的成员
6securityadmin:这个角色将管理登录名及其属性可以授权,拒绝和撤销服务器级/数据库级权限可以重置登录名和密码
7serveradmin:这个角色可以更改服务器范围的配置选项和关闭服务器
8setupadmin:为需要管理联接服务器和控制启动的存储过程的用户而设计
9sysadmin:这个角色有权在SQL Server 2008 中执行任何 *** 作
数据库角色:
1db_accessadmin:可以在数据库中添加和删除数据库用户, 组及角色
2db_backupoperator:可以备份数据库
3db_datareader 可以读取任何表中的数据
4db_datawriter 可以添加、更改或删除所有表中的数据
5db_ddladmin 可以添加、更改或删除数据库对象(即可以执行任何DDL语句)
6db_denydatareader 不能读取任何表中的数据,但仍然可以通过存储过程来查看
7db_denydatawriter 不能更改任何表中的数据,但仍然可以通过存储过程来修改
8db_owner 执行任何 *** 作
9db_securityadmin 可以更改数据中的权限和角色
10public:每个数据库用户都属于public角色未对用户授权之前,该用户将被授予public角色的权限该角色不能被删除
1 SQL数据库分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
一般对整个库做权限的时候都是需要所有权限勾选db_owner就可以了(确定)
这样就可以用我们新建的这个用户名来访问我们的数据库服务器了,而且这个用户名只拥有我们所勾选的数据库的所有权限。
2 SQL数据库对每个表分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
因为我们要对每个表进行单独的设置所以这里我们就不勾选db_owner了
打开我们刚才勾选的test数据库安全性用户中看到我们刚才新建的那个用户了。
找到新建的用户名右键属性
安全对像
添加
特定类型的所有对象确定
对象类型选择表
确定这样我们就能看到test数据库中的所有表了
接着我们再对每个表设置权限
我对两个表都是设置的Select权限确定这样我们用test_name登陆test数据库的时候只能对其中的两个表做Select *** 作不能做其它 *** 作
1、为角色赋予jobs表的所有权限
GRANT ALL ON jobs TO newrole
2、为角色赋予sales表的查、改权限
GRANT SELECT,UPDATE ON sales TO newrole
临时表可以被任何用户在任何数据库下创建,而不需要授予任何权限。
本地临时表只能被创建它的会话访问。全局临时表可以被所有会话访问和修改,而不需要授权。
1、双击桌面sqldeveloper软件图标启动软件。
2、新建数据库连接,填写登录数据库信息并选择相应角色进行登录。
3、登录成功后先查询出hr用户下所有的表名,可直接通过dba_tables来进行查询。
4、把查询权限赋给测试用户的方法有两种,一种为当用户下的表比较少的情况下可以直接通过grant select/delete/update on hrtable-name to cem。
5、授权成功后使用测试用户进行登录即可对授权过查询权限的表进行访问。
用你的ASDFGH用户登录
执行
Select from USER_ROLE_PRIVS里边有MANAGER的角色
MANAGER里又包括
select from role_sys_privs where role='MANAGER';上边语句包含的权限
你看一下
以上就是关于在sql中怎么为数据库角色设置权限呢全部的内容,包括:在sql中怎么为数据库角色设置权限呢、如何恢复sqlserver中public角色的权限、SQL2005中怎样把使用一个角色的权限授予给一个用户等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)