在 shell 脚本中禁止来自 MySQL 的警告消息,但允许错误

在 shell 脚本中禁止来自 MySQL 的警告消息,但允许错误

当使用一些底层 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

相关内容