如何通过电子邮件发送 mysql 命令的输出
how to email the output of a mysql command
我想通过电子邮件发送 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
你遇到了什么错误?
我不确定 INTO OUTFILE 是如何工作的,但 99% 它需要对您告诉它要写入的文件的写入权限。在您的查询中,输出文件就在根 (/) 分区中。我怀疑用户 mysql 是 运行 允许在那里写的。如果您使用的是 *nix box,请在您的家中创建一个文件
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
我想通过电子邮件发送 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
你遇到了什么错误?
我不确定 INTO OUTFILE 是如何工作的,但 99% 它需要对您告诉它要写入的文件的写入权限。在您的查询中,输出文件就在根 (/) 分区中。我怀疑用户 mysql 是 运行 允许在那里写的。如果您使用的是 *nix box,请在您的家中创建一个文件
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