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

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方