当使用一些底层 MySQL 命令运行 shell 脚本时,我的日志文件被转储并显示以下消息。
这是消息:
“警告:在命令行界面上使用密码可能不安全。”
为了停止这些消息,我使用以下作业定义。
例子:
run_wrapper.sh |grep -v "Warning: Using a password" > output.log 2>&1
这有效,但 MySQL 错误没有被记录到output.log
.
如果我像下面这样更改定义,那么 MySQL 错误就会开始出现(如果有)
run_wrapper.sh > output.log 2>&1
所以问题是如何仅使用 cron 定义来抑制警告消息并在日志文件中报告 SQL 错误?
答案1
在 bash 脚本中,在顶部编辑它
export MYSQL_PWD=yourdbpassword
和 mysql 查询如下:mysql -u username -h host db -e "statement"
参考:来自发布于的答案堆栈溢出。也可以遵循其他答案。
答案2
在包装器中搜索类似于以下内容的行
mysql -u<username> -p<some_password> -hlocalhost -D<database_name>
并更改为
export MYSQL_PWD=<some_password> ; mysql -u<username> -hlocalhost -D<database_name>
这解决了警告的来源。
答案3
看来你错过了标准错误从自身重定向run_wrapper.sh
,因此错误不会通过grep
并到达日志文件。
如果您很高兴两者兼而有之,请尝试此操作标准输出和特殊错误写入您的日志文件
run_wrapper.sh 2>&1 | grep -v "Warning: Using a password" > output.log
或者,如果您只想将错误写入日志文件,并且标准输出离开写入呼叫终端,试试这个
( run_wrapper.sh 2>&1 1>&3 | grep -v "Warning: Using a password" > output.log ) 3>&1
答案4
尝试将其添加到命令末尾:
/dev/null 2>&1