1在数据库本机用使用cmd指令调出命令行窗口,再用sqlplus/assysdba登录到数据库中。并且用对要赋权限的表所有者连接数据库,否则后续赋权限会失败。
2创建由test123标识的用户测试;创建密码设置为test123的测试用户。
3授权测试用户的连接和资源权限。授予连接,资源到测试。
4指定表授权查询权限。授予用户选择。表测试。
5用新的登录数据库进行验证,我们会先尝试删除删除数据的功能,结果错误无法执行,说明我们添加的用户没有删除权限。
6然后验证select查询函数,成功找到指定的数据。创建一个新用户并指定查询权限函数的实现。对于没有权限的表的查询也会被拒绝。
语法:
sp_addrolemember [ @rolename = ] 'role' ,
[ @membername = ] 'security_account'
参数: [@rolename =] 'role'
当前数据库中 SQL Server 角色的名称。role 的数据类型为 sysname,没有默认值。
[@membername =] 'security_account'
添加到角色的安全帐户。security_account 的数据类型为 sysname,没有默认值。security_account 可以是所有有效的 SQL Server 用户、SQL Server 角色或是所有已授权访问当前数据库的 Microsoft Windows NT® 用户或组。
SQL Server中查询用户的对象权限和角色的方法
-- 查询用户的object权限
exec sp_helprotect NULL, 'UserName'
-- 查询用户拥有的role
exec sp_helpuser 'UserName'
-- 查询哪些用户拥有指定的系统role
exec sp_helpsrvrolemember 'sysadmin'
-- 可查询嵌套role
WITH tree_roles as
(
SELECT role_principal_id, member_principal_id
FROM sysdatabase_role_members
WHERE member_principal_id = USER_ID('UserName')
UNION ALL
SELECT crole_principal_id,cmember_principal_id
FROM sysdatabase_role_members as c
inner join tree_roles
on tree_rolesmember_principal_id = crole_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
FROM tree_roles
-- 其他权限相关基本表
select from sysusers
select from syspermissions
-- Who has access to my SQL Server instance
SELECT
name as UserName, type_desc as UserType, is_disabled as IsDisabled
FROM sysserver_principals
where type_desc in('WINDOWS_LOGIN', 'SQL_LOGIN')
order by UserType, name, IsDisabled
-- Who has access to my Databases
SELECT
dpname as UserName, dptype_desc as UserType, spname as LoginName, sptype_desc as LoginType
FROM sysdatabase_principals dp
JOIN sysserver_principals sp ON dpprincipal_id = spprincipal_id
order by UserType
select from sysdatabase_principals
-- Server Roles
select
pname as UserName, ptype_desc as UserType, ppname as ServerRoleName, pptype_desc as ServerRoleType
from sysserver_role_members roles
join sysserver_principals p on rolesmember_principal_id = pprincipal_id
join sysserver_principals pp on rolesrole_principal_id = ppprincipal_id
where ppname in('sysadmin')
order by ServerRoleName, UserName
-- Database Roles
SELECT
pname as UserName, ptype_desc as UserType, ppname as DBRoleName, pptype_desc as DBRoleType, ppis_fixed_role as IfFixedRole
FROM sysdatabase_role_members roles
JOIN sysdatabase_principals p ON rolesmember_principal_id = pprincipal_id
JOIN sysdatabase_principals pp ON rolesrole_principal_id = ppprincipal_id
where ppname in('db_owner', 'db_datawriter')
-- What can these users do
SELECT
grantorname as GrantorName, dpstate_desc as StateDesc, dpclass_desc as ClassDesc, dppermission_name as PermissionName ,
OBJECT_NAME(major_id) as ObjectName, GranteeName = granteename
FROM sysdatabase_permissions dp
JOIN sysdatabase_principals grantee on dpgrantee_principal_id = granteeprincipal_id
JOIN sysdatabase_principals grantor on dpgrantor_principal_id = grantorprincipal_id
where permission_name like '%UPDATE%'
1打开企业管理器进入sql
server组安全性2创建、选择你进行设置权限的用户,右击属性!3点击标题栏下数据库访问,对其用户设置给予访问的数据和数据库角色4点击确定,完成设置mssql数据库访问用户及访问权限
(责任编辑:winiis)
1、为角色赋予jobs表的所有权限
GRANT ALL ON jobs TO newrole
2、为角色赋予sales表的查、改权限
GRANT SELECT,UPDATE ON sales TO newrole
临时表可以被任何用户在任何数据库下创建,而不需要授予任何权限。
本地临时表只能被创建它的会话访问。全局临时表可以被所有会话访问和修改,而不需要授权。
按照从最低级别角色(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角色的权限该角色不能被删除
以上就是关于SQL 怎么创建一个只有查询数据库用户权限呢全部的内容,包括:SQL 怎么创建一个只有查询数据库用户权限呢、SQL 中角色权限授予问题、sql语句server中怎么查询用户的角色和权限等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)