我有这个.sh脚本来优化表
#!/bin/sh
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/optimize.sql
...和optimize.sql中的这个sql
OPTIMIZE TABLE `this_table`
一切正常。
现在我正在做同样的事情来截断一个表:
#!/bin/sh
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/truncate.sql
...和truncate.sql中的这个sql
TRUNCATE TABLE `this_table`
......但它不起作用!有什么问题?
P.S。我使用Crontab每x分钟运行.sh,这仅适用于优化
答案 0 :(得分:2)
您还可以使用文件来存储mysql凭据,例如:
nano .my.cnf
并添加以下内容:
[mysql]
user=your_user
password=the_super_secret_password
然后在shell脚本中执行您的SQL语句,如下所示:
#!/bin/bash
`mysql --defaults-file=/path/to/.my.cnf -e "truncate table this_table;"`
为什么要将凭据放在单独的文件中? 因此,在更改密码时,不必单独更新所有使用这些凭据的shell脚本。
答案 1 :(得分:1)
你也可以
#!/bin/sh
echo "truncate table this_table" | mysql -u'user' -p'pwd' -D'db'