Linux 备份MySQL数据库的Bash脚本
我写了一个脚本,我不断得到以下错误。尝试连接时拒绝用户“zul@”localhost(使用密码:是)的访问 项目:43:[d:未找到 项目:43:[d:未找到 它没有读取输入数据,也没有连接到MySQL。有什么想法吗 这是我的剧本:Linux 备份MySQL数据库的Bash脚本,linux,bash,shell,Linux,Bash,Shell,我写了一个脚本,我不断得到以下错误。尝试连接时拒绝用户“zul@”localhost(使用密码:是)的访问 项目:43:[d:未找到 项目:43:[d:未找到 它没有读取输入数据,也没有连接到MySQL。有什么想法吗 这是我的剧本: #!/bin/bash tstamp=$(date +$s) #Dump or Update if [ -z "$1" ]; then echo -n "What do you want to do? [D]ump or [U]pdate: " rea
#!/bin/bash
tstamp=$(date +$s)
#Dump or Update
if [ -z "$1" ]; then
echo -n "What do you want to do? [D]ump or [U]pdate: "
read parm
else
parm=$1
fi
#Database Name
if [ -z "$2" ]; then
echo -n "What database are you using?"
read dbname
else
dbname=$2
fi
#Database User
if [ -z "$3" ]; then
echo -n "What database user are you using?"
read dbuser
else
dbuser=$3
fi
#Database Password
if [ -z "$4" ]; then
echo -n "What password are you using?"
read dbpass
else
dbpass=$4
fi
#Checks if the directory exists
if test ! -d "/home/zul/sql/backup"; then
mkdir /home/zul/sql
mkdir /home/zul/sql/backup
fi
mysqldump $dbuser -p$dbpass $dbname > /home/zul/sql/backup/$tstamp.$dbname.sql
if [$parm = d ]; then
mysqldump $dbuser -p$dbpass $dbname > /home/zul/sql/backup/$dbname.sql
elif [$parm = u ]; then
mysqldump $dbuser -p$dbpass $dbname < /home/zul/sql/backup/$dbname.sql
else
echo " d or u option only! (lower case)"
fi
!/bin/bash
tstamp=$(日期+s)
#转储或更新
如果[-z“$1”];则
echo-n“您想做什么?[D]ump或[U]pdate:”
阅读帕尔姆
其他的
每平方米=1美元
fi
#数据库名称
如果[-z“$2”];则
echo-n“您使用的是什么数据库?”
读取数据库名
其他的
dbname=$2
fi
#数据库用户
如果[-z“$3”];则
echo-n“您正在使用哪个数据库用户?”
读取数据库用户
其他的
dbuser=$3
fi
#数据库密码
如果[-z“$4”];则
echo-n“您使用的密码是什么?”
读取dbpass
其他的
dbpass=$4
fi
#检查目录是否存在
如果测试!-d“/home/zul/sql/backup”,则
mkdir/home/zul/sql
mkdir/home/zul/sql/backup
fi
mysqldump$dbuser-p$dbpass$dbname>/home/zul/sql/backup/$tstamp.$dbname.sql
如果[$parm=d];则
mysqldump$dbuser-p$dbpass$dbname>/home/zul/sql/backup/$dbname.sql
elif[$parm=u];然后
mysqldump$dbuser-p$dbpass$dbname
我猜if-else测试中缺少一个空格:应该是
[test]
而不是[test]
if [ $parm = d ]; then
mysqldump $dbuser -p$dbpass $dbname > /home/zul/sql/backup/$dbname.sql
elif [ $parm = u ]; then
mysqldump $dbuser -p$dbpass $dbname < /home/zul/sql/backup/$dbname.sql
else
如果[$parm=d];那么
mysqldump$dbuser-p$dbpass$dbname>/home/zul/sql/backup/$dbname.sql
elif[$parm=u];然后
mysqldump$dbuser-p$dbpass$dbname
必须用空格将“[”与其参数分开:
if [ $parm = d ]; then
mysqldump $dbuser -p$dbpass $dbname > /home/zul/sql/backup/$dbname.sql
elif [ $parm = u ]; then
这是因为它被解析为
[test
是一个命令([d:notfound
-意思是没有名为[d
)的命令)谢谢,成功了。你知道为什么用户“zul”@“localhost”的访问被拒绝了吗?我输入了正确的密码,但仍然出现了错误。zul不允许从localhost进行连接。@KD:在你编写的脚本中没有设置$dbpass
的代码posted@KD:你的脚本看起来没有问题。这不是本质上的问题吗只是构造一个命令行来调用mysqldump?我怀疑这样一个脚本的有用性。至少对我来说,这听起来像是又一件需要维护但没有多大好处的事情。你是否尝试使用bash-vx
你的脚本运行?这很有帮助,会让你发现你的bug