Last Updated on 1월 24, 2024 by Jade(정현호)
기존의 패스워드 저장 방법
MySQL 버전 5.6 부터 보안 문제로 인해 shell script나 mysqldump시 패스워드가 같이 기록되어 있을 때 패스워드 노출 경고가 발생되게 됩니다.
Warning: using a password on the command line interface can be insecure.
이전 까지는 이러한 부분을 ~/.my.cnf (숨김파일) 을 만들어서 chmod 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(부하생성) 및 성능 측정 툴로 자세한 내용은 아래 글을 참조하시면 됩니다
관련된 다른 글

Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io

진짜 내용 정리가 너무 잘되어 있어서
깜짝 놀라고 이런 정보를 공유해 주셔서 두번 놀랐습니다
저같이 초보자도 따라 갈수 있게 해주셔서
감사합니다 행복하세요
안녕하세요
도움이 되셨다니 다행입니다.
코멘트 주셔서 감사합니다.
좋은 하루 되세요