有没有办法从mysqldump命令限制某些表?
例如,我使用以下语法只转储table1和table2:
mysqldump -u username -p database table1 table2 > database.sql
Run Code Online (Sandbox Code Playgroud)
但是有没有类似的方法来转储除 table1和table2 之外的所有表?我还没有在mysqldump文档中找到任何内容,那么brute-force(指定所有表名)是唯一的方法吗?
我可以在批处理文件的末尾放置什么命令来防止在执行文件后自动关闭控制台?
在Bash中,测试数组是否包含某个值的最简单方法是什么?
编辑:在答案和评论的帮助下,经过一些测试后,我想出了这个:
function contains() {
local n=$#
local value=${!n}
for ((i=1;i < $#;i++)) {
if [ "${!i}" == "${value}" ]; then
echo "y"
return 0
fi
}
echo "n"
return 1
}
A=("one" "two" "three four")
if [ $(contains "${A[@]}" "one") == "y" ]; then
echo "contains one"
fi
if [ $(contains "${A[@]}" "three") == "y" ]; then
echo "contains three"
fi
Run Code Online (Sandbox Code Playgroud)
我不确定它是否是最佳解决方案,但似乎有效.
我写了一个脚本来备份我的MySQL数据库:
mysqldump --opt --all-databases -u user -pmypassword > myDump.sql
Run Code Online (Sandbox Code Playgroud)
cron每晚都会启动它并将结果scp到另一台服务器.
mypassword在我的脚本中清晰显示,每个人都可以使用适当的权限查看它.我也被告知/ proc问题(可以看到cmd运行的地方).
MySQL文档说:
在命令行上指定密码应该被认为是不安全的.请参见第7.6节"保持密码安全".
我没有在任何地方找到这个神奇的7.6节.
处理自动mysqldump和密码安全性的好习惯是什么?
令我惊讶的是,我在1小时后找不到答案.我想将一个数组传递给我的脚本,如下所示:
test.sh argument1 array argument2
Run Code Online (Sandbox Code Playgroud)
我不想把它放在另一个bash脚本中,如下所示:
array=(a b c)
for i in "${array[@]}"
do
test.sh argument1 $i argument2
done
Run Code Online (Sandbox Code Playgroud) 如何使用mysqldump单独转储每个mysql表?
背景:我想用git跟踪那些转储并使用预提交钩子
示例:我有一个包含10个表的模式(table1 - table10).现在我想要每个表一个文件:table1.sql table2.sql ...
那怎么会这样呢?
为什么stackoverflow不喜欢我的问题?