欢迎来到 海口市某某海绵制品运营部
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
mysqldump导出数据库,使用expect自动输入密码
  来源:海口市某某海绵制品运营部  更新时间:2024-05-03 20:01:57

mysqldump导出数据库,使用expect自动输入密码

mysqldump相信好多朋友,出数都用过了 ,据库用来导出mysql数据的使用输入 ,导出数据,自动so easy...哈哈。密码

不过 ,出数今天我就真的据库遇到问题了 ,或者是使用输入我的姿势不正确吧。无奈之下 ,自动只能用别的密码办法来解决了。

先说下我遇到的出数问题 ,mysqldump嘛,据库不就是使用输入如下这样使用吗 :

mysqldump -uxxx -pyyy --databases aaa > /tmp/1.sqln用户名:xxxn密码:yyyn要导出的数据库 :aaa

对的 ,平时我也是自动这样用的 ,可今天真的密码不行,一直报 :

root@5e4d85af1606:/# mysqldump: [Warning] Using a password on the command line interface can be insecure.nUsage: mysqldump [OPTIONS] database [tables]nOR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]nOR mysqldump [OPTIONS] --all-databases [OPTIONS]nFor more options, use mysqldump --help

它就是卡在这里 ,不让往下走了,意思是告诉你 ,不要把密码放在命令行上 。百度找了好久,好多网友说在my.cnf里[client]或[mysqldump]块加user=xxxx password=xxxxx就行了 。试过了,还是不行。我就不深究了,于是想别的办法  。

记得好久以前 ,有个expect命令,是可以帮助自动输入密码的,那就试试呗 。

于是就写个脚本来执行,例如脚本名叫back_db.sh吧

#!/bin/bashn# 日期时间ndate=`date '+%Y%m%d'`necho $datenmkdir -p /data/backup/$datenn# 备分数据库n/usr/bin/expect<<EOFnset timeout 5nspawn mysqldump -uroot -p -h 10.0.8.7 --databases hello_test --opt -R > /tmp/1.sqlnexpect "*password*" { send "123#@!r"}nexpect eofnEOFnnecho "done!"nexit 0

脚本的大意是把数据导出 ,把它放在/tmp/1.sql文件里。

expect的send命令里面的字符串记得加上nr哦,它不会自动输入回车的。至此,自以为一切ok了 ,哈哈。 。  。好了  ,有报错:

--n-- Dumping routines for database 'hello_test'n--nmysqldump: Got error: 1049: Unknown database '>' when selecting the databasen[root@VM-8-7-centos script]#

好吧,spawn不让> 符号追加到某文件 ,注意这个过程啊 ,控制台一直有mysqldump命令导出的所有输出内容的 ,这就很不爽了呢 !

既然有报错,那就不加>重定向咯 ,只能这样了。

于是expect的spawn部分就成了如下这样:

spawn mysqldump -uroot -p -h 10.0.8.7 --databases hello_test --opt -R

去掉了重定向那部分 。

问题来了 ,它不能重定向 ,那怎么把输出的内容保存到文件里去呢 ?好吧,把expect部分写成另一个脚本文件,在第一个脚本文件里调用它,然后> 重定向到文件里即可,那就这样做吧 。

expect_db.sh脚本如下  :

#!/usr/bin/expectnset timeout 5nspawn mysqldump -uroot -p -h 10.0.8.7 --databases hello_test --opt -Rnexpect "*password*" { send "123#@!r"}ninteract

然后 ,在第一个脚本(back_db.sh)里调用它:

#!/bin/bashn# 日期时间ndate=`date '+%Y%m%d'`necho $datenmkdir -p /data/backup/$daten# 备分数据库n/data/script/expect_db.sh > /data/backup/$date/1.sql necho "done!"nexit 0

去目标目录 ,成功生成1.sql文件里,打开看一下:

spawn mysqldump -uroot -p -h 10.0.8.7 --databases hello_test --opt -RnEnter password:n-- MySQL dump 10.13 Distrib 5.7.36, for Linux (x86_64)n--n-- Host: 10.0.8.7 Database: hello_testn-- ------------------------------------------------------n-- Server version 8.0.27nn/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;n/*!40101 SET NAMES utf8 */;n/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;n/*!40103 SET TIME_ZONE='+00:00' */;n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;n/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;nn--n-- Current Database: `hello_test`n

我去 ,文件开头部分居然有spawn命令的内容 ,这不爽啊 !!于是 ,再改造下expect_db.sh脚本 :

#!/usr/bin/expectn# 关闭outputnlog_user 0nset timeout 5nspawn mysqldump -uroot -p -h 10.0.8.7 --databases hello_test --opt -R nexpect "*password*" { send "123#@!r"}n# 打开outputnlog_user 1ninteract

注意脚本里的log_user部分 ,其实就是在哪里关闭output,在哪里打开output的意思

我在这里找到的 :http://www.metashock.de/2013/07/safely-pass-mysql-credentials-to-mysqldump-in-a-script/

好了,至此 ,完美搞定导出,这个脚本是给定时任务crontab用的。

希望对网友有用,3Q


友情链接战地:叛逆连队2 免安装简体中文版下载多买多送道具解析,记得你喜欢的天空套吗精品应用推荐博弈论——策略式博弈5ios变态版游戏盒子哪个好 2023十大ios变态版游戏盒子排行榜《DNF》100级阿修罗搬砖技能加点攻略人格分裂三相宝珠探索!次元雷达启动炉石传说招募猎卡组 6月新环境上分卡组推荐安全常识皎月女神天赋2023-新版本s13皎月中单出装热门免费手机单机游戏大全 好玩的单机游戏推荐2023虚空龙鳞,魔兽世界龙鳞哪里拔 加什么能力白嫖的炫彩能领了,B站有活动给永久皮肤S4赏金猎人下路心得分享 备受尊敬的莎拉攻略LOL电信一区叫什么?dnf无法使用未净化的装备,解密DF:无法使用未净化的装备之谜《梦幻西游》5开怎么做胡姬琵琶行副本最后一环,梦幻西游5开怎么做胡姬琵琶行副本最后一环h小游戏有什么(不正经游戏推荐)其乐早报:VNN: Valve的下一款游戏可能是PC与VR间的跨平台对抗游戏;CSGO新大行动开启【光遇】7.28每日任务(磕头小啾啾)(1)雨林跪拜磕头先祖(2)秘密花园冥想(3)点20蜡烛(4)好友招手现世符咒召唤阵 ,它结合了“现世”、“符咒”和“召唤阵”三个关键词。这个标题暗示着一种神秘的力量,可以改变现实世界中的事物和事件。《原神》钓鱼鱼饵的制作方法和配方一览《LOL》全至臻皮肤汇总《仙剑奇侠传5》存档修改器V3.0炉石传说:战士的六种形态,总有一款适合你《王者荣耀》s9赛季黄忠最强出装铭文汇总 S9赛季黄忠出装推荐管理班级的方法《魔兽世界》怀旧服宠物技能介绍猎人宝宝技能大全(猎人宝宝技能大全带图)羊了个羊游戏全关卡通关攻略汇总翅膀幼女哪里多 (翅膀幼女获取方法)【原创】AIGC之ChatGPT的应用LOL4月16日更新后进不去游戏界面问题解决方法免费手机游戏排行榜前十名 不花钱也好玩的游戏推荐王者荣耀张良天堂福音皮肤如何获取 张良天堂福音皮肤有没有特效无敌飓风寒冰 你不知道的寒冰玩法解析练新职业的必需品 教你自制DNF圣物装备换装全职考公三年未果,现在压力大到爆棚,能不能说说你的看法?CF10月武器重生
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.448

Copyright © 2024 Powered by 海口市某某海绵制品运营部   sitemap