当从Linux(CentOS 7)终端运行下面的MySQL代码时,下面的命令似乎要求输入循环中每个表的密码。有500多个表。输入密码500次以上对我来说是不合理的。我该如何修复下面的代码,使它只要求输入密码几次?
mysql -u root -p -Nse 'show tables' DATABASE_NAME | while read table; do mysql -u root -p -e "SET FOREIGN_KEY_CHECKS = 0; truncate table $table" DATABASE_NAME; done;
编辑
有没有办法做到这一点,而不必把密码在命令行日志?
2条答案
按热度按时间ngynwnxp1#
把密码放在p后面(没有空格),说你的密码是PASSWORD
slsn1g292#
考虑重新编写此语句,使其只使用两个数据库会话。一个会话生成要执行的语句列表并写入文件,第二个(单个)会话处理这些语句。第一个查询会话可能会出错,因此我会小心地将它们分成两个任务。
在第一个会话中,取消格式设置,并将标准输出重定向到文件
请验证文件是否包含所需内容。
然后(cat的另一个无用用法)将该文件的内容通过管道导入mysql