Azure SQL Database (25) Azure SQL Database创建只读用户
《Windows Azure Platform 系列文章目录》
本文将介绍如何在Azure SQL Database创建只读用户。
请先按照笔者之前的文章:Azure SQL Database (24) 使用新管理界面,创建跨数据中心标准地域复制(Standard Geo-Replication)
预先准备以下内容:
1.在Azure China East数据中心,作为主站点。创建1个Database为MyDB。
2.在Azure China North数据中心,创建只读数据库。MyDB为只读数据库。
注意:我们在下图中创建的服务器管理员账户leizhang,是属于sysadmin。

3.当我们配置完服务器防火墙。访问主站点: leizhangsqlsvrsh.database.chinacloudapi.cn,输入相关的登录信息。
我们就可以访问上面创建的数据库了。
我们预先创建在MyDB数据库里,创建一个数据表:
CREATE TABLE dbo.new_employees(
[ID] [int] IDENTITY(1,1) NOT NULL,
[firstname] [nvarchar](50) NOT NULL,
[lastname] [nvarchar](50) NOT NULL,
[gender] [datetime] NOT NULL)
但是请注意上图中:服务器管理员账户leizhang,毕竟是属于sysadmin组的。
如果我们使用ETL抽取Azure SQL Database数据的时候,提供leizhang这个sysadmin组的用户是非常不安全的。
最安全的方式,是提供只读用户。
我们这里需要做两种只读用户:
1.在China East主站点,创建只读用户
2.在China North只读站点,创建只读用户
3.站点信息如下:
| 类型 | SQL Server Name | 物理位置 | DB Name | 定价层 | 权限 |
| 主站点 | leizhangsqlsvrsh.database.chinacloudapi.cn | China East | MyDB | Basic | 读写 |
| 异地复制站点 | leizhangsqlsvrbj.database.chinacloudapi.cn | China North | MyDB | Basic | 只读 |
第一部分,我们在China East主站点:leizhangsqlsvrsh.database.chinacloudapi.cn,创建只读用户。
1.按照下面的信息登录:
Server Name: leizhangsqlsvrsh.database.chinacloudapi.cn
UserName: leizhang
password:略
注意,使用SQL Server Management Studio(SSMS),选择Options。

在Connection Properties,我们选择default。

2.在Master库下,右键New Query。如下图:

在Master库下,我们点击执行下面的T-SQL语句:
创建新的Login readonlylogin并设置密码。
CREATE LOGIN readonlylogin WITH password='1231!#ASDF!a';
执行成功后,就可以在Logins里面,查看到新的readonlylogin。如下图:

3.如果我们需要在只读站点China North,创建只读用户,请在Master库下执行以下的语句:
否则请忽略步骤3.
SELECT [name], [sid] FROM [sys].[sql_logins] WHERE [type_desc] = 'SQL_Login' SELECT [name], [sid] FROM [sys].[database_principals] WHERE [type_desc] = 'SQL_USER'
执行结果,如下:

我们可以看到,readonlylogin账户的sid如上图的截图。这个sid我们在只读站点leizhangsqlsvrbj,创建只读账户会用到。
4.在MyDB库下,右键New Query。如下图:

在MyDB库下,我们点击执行下面的T-SQL语句:
CREATE USER readonlyuser FROM LOGIN readonlylogin; EXEC sp_addrolemember 'db_datareader', 'readonlyuser';
执行成功后,我们可以看到,在主站点:leizhangsqlsvrsh的数据库MyDB下,有新的用户reareadonlyuser。如下图:

5.然后新开启一个SSMS,以readonlylogin只读账户登录:
(1)Server Name:leizhangsqlsvrsh.database.chinacloudapi.cn
(2)User Name:readonlylogin
(3)Password: 1231!#ASDF!a
注意Connection Properties,我们要选择MyDB。如下图:
6.以readonlylogin只读账户登录后,我们执行插入操作,会发现插入失败。如下图:

第二部分,我们在China North只读站点:leizhangsqlsvrbj.database.chinacloudapi.cn,创建只读用户。
1.我们以sysadmin账户,登录China North只读站点:
(1)Server Name:leizhangsqlsvrbj.database.chinacloudapi.cn
(2)User Name: leizhang
(3)Password: 略
注意:在Connection Properties,我们选择default。

2.登录后,我们发现在只读站点: leizhangsqlsvrsh.database.chinacloudapi.cn的数据库MyDB下,已经把主站点的只读用户同步过来。如下图:

但是上图的蓝色区域里,logins只能leizhang这个sysadmin组的用户。并没有readonlylogin信息
3.我们在只读站点的Master库里,执行下面的T-SQL语句
--注意SID=后面没有单引号或者双引号
--请把第一部分的,步骤3中的sid值复制过来
CREATE LOGIN readonlylogin WITH password='1231!#ASDF!a', SID=0x01060000000000640000000000000000EB29A4EE8E1A75459AAC0219BC67BB33
4.执行成功后,我们重新打开SQL Server Management Studio (SSMS)。登录只读站点eizhangsqlsvrbj,信息如下:
(1)Server Name:leizhangsqlsvrbj.database.chinacloudapi.cn
(2)User Name: readonlylogin
(3)Password: 1231!#ASDF!a
注意:在Connection Properties的Database选择MyDB

这样就可以以只读账户readonlylogin,登录只读站点leizhangsqlsvrbj
Azure SQL Database (25) Azure SQL Database创建只读用户的更多相关文章
- Oracle数据库创建只读用户
创建一个只读用户user2,只能查询管理员用户user1下的表,不能增删改. 操作环境:PL/SQL Developer 1.用管理员用户user1登录,创建用户user2.并授权 --创建用户use ...
- SQL Server 错误:15023(创建对于用户失败)
问题: 错误15023:当前数据库中已存在用户或角色 在把远程服务器上的数据库备份还原到本地机后, 给一个"登录"关联一个"用户"时(用户映射),发生错误:“错 ...
- PostgreSQL数据库创建只读用户总结
好久没有弄,有点忘了,今天有客户问这个问题,发现几个SQL还解决不了,于是总结一下: --以超级用户登录数据库,创建用户: postgres=# create user test_read_only ...
- PostgreSQL创建只读用户
创建用户及指定密码: CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 设置用户默认事务只读: alter user readonly se ...
- mysql数据库,创建只读用户
数据库当前只有一个root用户,需要创建一个只读帐户给其他使用,因使用者是使用数据库管理工具在其他主机访问,所以还要开户远程访问权限,操作步骤如下. 1. 使用现有的root用户登录到Mysql. m ...
- MySQL, 创建一个只读用户和一个所有权限用户
安装pasa需要配置mysql.基本知识学习一下 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL 为关系型数据库 ...
- ORACLE权限管理—创建只读账号
创建只读用户:grant connect to user; grant create session to user; 1.创建角色 CREATE ROLE SELECT_ROLE 2.给角色分配权限 ...
- Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码
<Windows Azure Platform 系列文章目录> 我们在使用关系型数据的时候,有时候希望: - 管理员admin,可以查看到所有的数据 - 普通用户,某些敏感字段,比如信用卡 ...
- Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...
随机推荐
- Android ViewPager无法使用wrap_content属性自适应高度
使用ViewPager的时候发现一个问题,当设置ViewPager控件的height属性为wrap_content时,控件高度一直是0,无法正常显示,在网上找到了解决办法,重写ViewPager的on ...
- JSP慕课网阶段用户登录小例子(不用数据库)
getAttribute和setAttribute一起使用,而getParameter用于取得如request传来的参数. Web是请求/响应架构的使用,而request和response就是在服务器 ...
- [知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)
上一讲为大家讲了什么是JSON,那么这一讲为大家带来了在WEB项目中JSON的用法,也就是JSON的封装与解析. 此图是数据库中的部分内容 一.JSON封装 所谓的JSON封装,指的是在Servlet ...
- macaca 测试web(2)
还是以博客园登录为例, 可以查看上一篇上一篇 这次只测试登录,使用ddt的数据驱动,这里我博客也有记录 地址 其实我在uiautomator +python 实现安卓自动化 一文当中我已经使用过ddt ...
- vue-cli中父子组件间的变量传递
vue-cli中父子组件间的变量传递 在vue中每一个组件的作用域都是独立的,如果我们想实现父子组件间变量的传递就要另寻他法,而不能直接调用其中的变量. 父级组件向子级组件传递变量 要实现这种效果我们 ...
- linux系统下C语言调用lapack ,blas库
在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...
- poj3463 最短路和比最短路长1的路径数
这题需要很好的理解Dij. 在Dij的基础上,每个点多一个次短路的长度和数量进行控制. 那么在队列中,最短路控制时出现n次,次短路控制出现n次.注意松弛条件中val值和最短路.次短路的关系. 这题需要 ...
- [转载]在instagram上面如何利用电脑来上传图片
原文地址:在instagram上面如何利用电脑来上传图片作者:小北的梦呓 我们都知道instagram是一个手机版的app,instagram官方不支持通过电脑来上传图片,而利用手机又很麻烦,那么如果 ...
- 软工+C(2017第8期) 提问与回复
// 上一篇:野生程序员 // 下一篇:助教指南 在线上博客教学里引入了第三方助教,助教在每次作业期间尽力完成"消灭零点评"的目标.然而紧接而来的问题是:学生对博客作业点评的回复率 ...
- 201521123104《Java程序设计》第7周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: pu ...