6.1.2.1 비밀번호 보안에 대한 최종 사용자 지침
MySQL 사용자는 암호를 안전한 상태로하기 위해 다음 지침을 사용하는 것이 좋습니다.
클라이언트 프로그램을 실행하여 MySQL 서버에 연결하는 경우 다른 사용자의 검색에 의해 노출되는 방식으로 암호를 지정하는 것은 권장되지 않습니다. 클라이언트 프로그램을 실행할 때 암호를 지정하는 데 사용할 수있는 방법과 각 방법의 위험의 평가에 대해 다음 나열합니다. 간단히 말하면, 가장 안전한 방법은 클라이언트 프로그램이 암호를 묻는 프롬프트를 내도록하거나 적절하게 보호 된 옵션 파일에 암호를 지정하는 방법입니다.
mysql_config_editor 유틸리티를 사용합니다. 이것은
.mylogin.cnf
라는 암호화 된 로그인 파일에 인증 정보를 저장할 수 있습니다. 이 파일은 MySQL Server에 연결하기위한 인증 정보를 취득하기 위해 MySQL 클라이언트 프로그램에 의해 나중에 읽을 수 있습니다. 섹션 4.6.6 "mysql_config_editor - MySQL 구성 유틸리티" 를 참조하십시오.명령 행에서
-p
또는your_pass
--password=
옵션을 사용합니다. 예 :your_pass
shell>
mysql -u francis -pfrank
db_name
이것은 편리하지만 보안은 없습니다. 일부 시스템에서는 사용하고있는 비밀번호가 명령 행을 표시하기 위해 다른 사용자가 시작할 수 ps 등의 시스템 상태 프로그램에 의해 표시 할 수 있습니다. MySQL 클라이언트는 일반적으로 클라이언트 초기화 시퀀스 중에 명령 행 암호 인수를 제로로 덮어 씁니다. 그러나 아직 값이 표시되는 짧은 기간이 있습니다. 또한 일부 시스템에서는이 덮어 방법은 효과가없고, 암호 ps에서 볼 수있게 남아 있습니다. (SystemV Unix 시스템 및 아마 다른 시스템에서도이 문제의 영향이 있습니다.)
터미널 창의 제목 표시 줄에 현재의 명령을 표시하도록 운영 환경이 설치되어있는 경우 명령 창 컨텐츠 영역에서 스크롤 아웃되고 표시되지 않는 경우에도 명령이 실행중인 한 암호가 표시 된 상태로 유지됩니다.
명령 행에서 암호 값을 지정하지 않고
-p
또는--password
옵션을 사용합니다. 이 경우 클라이언트 프로그램은 비밀번호를 대화식으로 요구합니다.shell>
mysql -u francis -p
Enter password : ********db_name
"
*
"문자는 비밀번호를 입력했는지를 보여줍니다. 암호는 입력시 표시되지 않습니다.이 방법으로 암호를 입력하는 것이 명령 행에서 암호를 지정하는 것보다 보안입니다. 이것은 암호가 다른 사용자에게 표시되지 않기 때문입니다. 그러나이 비밀번호 입력 방법은 대화 형으로 실행하는 프로그램에 대해서만 적합합니다. 비 대화식으로 실행하는 스크립트에서 클라이언트를 호출하면 키보드에서 암호를 입력 할 수있는 기회는 없습니다. 일부 시스템에서는 스크립트의 첫 번째 행이 (잘못) 암호로 읽히고 해석되는 것조차 있습니다.
비밀번호를 옵션 파일에 저장합니다. 예를 들어 Unix의 경우 홈 디렉토리의
.my.cnf
파일의[client]
섹션에 비밀번호를 나열 할 수 있습니다.[client] password = your_pass
비밀번호를 안전하게 유지하려면 자신 이외의 모든 사용자가 파일에 액세스 가능하게해서는 안됩니다. 이렇게하려면 파일 액세스 모드를
400
또는600
으로 설정합니다. 예 :shell>
chmod 600 .my.cnf
암호를 저장하는 특정 옵션 파일을 명령 행에서 지정하려면
--defaults-file=
옵션을 사용합니다. 여기서file_name
file_name
은 파일의 전체 경로 이름입니다. 예 :shell>
mysql --defaults-file=/home/francis/mysql-opts
섹션 4.2.6 "옵션 파일 사용" 에는 옵션 파일에 대한 추가 정보 기재되어 있습니다.
MYSQL_PWD
환경 변수에 암호를 저장합니다. 섹션 2.12 "환경 변수" 를 참조하십시오.이 방법으로 MySQL 암호를 지정하는 것은 매우 위험하므로 사용해서는 없습니다. ps 버전은 실행 프로세스의 환경을 표시하는 옵션이 있습니다. 일부 시스템에서
MYSQL_PWD
을 설정하면 암호 ps를 실행하는 모든 사용자에게 공개됩니다. 그런 버전의 ps가없는 시스템도 사용자가 처리 환경을 조사 할 다른 방법이 없다고 가정하는 것은 현명하지 않습니다.
Unix의 경우 mysql 클라이언트는 실행 된 명령문을 기록 파일에 기록합니다 ( 섹션 4.5.1.3 "mysql 로그" 를 참조하십시오). 기본적으로이 파일은 .mysql_history
라는 이름으로 사용자의 홈 디렉토리에 작성됩니다. 암호는 CREATE USER
, GRANT
, SET PASSWORD
등의 SQL 문은 일반 텍스트로 쓸 수 있기 때문에 이러한 문을 사용하면 문은 기록 파일에 기록됩니다. 이 파일을 안전하게 유지하려면 이전 .my.cnf
파일에 대해 설명하는 것과 같은 방법이다 제한 액세스 모드를 사용합니다.
명령 인터프리터가 기록을 보존하도록 구성되어있는 경우 명령이 저장되는 모든 파일은 명령 행에서 입력 된 MySQL 암호가 저장됩니다. 예를 들어, bash는 ~/.bash_history
을 사용합니다. 그런 모든 파일은 제한된 액세스 모드로하도록하십시오.