Last Updated on 10월 16, 2020 by 태랑(정현호)
패스워드 정보를 unobfuscated format 형식으로 저장
mysql 5.6부터 보안 문제로 인해 shell script나 mysqldump시 패스워드가 같이 기록되어 있을때
패스워드 노출 경고가 발생되게 됩니다.
“Warning: using a password on the command line interface can be insecure. “
이전 까지는 이러한 부분을 ~/.my.cnf (숨김파일) 을 만들어서 chmo 600 로 조정 한뒤 파일안에
패스워드를 저장하여 사용하는 방식으로 사용하기도 했습니다.
touch ~/.my.cnf
chmod 600 ~/.my.cnf
vi ~/.my.cnf
[mysqldump]
user=databseuser12
password=otFRD?17*<8X0G
mysql 5.6 부터 --login-path 를 사용하여 접속 정보 (아이디,패스워드,접속주소,포트) 를 암호화 하여 저장 할 수 있습니다.
mysql_config_editor를 이용하면 되며 사용법은 아래와 같습니다.
생성 및 사용법
$ mysql_config_editor set --login-path=설정이름 --host=주소 --user=아이디 --port=포트 --password
Enter password: *****
예시)
mysql_config_editor set --login-path=dba --host=localhost --user=root --port=3306 --password
Enter password: *****
비밀번호에 특수문자가 들어가 있다면 프롬프트로 비밀번호를 입력 받어라도 "(따옴표) 를 붙여서 입력 해야 합니다
예시 : dbapassword!@# 일 경우 => Enter password: "dbapassword!@#"
생성하게 되면 접속정보는 수행한 유저의 Home directory root에 .mylogin.cnf 파일에 기록되게 됩니다.
login path 확인
특정 login path 확인
$ mysql_config_editor print --login-path=dba(생성한 path-login이름)
[myroot]
user = root
password = *****
host = localhost
port = 3306
설정된 전체 목록의 출력 아래와 같습니다.
mysql_config_editor print --all
login-path 삭제
mysql_config_editor remove --login-path=설정이름
ex) mysql_config_editor remove –login-path=dba
login-path 사용하여 접속
--login-path 구문은 여러곳에서 사용가능 합니다.
먼저 기본적으로 mysql 유틸리티에서 사용 가능 합니다.
[root]# mysql --login-path=설정이름
mysqldump 에서도 사용 가능하며
[root]# mysqldump --login-path=backupuser -v --databases db1 --quick --single-transaction ….(줄임)
지금 확인 해본 버전이 mysql 5.7.31 임에도 불구하고 여전히 --login-path 구문을 첫번째 인자로 사용하지 않으면 에러가 발생되는것을 확인 했습니다.
[root]# mysqldump -v --login-path=backupuser --databases db1
mysqldump: [ERROR] unknown variable 'login-path=prod'
위와 같이 --login-path 를 첫번째 인자가 아닐경우 unknown variable 현상이 있습니다.
관련 bug> https://bugs.mysql.com/bug.php?id=70856

bug.oracle.com 에서도 동일한 내용을 확인 할수 있습니다.
첫번째 인자로 넣고 사용하시면 됩니다.
percona xtrabackup 에서도 사용 가능 합니다 아래와 같이 --login-path 구문을 사용하시면 됩니다.
[root]# innobackupex --login-path=commit_db_bkpuser
mysqlslap 에서 사용 가능 합니다.
[root]# mysqlslap --login-path=dba --concurrency=200 --iterations=100 --auto-generate-sql --verbose
mysqlslap 은 DB Load(부하생성) 및 성능 측정 툴로 자세한 내용은 아래글을 참조 하시면 됩니다

Senior DBA(Mysql, Oracle) - 현재 위메프에서 많은 새로움을 경험중입니다
At WeMakePrice / Previous - Oracle Korea ACS Support / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io