SQL Server 2012中的user和login
2016-12-14 22:14
316 查看
SQL Server中既有user的概念,又有login的概念,两者很容易混淆。特别是对熟悉Oracle的用户迷惑性更大。在Oracle中我们只需要一个语句create user test identified by test;就完成了用户创建,然后做一些必要的授权如grant dba,resource,connect to test;我们就可以用test这个用户来访问和控制数据库了。但是在SQL Server里没有这么简单,首先必须先创建一个数据库,然后还需要新建一个login,还要在新建的数据库中创建一个供login使用的user,最后给这个user授权,如此这般我们才能用这个login连接并访问数据库。
通过上面介绍可以看出login的主要工作就是用来登录数据库服务器,可以说是数据库服务器的通行证,没有login外界就无法和SQL Server服务器取得任何联系。但是使用login登上服务器之后我们没有任何访问和使用数据库的权限。对数据库服务器上的所有数据库来说这次的login只是一个guest访问,仅仅是过来看看,做不了任何实质性的工作。
做不了任何工作的login对我们来说是没有任何作用的,那么如何让login工作起来呢?这时我们的user就拍上用场了。如果login想要访问某个数据库,首先需要管理员(sa)在这个数据库底下为其新建一个user,然后给这个user授权,这样login登陆时就可以使用这个user来访问这个数据库了。如果这个login还想访问其他的数据库,同样的需要管理员在想要访问的数据库底下为其新建并授权用户。
说到这有的同学就要问了,为啥SQL Server要搞的这么复杂,直接让给login授权访问数据库不就可以了,为啥还要搞一个user,再通过user访问数据库?我觉得主要目的将服务器登录控制和数据库访问控制分离开。这样一来,login的修改不会影响数据中user对数据库的访问权限,数据库中user访问权限的改变同样不会对login的登录带来影响。
下面是一个SQL Server数据库的使用场景,
1, 使用sa用户或者windows用户登录服务器
2, 创建一个database 命名为db1,创建一个login账户log1,为log1在db1里创建一个user db_user,为db_user创建一个defualt schema,授权db_user建表和建视图的权限。
3, 这样我们就可以用log1登陆服务器操作数据库db1了。断开sa用户,用log1连上服务器并执行下面的sql
这样我们就default schema “db_schema”下面创建了一个test_table的表了。
通过上面介绍可以看出login的主要工作就是用来登录数据库服务器,可以说是数据库服务器的通行证,没有login外界就无法和SQL Server服务器取得任何联系。但是使用login登上服务器之后我们没有任何访问和使用数据库的权限。对数据库服务器上的所有数据库来说这次的login只是一个guest访问,仅仅是过来看看,做不了任何实质性的工作。
做不了任何工作的login对我们来说是没有任何作用的,那么如何让login工作起来呢?这时我们的user就拍上用场了。如果login想要访问某个数据库,首先需要管理员(sa)在这个数据库底下为其新建一个user,然后给这个user授权,这样login登陆时就可以使用这个user来访问这个数据库了。如果这个login还想访问其他的数据库,同样的需要管理员在想要访问的数据库底下为其新建并授权用户。
说到这有的同学就要问了,为啥SQL Server要搞的这么复杂,直接让给login授权访问数据库不就可以了,为啥还要搞一个user,再通过user访问数据库?我觉得主要目的将服务器登录控制和数据库访问控制分离开。这样一来,login的修改不会影响数据中user对数据库的访问权限,数据库中user访问权限的改变同样不会对login的登录带来影响。
下面是一个SQL Server数据库的使用场景,
1, 使用sa用户或者windows用户登录服务器
2, 创建一个database 命名为db1,创建一个login账户log1,为log1在db1里创建一个user db_user,为db_user创建一个defualt schema,授权db_user建表和建视图的权限。
use master create database db1; create login log1 with password='log1',check_policy=off; go use db1 create user db_user for login log1; go create schema db_schema authorization db_user; go alter user db_user with default_schema=db_schema; grant create table,create view to db_user; go
3, 这样我们就可以用log1登陆服务器操作数据库db1了。断开sa用户,用log1连上服务器并执行下面的sql
create table test_table(id int,name varchar(255));
这样我们就default schema “db_schema”下面创建了一个test_table的表了。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- Oracle用户被锁原因及办法
- 数据库的迁移救援
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法