본문 바로가기
I T/Linux

mysql: [Warning] Using a password on the command line interface can be insecure.

by 루솨 2019. 11. 5.

MYSQL 5.7 이상은 쉘 에서 mysql 계정의 패스워드의 자동화를 진행 하면 

 

mysql: [Warning] Using a password on the command line interface can be insecure.

 

문구로 경고문을 나타내고 있습니다.

 

진행은 되나 경고문은 뜨는 형식이죠.

 

향후 패치시 아예 진행도 안될수도 있기 때문에 

 

mysql-login-path 를 이용하시는게 좋습니다.

 

슈퍼유저 프롬프트 상태에서 

 

mysql -V   으로 버전 확인 해주고.

 

[root@localhost]# mysql -V
mysql  Ver 14.14 Distrib 5.7.9, for Linux (x86_64) using  EditLine wrapper

 

 

mysql_config_editor set 이라는 명령어를 통해서 mysql 계정 암호 정보를 저장 시킵니다.

해당 저장 되는 장소는 찾아보진 않았으나 검색 해보니 암호화 시켜서 저장 시킨다고 하네요.

 

 

mysql_config_editor set --login-path=[명칭] --host=[HOST] --user=[USER] --port=[PORT] --password

 

#mysql_config_editor set --login-path=service --host=localhost --user=service --port=3306 --password

# [ 비밀번호 입력 ] 

 

 

셋팅 해논 service 정보를 조회 하는 방법 입니다. 아래와 같이 password 부분은 가려져서 나옵니다.

 

mysql_config_editor print --login-path=service

 

[root@localhost]# mysql_config_editor print --login-path=service
[service]
user = service 
password = *****
host = localhost
port = 3306

 

 

설정 해논 service의 service계정으로 이제 사용 해볼게요.

 

쉘스크립트로 원하는 테이블 정보를 조회를 자주 하게 되는데요.

 

아래와 같이 TRAFFIC의 테이블의  처리해서 쓰니 경고문도 안나오고 잘 되네요.

 

select 구문의 ip 와 password 부분은 xxx 처리 했습니다.. ㅜ 

 

 

####################################################################

#!/bin/bash

QUERY1="/usr/local/mysql/bin/mysql -f -uroot -p[XXX] -hlocalhost -Dservice";
QUERY2="/usr/local/mysql/bin/mysql --login-path=service -Dservice";

echo "select * from TRAFFIC where ymd='20191103' and ip='xxx.xxx.xxx.xxx';" | ${QUERY1}

echo "select * from TRAFFIC where ymd='20191103' and ip='xxx.xxx.xxx.xxx';" | ${QUERY2} 

#####################################################################

 

 

QUERY1 라는 변수로 진행하면 [warning] 경고문은 뜨지만 진행은 되고.

QUERY2 라는 변수로 login-path 를 이용하여 진행하면 경고문 자체도 뜨지 않습니다.

 

아래는 위 스크립트로 진행 하였을때의 결과 스샷 입니다.

 

 

간단한 설정으로 경고문을 없애 봅시다~~