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 Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/7573626.html,如需转载请自行联系原作者



目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
怎么通过第三方库实现标准库`database/sql`的驱动注入?
在Go语言中,数据库驱动通过注入`database/sql`标准库实现,允许统一接口操作不同数据库。本文聚焦于`github.com/go-sql-driver/mysql`如何实现MySQL驱动。`database/sql`提供通用接口和驱动注册机制,全局变量管理驱动注册,`Register`函数负责添加驱动,而MySQL驱动在`init`函数中注册自身。通过这个机制,开发者能以一致的方式处理多种数据库。
|
21天前
|
关系型数据库 MySQL Java
flywa报错java.sql.SQLSyntaxErrorException: Unknown database ‘flyway‘
flywa报错java.sql.SQLSyntaxErrorException: Unknown database ‘flyway‘
21 1
|
2月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
2月前
|
SQL Java 数据库连接
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
|
2月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
2月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
2月前
|
SQL 存储 JSON
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
|
2月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
2月前
|
SQL 数据库 Windows
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误

热门文章

最新文章