《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创建只读用户的更多相关文章

  1. Oracle数据库创建只读用户

    创建一个只读用户user2,只能查询管理员用户user1下的表,不能增删改. 操作环境:PL/SQL Developer 1.用管理员用户user1登录,创建用户user2.并授权 --创建用户use ...

  2. SQL Server 错误:15023(创建对于用户失败)

    问题: 错误15023:当前数据库中已存在用户或角色 在把远程服务器上的数据库备份还原到本地机后, 给一个"登录"关联一个"用户"时(用户映射),发生错误:“错 ...

  3. PostgreSQL数据库创建只读用户总结

    好久没有弄,有点忘了,今天有客户问这个问题,发现几个SQL还解决不了,于是总结一下: --以超级用户登录数据库,创建用户: postgres=# create user test_read_only ...

  4. PostgreSQL创建只读用户

    创建用户及指定密码: CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 设置用户默认事务只读: alter user readonly se ...

  5. mysql数据库,创建只读用户

    数据库当前只有一个root用户,需要创建一个只读帐户给其他使用,因使用者是使用数据库管理工具在其他主机访问,所以还要开户远程访问权限,操作步骤如下. 1. 使用现有的root用户登录到Mysql. m ...

  6. MySQL, 创建一个只读用户和一个所有权限用户

    安装pasa需要配置mysql.基本知识学习一下 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL 为关系型数据库 ...

  7. ORACLE权限管理—创建只读账号

    创建只读用户:grant connect to user; grant create session to user; 1.创建角色 CREATE ROLE SELECT_ROLE 2.给角色分配权限 ...

  8. Azure SQL Database (23) Azure SQL Database Dynamic Data Masking动态数据掩码

    <Windows Azure Platform 系列文章目录> 我们在使用关系型数据的时候,有时候希望: - 管理员admin,可以查看到所有的数据 - 普通用户,某些敏感字段,比如信用卡 ...

  9. Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

随机推荐

  1. 通过 PHP 连接China Azure Blob 存储

    问题说明 Azure Blob 存储是一种将非结构化数据作为对象/Blob存储在云中的服务.Blob存储可以存储任何类型的文本或二进制数据,例如文档.媒体文件或应用程序安装程序.Blob存储也称为对象 ...

  2. cacti监控系统

    cacti 1. cacti安装 IP: 172.25.44.1 环境: Red Hat 6.5 镜像: rhel-server-6.5-x86_64-dvd.iso 火墙: /etc/init.d/ ...

  3. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  4. C# 使用NPOI 实现Excel的简单导入导出

    private void btnImport_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); DataTable dt ...

  5. 一文教你迅速解决分布式事务 XA 一致性问题

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库团队 近日,腾讯云发布了分布式数据库解决方案(DCDB),其最明显的特性之一就是提供了高于开源分布式事务XA的性能.大型 ...

  6. Java jdk 快速配置

    JAVA_HOME C:\Program Files\Java\jdk1.8.0_92   Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;   CLASSPATH ...

  7. mysql添加外键约束变为索引

    今天有位自己填上一坑:mysql储存引擎 原因就是数据库表引擎为:MyISAM,建立主外键关系需要是InnoDB: 解决方案:alter  table table_name1  engine=inno ...

  8. web程序员标准环境之DreamWeaver【推荐】

    Adobe Dreamweaver,简称"DW",中文名称 "梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器 ...

  9. MySQLzip archive版本(5.7.19)安装教程

    1.  从官网下载zip archive版本http://dev.mysql.com/downloads/mysql/ 2. 解压缩至相应目录,并配置环境变量(将*\bin添加进path中): 3. ...

  10. FFmpeg 常用命令收集

    FFmpeg 常用命令 合并视频 ffmpeg -i "KTDS-820A_FHD.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts i ...