sql 授权语句

use 你的库名 
go 

--新增用户 
exec sp_addlogin ‘test‘            --添加登录 
exec sp_grantdbaccess N‘test‘            --使其成为当前数据库的合法用户 
exec sp_addrolemember N‘db_owner‘, N‘test‘            --授予对自己数据库的所有权限 

--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表 
go 

--删除测试用户 
exec sp_revokedbaccess N‘test‘            --移除对数据库的访问权限 
exec sp_droplogin N‘test‘            --删除登录 

如果在企业管理器中创建的话,就用:

企业管理器--安全性--右键登录--新建登录

常规项
--名称中输入用户名
--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
--默认设置中,选择你新建的用户要访问的数据库名

服务器角色项
这个里面不要选择任何东西

数据库访问项
勾选你创建的用户需要访问的数据库名
数据库角色中允许,勾选"public","db_ownew"

确定,这样建好的用户与上面语句建立的用户一样 
--------------------------------------------------------------------------- 

最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: 

--添加只允许访问指定表的用户: 
exec sp_addlogin ‘用户名‘,‘密码‘,‘默认数据库名‘ 

--添加到数据库 
exec sp_grantdbaccess ‘用户名‘

--分配整表权限 
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名]

--分配权限到具体的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]

-----------------------------------------------------------------------------------------------------

建角色,用户,权限

/*--示例说明
        示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test
    随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test
    同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限
    最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。
    经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。
--*/

USE pubs

--创建角色 r_test
EXEC sp_addrole ‘r_test‘

--授予 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test

--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin ‘l_test‘,‘pwd‘,‘pubs‘

--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess ‘l_test‘,‘u_test‘

--添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember ‘r_test‘,‘u_test‘

--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test

/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/

--从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess ‘u_test‘

--删除登录 l_test
EXEC sp_droplogin ‘l_test‘

--删除角色 r_test
EXEC sp_droprole ‘r_test‘

--假设你的用户为bb 

--1. 报告孤立用户 
USE db 
EXEC sp_change_users_login ‘Report‘ 
GO 

--2. 处理孤立用户 
USE db 
EXEC sp_change_users_login ‘Auto_Fix‘,‘bb‘,null,‘bb‘
时间: 2024-11-03 22:52:06

sql 授权语句的相关文章

SQL授权语句(MySQL基本语句)

看他们网上的,写得都是千篇一律,同时,好多也写得不是很好,下面是我自己总结的有关mysql的使用细节,也是我在学习过程中的一些记录吧,希望对你有点帮助,后面有关存储过程等相关操作还没有总结好,下次总结好了再发给你吧,呵呵~~~~~ MySql学习笔记 MySql概述:MySql是一个种关联数据库管理系统,所谓关联数据库就是将数据保存在不同的表中,而不是将所有数据放在一个大的仓库中.这样就增加了速度与提高了灵活性.并且MySql软件是一个开放源码软件. 注意,MySql所支持的TimeStamp的

PL/SQL常用语句

> 2.显示当前连接用户  SQL> show user  3.查看系统拥有哪些用户  SQL> select * from all_users;  4.新建用户并授权  SQL> create user a identified by a;(默认建在SYSTEM表空间下)  SQL> grant connect,resource to a;  5.连接到新用户  SQL> conn a/a  6.查询当前用户下所有对象  SQL> select * from t

Hibernate 关于执行sql查询语句(转)

原文  http://www.yshjava.cn/post/543.html 主题 SQLHibernate Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的.通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类--SQLQueryImpl对象,在下文中出现的SQLQuery如非注明,都是指该子类)对象来进行原生SQL查询: session.creat

Oracle 基本SQL SELECT语句

SELECT  *  |    {   [ DISTINCT  ]    column   |    expression   [   alias   ]  ,   ...    } FROM  table; ?SELECT  标识 选择哪些列. ?FROM    标识从哪个表中选择. column后面加上空格,同时跟上别名(alias),或者 as 别名,到下一行的内容时,要用逗号隔开, 默认的别名是小写的,如果想要让它是大写的,使用 "别名" 如果别名有多个单词的时候,用双引号别名

Sql去重语句

海量数据(百万以上),其中有些全部字段都相同,有些部分字段相同,怎样高效去除重复? 如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句进行去重: 1 delete from 表 where id not in 2 (select max(id) from 表 group by mobilePhone,officePhone,email ) 3 or 4 delete from 表 where id not in 5

SQL join语句

——转载 假设我们有下面两张表.表A在左边,表B在右边.我们给它们各四条记录. 1 2 3 4 5 6 id name       id  name -- ----       --  ---- 1  Pirate     1   Rutabaga 2  Monkey     2   Pirate 3  Ninja      3   Darth Vader 4  Spaghetti  4   Ninja 我们用过name字段用几种不同方式把这些表联合起来,看能否得到和那些漂亮的韦恩图在概念上的匹

图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join.我觉得清楚易懂,转过来. 假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示

SQL 常用语句

–-表现最差的前10名使用查询 SELECT TOP 10 ProcedureName = t.text, ExecutionCount = s.execution_count, AvgExecutionTime = isnull ( s.total_elapsed_time / s.execution_count, 0 ), AvgWorkerTime = s.total_worker_time / s.execution_count, TotalWorkerTime = s.total_wo

Sql Server 语句随笔

例1 对于两个或更多的销售员的销售点,计算其中所有销售员的总销售目标值和销售员金额. select city,sum(QUOTA),sum(SALESREPS.SALES) from OFFICE,SALESREPS group by CITY having count(*)>=2 例2 (1) 单行insert语句 单行insert语句用于向一关系表中添加一行新数据.其使用格式如下: insert into <表名> (列名列表) values (列值列表) (2) 多行insert语