0

我有这个 .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`

......但它不起作用!怎么了?

PS 我使用 Crontab 每 x 分钟运行一次 .sh,这仅适用于优化

4

2 回答 2

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 脚本都不必单独更新。

于 2017-03-14T19:27:44.717 回答
1

你也可以

#!/bin/sh 
echo "truncate table this_table" | mysql -u'user' -p'pwd' -D'db'
于 2013-09-17T08:27:33.720 回答