我想通过电子邮件发送MySQL命令的输出,我编写了以下脚本,但它不起作用,我哪里出错了?
mysql --user=me --password=00045344534 john_e56
SELECT table_schema,table_name,update_time
FROM information_schema.tables
WHERE update_time > (NOW() - INTERVAL 5 MINUTE);
INTO OUTFILE '/mysqlchanges.txt'
exit
mutt -s "mysql changes" me123@mail.com -a /mysqlchanges.txt < /mail.txt
答案 0 :(得分:0)
你得到什么错误?
我不确定INTO OUTFILE是如何工作的,但是99%它需要对您要写入的文件进行写访问。在您的查询中,输出文件位于根(/)分区中。我怀疑用户mysql是从允许写入那里运行的。如果你在* nix框中,请在家中创建一个文件
touch /home/ubuntu/mysqlchanges.txt
sudo chown mysql:mysql /home/ubuntu/mysqlchanges.txt
首先在你的shell中。然后测试你可以做
su mysql
echo "" > /home/ubuntu/mysqlchanges.txt
如果没有错误,你可以修改你的查询输出到这个文件,然后mutt将该文件作为附件:
mysql --user=me --password=00045344534 john_e56
SELECT table_schema,table_name,update_time
FROM information_schema.tables
WHERE update_time > (NOW() - INTERVAL 5 MINUTE);
INTO OUTFILE '/home/ubuntu/mysqlchanges.txt'
exit
mutt -s "mysql changes" me123@mail.com -a /home/ubuntu/mysqlchanges.txt < /mail.txt
假设ubuntu
是您的用户,而mysql代表mysql
用户运行。
<强>更新强>
如果我理解您的请求是正确的,您只需要接收此SQL查询的输出:
SELECT table_schema,table_name,update_time
FROM information_schema.tables
WHERE update_time > (NOW() - INTERVAL 5 MINUTE);
到您的邮箱me123@mail.com
如果将它作为附件并不是至关重要的,只需要正文中的纯文本就可以了,那么请看一下这个bash命令:
mysql -u me -p00045344534 -e 'SELECT table_schema,table_name,update_time FROM information_schema.tables WHERE update_time > (NOW() - INTERVAL 5 MINUTE);' | mutt -s "mysql changes" me123@mail.com --
首先启动该查询并输出到STDOUT
,然后将其传递给mutt