일부 낮은 수준의 MySQL 명령을 사용하여 쉘 스크립트를 실행할 때 내 로그 파일이 다음 메시지와 함께 덤프됩니다.
메시지는 다음과 같습니다.
"경고: 명령줄 인터페이스에서 비밀번호를 사용하는 것은 안전하지 않을 수 있습니다."
이러한 메시지를 중지하려면 다음 작업 정의를 사용합니다.
예:
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