SQL Server 2017 Always On AG on Linux(二)SQL Server 证书及权限配置

2023-11-05 12:40

本文主要是介绍SQL Server 2017 Always On AG on Linux(二)SQL Server 证书及权限配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

既然没有了域认证,需要配置证书认证,步骤:

1. 启用S​​QL Server Always On Availability Groups功能
2. 在所有服务器上为SQL Server Always On Availability Groups安装Linux资源代理
3. 在所有Linux服务器启用防火墙上的Always On Availability Group端点端口
4. 在主副本上创建数据库主密钥
5. 创建将用于加密可用性组端点的证书
6. 使用证书为主副本创建Always On Availability Group端点进行身份验证
7. 将证书导出到文件
8. 将证书文件复制到辅助副本
9. 授予证书文件的SQL Server帐户权限
10. 在主副本上创建登录账号以供辅助副本使用
11. 为登录账号创建用户
12. 将步骤5中创建的证书与用户关联
13. 授予登录账号的CONNECT权限

 

1. 所有服务器:启用 hadr 功能(Always On Availability Groups

/opt/mssql/bin/mssql-conf set hadr.hadrenabled  1 
systemctl restart mssql-server 

2. 所有服务器:为 SQL Server AlwaysOn AG 安装Linux资源代理。

群集资源代理程序 mssql-server-ha 是 Pacemaker 和 SQL Server 之间的接口

yum install -y mssql-server-ha 
yum info mssql-server-ha 

3. 所有服务器:启用防火墙上的 AlwaysOn AG 端点默认端口5022 (或关闭防火墙!)

firewall-cmd --zone=public --add-port=5022/tcp --permanent 
firewall-cmd --reload

SSMS 连接到任意一个实例,[查询] 选项启用 [SQLCMD模式],批量执行以下脚本

----------------------------------------------------------------------
--#【 server111 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.111 -U sa -P sa@PWS123456
GO
USE master  
GO
-- 4. 创建数据库主密钥
--(数据库主密钥是对称密钥,用于保护数据库中存在的证书和非对称密钥的私钥)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Master@123456';  
GO
-- 5. 创建将用于加密可用性组端点的证书
CREATE CERTIFICATE LINUXHA_SQLAG1_cert 
WITH SUBJECT = 'server111 certificate for Availability Group' 
GO
--6. 主副本:使用证书创建 AlwaysOn AG 端点并进行身份验证
CREATE ENDPOINT Endpoint_AvailabilityGroup 
STATE = STARTED 
AS TCP 
(LISTENER_PORT = 5022, LISTENER_IP = ALL
)  
FOR DATABASE_MIRRORING 
(AUTHENTICATION = CERTIFICATE LINUXHA_SQLAG1_cert, ENCRYPTION = REQUIRED ALGORITHM AES,ROLE = ALL
);  
GO
-- 7. 主副本:将证书导出到文件
BACKUP CERTIFICATE LINUXHA_SQLAG1_cert 
TO FILE = '/var/opt/mssql/data/LINUXHA_SQLAG1_cert.cer';  
GO----------------------------------------------------------------------
--#【 server112 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.112 -U sa -P sa@PWS123456
GO
USE master  
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Master@123456';  
GO 
CREATE CERTIFICATE LINUXHA_SQLAG2_cert
WITH SUBJECT = 'server112 certificate for Availability Group' 
GO  
CREATE ENDPOINT Endpoint_AvailabilityGroup 
STATE = STARTED  
AS TCP
(
LISTENER_PORT = 5022, LISTENER_IP = ALL 
)  FOR DATABASE_MIRRORING 
(AUTHENTICATION = CERTIFICATE LINUXHA_SQLAG2_cert, ENCRYPTION = REQUIRED ALGORITHM AES,ROLE = ALL
); 
GO
BACKUP CERTIFICATE LINUXHA_SQLAG2_cert
TO FILE = '/var/opt/mssql/data/LINUXHA_SQLAG2_cert.cer';  
GO----------------------------------------------------------------------
--#【 server113 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.113 -U sa -P sa@PWS123456
GO
USE master  
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Master@123456';  
GO 
CREATE CERTIFICATE LINUXHA_SQLAG3_cert
WITH SUBJECT = 'server113 certificate for Availability Group' 
GO  
CREATE ENDPOINT Endpoint_AvailabilityGroup 
STATE = STARTED  
AS TCP
(
LISTENER_PORT = 5022, LISTENER_IP = ALL 
)  FOR DATABASE_MIRRORING 
(AUTHENTICATION = CERTIFICATE LINUXHA_SQLAG3_cert, ENCRYPTION = REQUIRED ALGORITHM AES,ROLE = ALL
); 
GO
BACKUP CERTIFICATE LINUXHA_SQLAG3_cert
TO FILE = '/var/opt/mssql/data/LINUXHA_SQLAG3_cert.cer';  
GO

8. 各服务器上的证书相互传给其他服务器

# server111(192.168.2.111) 上执行
scp /var/opt/mssql/data/LINUXHA_SQLAG1_cert.cer root@server112:/var/opt/mssql/data/
scp /var/opt/mssql/data/LINUXHA_SQLAG1_cert.cer root@server113:/var/opt/mssql/data/# server112(192.168.2.112) 上执行
scp /var/opt/mssql/data/LINUXHA_SQLAG2_cert.cer root@server111:/var/opt/mssql/data/
scp /var/opt/mssql/data/LINUXHA_SQLAG2_cert.cer root@server113:/var/opt/mssql/data/# server113(192.168.2.113) 上执行
scp /var/opt/mssql/data/LINUXHA_SQLAG3_cert.cer root@server111:/var/opt/mssql/data/
scp /var/opt/mssql/data/LINUXHA_SQLAG3_cert.cer root@server112:/var/opt/mssql/data/

9. 所有服务器:授予证书文件所有者权限

chown mssql:mssql /var/opt/mssql/data/LINUXHA_SQLAG* 
ll /var/opt/mssql/data/LINUXHA_SQLAG* 

 

10.各实例证书还原及账号授权

SSMS 连接到任意一个实例,查询选项启用[SQLCMD模式],批量执行以下脚本

----------------------------------------------------------------------
--#【 server111 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.111 -U sa -P sa@PWS123456
GO
USE master  
GO
-- 11 创建登录账号以供辅助副本使用
CREATE LOGIN login_ag WITH PASSWORD = 'AG@123456';  
GO
-- 12. 为登录账号创建用户
CREATE USER login_ag FOR LOGIN login_ag  
GO
-- 13. 创建其他副本的证书
CREATE CERTIFICATE LINUXHA_SQLAG2_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG2_cert.cer'  
GO
CREATE CERTIFICATE LINUXHA_SQLAG3_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG3_cert.cer'  
GO
-- 14. 授予登录账号的CONNECT权限
GRANT CONNECT ON ENDPOINT::Endpoint_AvailabilityGroup 
TO [login_ag];   
GO----------------------------------------------------------------------
--#【 server112 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.112 -U sa -P sa@PWS123456
GO
USE master  
GO
-- 11 创建登录账号以供辅助副本使用
CREATE LOGIN login_ag WITH PASSWORD = 'AG@123456';  
GO
-- 12. 为登录账号创建用户
CREATE USER login_ag FOR LOGIN login_ag  
GO
-- 13. 创建其他副本的证书
CREATE CERTIFICATE LINUXHA_SQLAG1_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG1_cert.cer'  
GO
CREATE CERTIFICATE LINUXHA_SQLAG3_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG3_cert.cer'  
GO
-- 14. 授予登录账号的CONNECT权限
GRANT CONNECT ON ENDPOINT::Endpoint_AvailabilityGroup 
TO [login_ag];   
GO----------------------------------------------------------------------
--#【 server113 副本】
----------------------------------------------------------------------
:CONNECT 192.168.2.113 -U sa -P sa@PWS123456
GO
USE master  
GO
-- 11 创建登录账号以供辅助副本使用
CREATE LOGIN login_ag WITH PASSWORD = 'AG@123456';  
GO
-- 12. 为登录账号创建用户
CREATE USER login_ag FOR LOGIN login_ag  
GO
-- 13. 创建其他副本的证书
CREATE CERTIFICATE LINUXHA_SQLAG1_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG1_cert.cer'  
GO
CREATE CERTIFICATE LINUXHA_SQLAG2_cert  
AUTHORIZATION login_ag  
FROM FILE = '/var/opt/mssql/data/LINUXHA_SQLAG2_cert.cer'  
GO
-- 14. 授予登录账号的CONNECT权限
GRANT CONNECT ON ENDPOINT::Endpoint_AvailabilityGroup 
TO [login_ag];   
GO

暂时配置到这里,接下来将进行 Always On Availability Group 的创建!!

 

 

参考:

Linux 上的 SQL Server

Install and Configure SQL Server 2017 Availability Groups on Linux - Part 2

 

这篇关于SQL Server 2017 Always On AG on Linux(二)SQL Server 证书及权限配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349933

相关文章

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数