如何建立SSH加密的MySQL复制

对数据库管理员来说,MySQL颇多吸引人之处,例如它的免费和开源,以及拥有详尽的文档和内置支持数据复制等。但是安全管理员会迅速指出它的一个缺陷:加密。政府对数据隐私保护的要求极为严格,通过局域网或广域网复制数据都需要加密。

尽管可以通过编译MySQL使其支持SSL,但许多二进制发行版并未激活该功能。打开一个SQL提示符,然后键入命令“show variables like '%ssl%”。如果“have_ssl”或“have_openssl”被设置为“No”,则很不幸该功能未被激活。幸运的是,我们还有另一种选择来从源代码重新编译。安全外壳(SSH)支持数据隧道(data-tunneling),它可以建立一个类似VPN的迷你环境,来提供透明加密。首先,我们将使用一个用户名/密码建立一条SSH隧道。我们将通过使用RSA密钥对远端进行认证。一旦隧道正常运行后,我们将设置数据复制。

建立隧道

SSH隧道使用端口转发技术来连接到从属服务器上的一个TCP端口,在本文示例中该端口是7777,它通过SSH被转发到主MySQL服务器上的 TCP端口3306。确保MySQL主服务器端的SSH隧道被激活,默认情况下它一般都处于激活状态。在MySQL从属服务器上,执行以下命令“ssh -f user@master_ip -L 7777:master_ip:3306 -N”。使用主服务器的一个系统用户账号和IP地址分别替换user和master_ip。你可能希望使用一个仅用于数据复制的用户,将其shell设定到/bin/false上。另外你可以使用从服务器上的任何可用端口替换7777。在主数据库端,你将被提示输入用户账号和密码。

现在从MySQL1从服务器上运行“mysql -h 127.0.0.1 -P 7777”,来连接MySQL主服务器。切记不能使用localhost,因为在MySQL中它有别的含义。如果需要,可以在该命令后追加“-u -p”来指定一个MySQL账号和密码。如果你获得一个“permission denied”消息,那么需要检查MySQL主服务器上的授权声明。授权声明应该被捆绑到主计算机的真实IP地址,因为它才是被转发的MySQL1连接的真正源地址。被转发的连接不是来自于localhost或127.0.0.1。

设置复制

现在隧道已经建好,接下来该设置数据复制了。这个过程与典型的MySQL复制设置完全相同。编辑主服务器上的my.cnf文件,增加以下两行代码:

log-bin=mysql-bin

server-id=1

接下来,创建复制账号。在MySQL中,运行以下查询语句:
CREATE USER 'replicationuser'@'master_ip' IDENTIFIED BY 'replicationpassword';
GRANT REPLICATION SLAVE ON *.* TO 'replicationuser'@'master_ip';

在从属服务器端,将以下代码增加到my.cnf文件中:

server-id = 2

master-host = 127.0.0.1

master-user = replicationuser

master-password = replicationpassword

master-port = 7777

重启主服务器和从服务器上的MySQL服务。对于新创建的复制环境,你可能需要手动拷贝数据库到从服务器上。参考MySQL指南(16.1章节),可以获得创建数据快照和更多复制选项的详细信息。这一切都做完后,检查复制是否生效。分别在主服务器和从服务器上执行一个“select”查询;返回结果应该是相同的。在主服务器上执行insert、update或delete数据,改变“select”返回结果的记录集。等待几秒钟后,重新执行 “select”查询。如果复制功能已经生效,主从服务器上得到结果应该仍然是相同的。

你可能希望使用预共享的RSA密钥来取代必须键入密码。通过使用密钥,你可以设置看门狗shell脚本,来确保SSH通道处于激活状态,而且如果该通道失效,它将自动重启。另外,考虑在主服务器上创建一个Cron守护进程,来使用当前的unix时间戳来更新数据表。从服务器可以增加一个检查该值的 Cron守护进程。如果它滞后当前时间戳太大,复制功能可能已被破坏,管理员应该收到告警邮件。

明确MySQL复制相关的两点重要事项

关于MySQL复制,有两点重要事项需要记住。首先,其主要目的是灾难恢复和高可用性,而非备份。在主服务器上执行的每一条数据更改语句,都将在从服务器端重复执行。因此如果你无意键入了“DELETE FROM mytables”语句,并忘记了使用WHERE子句来限定范围,那么你的数据将会同时在主服务器和从服务器上丢失。

第二件需要记住的事情是,你能够在从服务器上创建、更新和删除数据。我遇到过有的开发者为了实现高可用性,创建了同时运行在主服务器和从服务器上的应用程序,并更新了一个被复制的表,每次都破坏了复制功能的正常运行。

因此你需要在应用程序中加入检查逻辑,检查它是否是运行在一个未激活的从属系统上,不要向被复制的表写数据。然后在它上面进行开发者单元测试。

——51CTO王文文:首先要说明的是,虽然这篇文章所用的是SSH技术,但本人还是推荐用SSL来加密MySQL复制。另外关于原文作者提醒的第二个问题就是,如果开发人员坚持想要连入从服务器测试,那推荐使用主主的双向复制。单向复制的话效率高,而双向复制则有它自己的好处。

 

跟着团子学SAP CO:熟练使用结果分析码实现各个场景下收入成本的匹配(一) KKA2/CJ88 PS模块中对财务顾问最难的点在于项目结算,特别是销售型的项目结算。针对客户型项目结算我列举了以下常见的收入成本匹配的一些场景: (1)在项目执行过程中会多次开票,但由于各期成本浮动很大(如前期可能只涉及一些人工、中期全是比较金额较大的材料费),所以希望开票的时候能通过合理的一些指标进行主营业务成本与主营业务收入的匹配。 (2)项目过程中会多次开票,开票确认主营业务收入时,直接将累计发生的实际成本结转为主营业务成本。 (3)项目过程中虽多次开票,但不确认收入,所有发生的实际成本月末计算为在制品,最后项目一次性 阅读详情

相关推荐

美亚杯取证比赛必备:Veracrypt挂载+检材解压保姆级教程(附常见错误排查)

本文提供美亚杯数字取证竞赛的Veracrypt挂载与检材解压保姆级教程。详细解析从分卷压缩包解压(密码格式为MeiyaCup+年份)到使用Veracrypt正确挂载加密容器的全流程,并附有常见错误排查与高级应急方案,帮助选手高效突破技术门槛,顺利进入取证分析阶段。

alice7model的博客 1041

springboot使用ssh公钥连接mysql(含账号密码连接)

在项目开发过程中,遇到了连接数据库时需要使用ssh公钥的情况。在本地使用navicat可以直接通过可视化界面去进行ssh的连接,但是在java中无法直接去进行连接。

爱学习的大雄的博客 4643

基于STM32电压检测和电流检测

1.可测量直流电压0~36V,适用于低电压电子电路中。 2.可测量直流电0~5A范围内,目前采用的ACS712测量量程为5A,该模块有多个量程,可测量到20A 3.实时功率监测 4.电池电量监测(采用电压压降方式计算)

weixin_44453694的博客 6万+

ssh mysql配置文件详解_关于SSH框架整合中,数据库配置文件加密解决思路记载

在SSH框架项目中,如果遇到客户需要加密数据库配置文件(jdbc.properties等),规定用户名或者密码不能以明文的形式出现在配置文件中。该问题可以通过重写spring的processProperties方法来实现,解决方法如下:1、首先确定加密/解密算法,这里以DES算法为例,加密/解密算法较为简单,这里就不赘述了:加密:public class Encryption {/*** DES算...

weixin_30921373的博客 282

多重共线性问题 -- 岭回归方法

概述 本篇博客分为三大部分,线性模型、多重共线性问题和岭回归。其中,线性模型中介绍了线性模型定义和普通最小二乘法对线性模型的拟合。第二部分,借由1987-2007年的人口、消费和科技对碳排放的影响的数据来说明多重共线性问题(包括如何从定性和定量两个方面判断多重共线性问题)和多重共线性问题对普通最小二乘估计的影响。第三部分,使用岭回归对第二部分中的多重共线性问题进行拟合,并基于R2R^2R2决定系数...

楚江客的记录 1万+

【Docker】如何让docker容器正常使用nvidia显卡

描述了如何在docker容器中使用英伟达显卡的过程和问题解决方法。

NameLoadingFailed的博客 8372

通过SSH将MySQL数据库复制到新服务器

mysqldump --add-drop-table --extended-insert --force --log-error=error.log -h127.0.0.1 -uu -p123456 database_1 | ssh -C root@192.168.0.1 "mysql -h127.0.0.1 -uu2 -p123456 database_2"  

唐竹的技术世界 280

Sobel原理及计算过程详解

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。首先,我们需要构建一个Sobel算子,通常是一个 3x3 的矩阵。Sobel算子可以分别计算水平和垂直方向的梯度值,然后将两者合并得到总梯度值。索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度近似值。所以,我们假设选择图像矩阵中的点A(1, 1),即第二行第二列的元素,对应的。接下来,我们将使用Sobel算子计算这个点的梯度值。

2301_76461741的博客 1万+

SSH----------MYSQL设置密码加密,加密登录

数据库的密码是不可以存储明文的 一般使用MD5加密 MD5是不可逆的加密方式 》在mysql添加两条密码加密后的数据 insert into t_user(id,username,password) values (3,'wangwu',md5('123456')); 》在service中把密码加密成md5,然后再从数据库中查询 pub...

qq_32659773的博客 386

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4268

(王道408考研操作系统)第一章计算机系统概述-第三节2:中断和异常

注意!!! 本节内容和《计算机组成原理》中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分内容会借用上述文章 文章目录一:中断和异常的基本概念(1)中断和异常的定义 一:中断和异常的基本概念 在操作系统引入核心态和用户态这两种工作状态后,就需要考虑两种状态之间是如何切换的。 操作系统内核工作在核心态,用户程序工作在用户态,系统不允许用户程序使用核心态的功能,但是用户程序为了完成某些操作又必须使用这些功能

快乐江湖的博客 3531

手把手教你用Navicat SSH安全连接MySQL

https://www.aliyun.com/jiaocheng/140656.html   摘要:SecureShell(缩写为SSH),由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的...

j734948791的博客 4518

【ComfyUI】Flux 图像扩展

本文介绍了一个基于Flux扩图技术的ComfyUI工作流,能够智能扩展图像尺寸并保持内容连贯性。该流程通过扩散模型与条件编码的结合,对图像边缘进行语义填充生成,适用于艺术创作、海报设计等场景。工作流包含图像加载、外扩填充、文本编码、扩散采样等核心节点,采用Flux1-fill-dev等专业模型确保生成质量。演示效果显示,系统能自然延伸原图内容,保持风格统一。该技术可广泛应用于插画扩展、摄影增强、游戏场景构建等领域,显著提升创意工作效率。

Mr数据杨 928

Kimi K3前端盲测解析:AI代码生成工具的技术特性与应用实践

AI代码生成技术通过自然语言处理将需求描述转换为可执行代码,其核心原理是基于大规模代码库训练的语言模型。这种技术能显著提升前端开发效率,特别是在快速原型构建和重复性任务自动化方面具有重要价值。在实际应用场景中,AI工具可生成HTML、CSS、JavaScript等前端代码,并支持React、Vue等主流框架。Kimi K3作为代表性的AI代码生成工具,在前端盲测中展现出优秀的代码质量,能够根据自然语言描述快速生成基础代码结构和辅助复杂逻辑实现。开发者需要掌握代码审查和测试验证等工程实践,确保生成代码的可读性

weixin_34396902的博客 383

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

25个必须记住的SSH命令

25个必须记住的SSH命令,你用过了吗? 2010-11-26 09:45 黄永兵 编译 51CTO.com 字号:T | T SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击。本文将为大家介绍25个最佳的SSH命令,希望您在阅读之后能获得

Jason的专栏 910

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

必须记住的25个SSH命令

    OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了被监听,连接劫持和其它攻击。此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本。      SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务...

mars914的专栏 177

伟大的ssh命令

SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它***。本文将为大家介绍25个最佳的SSH命令,希望您在阅读之后能获得一些启发。1、复制SSH密钥到目标主机,开启无密码SSH登录ssh-copy-iduser@host如果还没有密钥,请使用ssh...

weixin_34087301的博客 136

ssh隧道远程mysql_利用SSH隧道方式连接远程MySQL服务器

1、简介:大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如 此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通 过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用SSH隧道...

weixin_33249090的博客 625

MySQL - 基于SSL安全连接的主从复制

生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即两台MySQL服务器如果其中有一台MySQL服务器挂掉后,另外一台能立马接替其进行工作。

大虾好吃吗 3193

mysql复制数据库脚本_MySQL:复制/同步数据库/表的简单脚本

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最使用mysql复制(同步)# mysqladmin create DB_name -u DB_user --password=DB_pass &&...

weixin_33130113的博客 563

SSH隧道保护MySQL主从复制的实战配置与稳定性工程

MySQL主从复制默认基于明文TCP协议,直接暴露3306端口极易遭受扫描、中间人窃听和连接耗尽攻击。SSH隧道通过将MySQL复制流量封装进加密信道,实现零公网端口暴露、密钥认证替代密码、AES-256-GCM全链路加密等核心安全能力。其技术价值在于不修改MySQL逻辑的前提下,复用成熟稳定的SSH协议栈,兼顾安全性与低延迟。典型应用场景包括跨云VPS主从同步、合规要求严格的金融/电商数据库架构,以及GTID模式下对report_port与本地回环通信的精准适配。本文聚焦反向动态端口转发(-R)、syst

weixin_30698527的博客 423

ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL

1、简介:大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用SSH隧道传输...

weixin_42129412的博客 789

ssh命令

OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH 是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击。此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本。 SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最

bugouyonggan的专栏 1500

ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL服务器

1、简介:大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用SSH隧道传输...

weixin_42168555的博客 883

mysql 复制查询结果_将mysql查询结果转换为CSV(带复制/粘贴)

我经常在命令行mysql中工作。常见的需要是获取查询结果并将其导入数字文档(类似于Excel文档)。最快的方法是什么?方法1:选择"进入外翻"您可以直接从MySQL选择一个输出文件,但这需要几个步骤。使用所有必要的参数导出查询,使其成为csv格式,如FIELDS OPTIONALY ENCLOSED BY和DELIMITED BY。sftp进入服务器并获取文件从服务器中删除文件方法2:复制/粘贴我...

weixin_30467625的博客 661

利用SSH隧道方式连接远程MySQL服务器

1、简介:      大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用

^蓦じ☆ve然^ 9123

25个最佳SSH命令

任何一个系统管理员或站长对SSH都不会陌生,这个伟大的技术免去了我们跑去机房管理服务器,或者在远程连接服务器时时刻担心内容被窃取的心惊胆战。本文将为大家介绍25个最佳的SSH命令,如果您还没用过,那么有必要将它们记录一下。 OpenSSH是SSH连接工具的免费版本。telnet、rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有

智障 1万+
上一篇: 项目管理之 CVS & SVN 总结
下一篇: 为什么开发人员不能估算时间?
Snoopy7713
博客等级 码龄21年 17粉丝 681原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值