关于linux上root连接mysql时遇到的一点小问题以及rsync通过ssh的文件同步传输以及免密码传输的实现
一、关于linux上root连接mysql时遇到的一点小问题
今天因为工作需要,需要使用root连接一下很久没有连接过的mysql服务器了,一看找不到root密码了,记得当时我在搭建整个mysql主从的时候,我明明把root密码记录在了txt文件上的,不知道怎么回事这个文件上的那行账号密码不见了。是不是就没有撤了呢?root密码是可以重置的,可以使用以下命令进行密码重置:
#sudo /etc/init.d/mysql stop
#sudo /opt/modules/mysql/bin/mysqld_safe –skip-grant-tables &
#sudo mysql -uroot -p
mysql>update mysql.user set password=password('111111') where user=’root’;
mysql>flush privileges;
当然我这里不需要考虑重置,因为我很清楚记录我当时把这个root密码发给过团队成员,于是找到邮箱发送记录找到了这个root密码,事情好像完了,可以使用这个密码一登录发现登录不上:
[online@OSER13 ~]$ sudo mysql -u root -h 192.168.162.16 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'192.168.162.16' (using password: YES)
纳闷了,这个密码是绝对没有问题的,除非只有一种情况,那就是团队同事修改了密码,但这我相信是不可能的!但眼前的现实又让我不得不怀疑,于是我开始进行了其它的尝试
[online@OSER13 ~]$ sudo mysql -h 127.0.0.1 -u root -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
竟然找不到127.0.0.1的MySQL server,可以查看配置文件/etc/my.cnf里确实有看到配置:
datadir = /opt/data/mysql
bind-address=127.0.0.1
bind-address=192.168.162.16
通过netstat查看端口发现也确实没有看到127.0.0.1上的3306在监听:
[onlinedev@BFG-OSER-4414 ~]$ netstat -anp | grep 3306
(No info could be read for "-p": geteuid()=30548 but you should be root.)
tcp 0 0 192.168.162.16:3306 0.0.0.0:* LISTEN -
.....
于是我又找了一下bind-address配置的事情,因为我原来在配置的时候看到网上有说mysql可以绑定多个IP,换行写bind-address即可.但从这里来看,这个并没有起作用。看到mysql的bind-address是不允许配置多个IP的,mysql官方明确指出bind-adress只允许制定一个参数。这样来看bind-address的配置算是被验证了,上面这行bind-address=127.0.0.1也是白写了。回到mysql的连接上来,现在mysql怎么连接呢?127.0.0.1根本没有服务,192.168.162.16从现在来看问题就是没有配置这个root/host的密码。所以现在只能通过localhost连接了,
[onlinedev@BFG-OSER-4413 ~]$ sudo mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.33
Connection: Localhost via UNIX socket
可以看到通过localhost终于连接进来,我还以为真有人在搞坏事把root密码改了呢,进入到mysql里查看一下账号,发现确实root没有配置host为192.168.162.16的密码,导致进入不了。
mysql> select user,host,password from user;
+----------+---------------+-------------------------------------------+
| user | host | password |
+----------+---------------+-------------------------------------------+
| root | localhost | *4...5 |
| root | 127.0.0.1 | *4...5 |
......
+----------+---------------+-------------------------------------------+
5 rows in set (0.00 sec)
另外查了一下mysql -h localhost和mysql -h 127.0.0.1的区别,通过localhost连接到mysql是使用UNIX socket,而通过127.0.0.1连接到mysql是使用TCP/IP。上面的Connection项里可以看到值为Localhost via UNIX socket,而如果是通过127.0.0.1进来Connection的值为127.0.0.1 via TCP/IP。
二、rsync通过ssh的文件同步传输以及免密码传输的实现
通常rsync有两种传输方案,一种是rsync-daemon方式,也就是在目标机器上安装rsync服务端,设置账号密码及传输目录,然后客户端使用rsync及账号密码传输即可。此时的密码是写在密码文件里(其它用户不可访问),详见:Shell脚本中应用 Rsync 保持两服务器间文件几秒内同步 及 rsync实现服务器间文件同步的正确用法_shell rsync-CSDN博客
另一种方式为ssh,有时使用ssh更方便。比如:
#从远程同步到本地:
[root@123 ~]# rsync -avzP -e ssh 114.215.80.214:/root/c.txt ./
root@114.215.80.214's password:
receiving incremental file list
c.txt63691 100% 60.74MB/s 0:00:00 (xfer#1, to-check=0/1)sent 30 bytes received 14341 bytes 2210.92 bytes/sec
total size is 63691 speedup is 4.43
#从本地同步到远程:
[root@123 ~]# rsync -avz -e ssh ./num.php 114.215.80.214:/root/
root@114.215.80.214's password:
sending incremental file list
num.phpsent 150 bytes received 31 bytes 8.42 bytes/sec
total size is 105 speedup is 0.58
#指定ssh的端口传输
[root@123 ~]# rsync -avz -e 'ssh -p 20000' ./num.php 114.215.80.214:/root/
rsync的-a选项很好用,且功能非常强大,一般传文件有-avz选项就够了,如果要传递目录,加上-r选项,保持软链接加上-l选项,加上大写的P选项保留那些因故没有完全传输的文件,以加快随后的再次传输。另外在使用ssh时候,默认用的是ssh的22端口,如果服务器的ssh不是22端口的话,则需要加选项-p指定端口。如上面的指定ssh的端口传输示例。rsync的更多参数见:关于linux下grep --color自定义高亮颜色的处理以及基于ssh的rsync服务器间文件同步功能及与基于rsync服务端的区别-CSDN博客
但在上面的执行过程中有一个麻烦就是要每次输入密码,在终端上命令执行时还能行,但是如果是放在脚本或者是定时任务里执行的话可就不行了。这时也是有办法的:
办法1:通过rsync的一个参数--password-file=FILE
--password-file=FILE 可以让rsync从FILE文件中得到密码字符串从而实现。但是这会有安全问题,就相当于暴露了目标服务器的密码。
方法2:通过ssh公钥的方式
在本机(执行rsync命令的机器)生成一个ssh公钥,然后将内容存放在远程机器上。先在要执行的rsync机器上查看id_rsa.pub文件是否存在,然后利用ssh-keygen生成此文件,将内容传到目标机器上存放在/用户/.ssh/下并更名为authorized_keys,当然如果这个authorized_keys文件存在,则可以追加到这个文件的后面。
#密钥验证的实现:
[root@iZ282iltjiwZ ~]# ll /root/.ssh/id_rsa.pub
ls: cannot access /root/.ssh/id_rsa.pub: No such file or directory
#也可以使用ssh-keygen -t rsa
[root@iZ282iltjiwZ ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f4:a2:2d:59:7e:b5:a3:d1:f0:7a:67:92:d2:9e:09:7d root@iZ282iltjiwZ
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| . . |
| S o . |
| * . * . |
| + o +.*.E |
| . ..===o |
| o+++ |
+-----------------+
[root@iZ282iltjiwZ ~]# ll /root/.ssh/id_rsa.pub
-rw-r--r-- 1 root root 399 Sep 21 10:41 /root/.ssh/id_rsa.pub
#完成将密钥文件放到目标服务器后再执行文件传输时会发现不会再提示密码输入了:
[root@123 ~]# rsync -avz -e ssh ./z.log 114.215.80.214:/root/
sending incremental file list
z.log
sent 1137 bytes received 37 bytes 782.67 bytes/sec
total size is 2507 speedup is 2.14
[root@123 ~]#
相关文章:

关于linux上root连接mysql时遇到的一点小问题以及rsync通过ssh的文件同步传输以及免密码传输的实现
一、关于linux上root连接mysql时遇到的一点小问题 今天因为工作需要,需要使用root连接一下很久没有连接过的mysql服务器了,一看找不到root密码了,记得当时我在搭建整个mysql主从的时候,我明明把root密码记录在了txt文件上的&#…...

一、Socket介绍(也叫套接字)
一、定义 通过IP地址或者端口 将两个电脑连接起来; Socket是网络通信最常用的,除了这个还有HTTP; Http是一个弱联网;Socket用于长连接,使用的是Tcp; 除了这个还有一个SuperSocket,是对Socket…...

虚拟现实技术的发展现状如何?
虚拟现实(VR)技术自2016年被广泛认为是元年之后,经历了快速增长和随后的调整期。目前,VR行业正处于快速发展期,技术不断进步,应用场景持续拓展。2024年VR技术发展现状概述: 1、行业发展阶段&am…...

实时美颜技术的实现:视频美颜SDK与直播美颜工具的最佳实践
视频美颜SDK与直播美颜工具的诞生,为主播美颜一需求提供了技术支撑。接下来,笔者将深入探讨实时美颜技术的实现及其在视频美颜SDK与直播美颜工具中的最佳实践。 一、实时美颜技术的核心原理 具体来说,主要包括以下几个步骤: 1.…...

Java中的司机抢单实现:并发问题与解决方案
文章目录 司机抢单的基础实现乐观锁解决并发问题 总结 在共享经济的浪潮中,像滴滴打车这样的服务已经成为我们生活中不可或缺的一部分。对于司机和平台来说,抢单是一个关键环节,如何在保证系统高效运行的同时,确保抢单过程的公平与…...

2、Unity【基础】Mono中的重要内容
Unity基础 MonoBehavior中的重要内容 文章目录 Mono中的重要内容1、延迟函数1、延迟函数概念2、延迟函数使用3、延迟函数受对象失活销毁影响思考1 利用延时函数实现计时器思考2 延时销毁 2、协同程序1、Unity是否支持多线程2、协同程序概念3、协同程序和线程的区别4、协程的使用…...

C++11:右值引用、移动语义和完美转发
目录 前言 1. 左值引用和右值引用 2. 引用范围 3. 左值引用的缺陷 4. 右值引用的作用 5. 右值引用的深入场景 6. 完美转发 总结 前言 C11作为一次重大的更新,引入了许多革命性的特性,其中之一便是右值引用和移动语义。本文将深入探讨其中引入的…...

【大模型部署及其应用 】RAG检索技术和生成模型的应用程序架构:RAG 使用 Meta AI 的 Llama 3
目录 RAG检索技术和生成模型的应用程序架构1. **基本概念**2. **工作原理**3. **RAG的优势**4. **常见应用场景**5. **RAG的挑战**6. **技术实现**参考RAG 使用 Meta AI 的 Llama 3亲自尝试运行主笔记本与文档应用聊天关键架构组件1. 自定义知识库2. 分块3. 嵌入模型4. 矢量数据…...

python 速成指南
第一节. 过程式 python python 的一个特点是不通过大括号 {} 来划定代码块,而是通过缩进。如果和 C/C++ 类比的话,就是在左括号的地方不要换行,然后用一个冒号 (:) 替代, C/C++ 大括号内部的东西,缩进一个 tab 或者几个空格都可以(但需要保持一致),比如: if (x <…...

多重示例详细说明Eureka原理实践
Eureka原理(Eureka Principle)是指在长时间的思考和积累之后,通过偶然的瞬间获得灵感或发现解决问题的方法的一种认知现象。这个过程通常包括三个主要阶段:准备阶段、潜伏期以及突然的灵感爆发。下面详细说明Eureka原理的实践步骤…...

Qt下让程序只运行一个实例,避免重复打开
参考 【实现QT单例程序 QSystemSemaphore QSharedMemory】 做了一点点更改,主要是在openEuler上用时遇到的一点问题。 QSharedMemory *unimem nullptr; void checkExist() {QString memName "SingleApp"; // 注意这名字要每个工程不一样,否…...

考研交流平台设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参…...

哈希表--有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输…...

GC终结标记 SuspendEE 是怎么回事
一:背景 1. 讲故事 写这篇是起源于训练营里有位朋友提到了一个问题,在 !t -special 输出中有一个 SuspendEE 字样,这个字样在 coreclr 中怎么弄的?输出如下: 0:000> !t -special ThreadCount: 3 UnstartedTh…...

Ubuntu 中GCC交叉编译工具链安装
Ubuntu 自带的 gcc 编译器是针对 X86 架构的,如果要编译的是 ARM 架构的代码,就需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架 构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是&#x…...

JEXL(Java Expression Language)用法概览
JEXL(Java Expression Language)是一个用于在Java应用程序中解析和执行表达式的库。JEXL的设计目的是通过提供一种类似于脚本语言的语法,使得可以在应用程序中动态地计算表达式的值。JEXL常用于模板引擎、规则引擎和配置文件等场景。 下面介…...

NC 完全二叉树结点数
系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一棵完全…...

点灯案例优化(二) 利用位运算修改特定位
前面,我们对点灯代码进行了第一次优化,效果如下 尽管第一次优化以后代码可读性确实高了不少,也看起来更加简洁,但是,这里仍旧存在一个很严重的问题:就在每一个表达式右边,我们给寄存器的数据赋值…...

【C++备忘录】
记录一些C比较好用的代码块,方便自个查看。 使用std::copy 快速打印序列 #include <iostream> #include <algorithm> #include <iterator>int main() {int a[5] { 1, 2, 3, 4, 5 };copy(begin(a), end(a), ostream_iterator<int>(cout, …...

java编程 斐波拉契数列算法集锦【斐波拉契数列】【下】【集合类】【Stream函数式编程】
斐波那契数列(Fibonacci sequence),又称黄金分割数列,是一个非常经典的递归问题。斐波那契数列的算法描述: 斐波那契数列,一个令人着迷而又充满神秘色彩的数字序列,它以0和1作为起始ÿ…...

智慧园区三维可视化平台
背景 随着物联网、人工智能等新一代信息技术的发展,数字孪生技术逐渐成为实现这一目标的关键工具。数字孪生技术能够对物理世界进行高精度、全要素的映射,并实时动态反映其变化情况,从而为园区提供精准的管理和服务。 方案简介 智慧园区数字…...

Redis 有序集合【实现排行榜】
使用 Redis 的 Sorted Set 数据结构可以非常高效地实现实时排行榜功能。Sorted Set 允许将元素按分数进行排序,同时支持插入、删除和查询操作,且这些操作的时间复杂度较低,非常适合处理高并发的场景。 实现思路 插入操作:当用户…...

ORACLE数据库管理系统介绍
1.ORACLE的特点: 可移植性 ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它…...

C# 中Linq探讨 Or条件拼接
在C#中,没有直接内置于.NET Core或.NET Framework中的NuGet包能够直接“拼接”LINQ的OR条件,因为LINQ本身设计为一种声明式编程模型,用于查询数据集合。然而,你可以通过一些方式来实现多个条件以OR逻辑组合的效果,而不…...

有关应用层面试题有关库的思维导体
面试题目: TCP通信中3次握手和四次挥手? 答: 第一次握手:客户端发送SYN包(SYN1, seq0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。第二次握手:服务器接收到S…...

记一次 SAP BP 编号范围错误引发的一个问题 GET_NRIV_LINE
本来想着循着错误提示去排查,但是还是想看看业务发生了什么,他们的操作是否有问题,不经意间发现 号码段是有问题的,由此大概可以判断是他们编号范围和类型之间的问题 角色和分组是否一致的,如果不一致就发生了以上错误…...

(17)ELK大型储存库的搭建
前言: els是大型数据储存体系,类似于一种分片式存储方式。elasticsearch有强大的查询功能,基于java开发的工具,结合logstash收集工具,收集数据。kibana图形化展示数据,可以很好在大量的消息中准确的找到符…...

每日一问:Kafka消息丢失与堆积问题分析(简化版)
Kafka 消息系统问题解析 在本篇博客中,我们将深入探讨 Kafka 中常见的两大问题:消息丢失和消息堆积。首先,我们将简要介绍 Kafka 的基本工作原理,随后分别分析消息丢失和堆积的原因,并提供针对性的解决方案。 关于其详…...

C语言中函数sizeof和strlen区别
sizeof和strlen是C语言中的两个常用函数,它们的作用和使用方式有所不同。 sizeof sizeof是一个运算符而非函数,用于计算数据类型或变量占用的字节数。它可以计算任意数据类型(包括基本类型、自定义结构体、数组等)的大小。例如&…...

RAG与LLM原理及实践(14)---- Python + MinIO + Kafka进阶
目录 背景 根因分析 配置 构造 创建 network 构造 zookeeper 构造 kafka 参数构造 原理解析 图解 全过程解析 工具使用 kafkacat 查看 broker python 实现 python send + kafka recv python 代码 kafka recv 运行效果 python recv + kafka send python 代…...