/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 -h192.167.93.44 -P32083 --single-transaction --set-gtid-purged=OFF --databases mohwscdrdb mohwsecsdb moresourcelifecycledb moorderdb movdcservicedb > ./backup.sql 2>&1 | grep -v "Warning"
这按照我的想法运行,没有 “警告:使用密码..” blablabla.
但是当我执行时:
/opt/mysql/bin/mysql -udbuser -pAdmin@123 -h192.167.93.44 -P32083 < ./backup.sql 2>&1 | grep -v "Warning"
为了在没有警告的情况下获取sql文件,它失败了,说:
/' at line 1
我认为这是因为我在一行中有两个不同的重定向方向(
<
和>
),但如何解决这个问题?
2>&1
将两个文件描述符联系在一起。您只想在 stderr 上进行 grep,因此通过使用“|&”,只有 stderr 会转到 grep。
关于倾销:
/opt/mysql/bin/mysqldump ... movdcservicedb > ./backup.sql |& grep -v "Warning"
/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 **> ./backup.sql** 2>&1 | grep -v "Warning"
更改顺序,将重定向部分移至命令末尾即可完成。
/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 2>&1 | grep -v "Warning" **> ./backup.sql**
顺便说一句,导入sql应该将
< ./backup.sql
保留在命令中间。
/opt/mysql/bin/mysql -udbuser -pAdmin@123 < ./backup.sql 2>&1 | grep -v "Warning"
有人请检查这是否适用于他们,因为它适用于我的导出(因此完全减轻了删除转储文件本身中的警告的需要):
mysqldump -ppassword123 dbname 1> ./backup.sql
这输出到终端:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
然后将转储保存到./backup.sql
这太简单了,我现在都怀疑自己了:/