데이터베이스 버전을 관리하는 PHP 명령 줄 스크립트가 있습니다. 개발자가 새로운 데이터베이스 패치를 추가 할 때마다이 스크립트를 실행합니다.
스크립트는 MySQL 명령 줄을 사용하여 패치를 실행합니다.
system('mysql --user=xxx --password=xxx < patch.sql');
그러나 MySQL 5.6은 이제 다음 경고를 발행합니다.
경고 : 명령 행 인터페이스에서 비밀번호를 사용하면 안전하지 않을 수 있습니다
분명히 사실이지만 사용자에게는 문제가 될 수도 있고 아닐 수도 있습니다.
- 안전한 대안 은 무엇입니까 ?
- 또는이 경고를 비활성화 할 수 있습니까?
외부 비밀번호 파일을 사용하고 싶지는 않습니다.
답변
최신 GA 버전의 MySQL, 즉 버전 5.6 에서는 http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html에 설명 된대로 mysql_config_editor 명령을 통해이를 수행 할 수 있습니다.
기본적으로 수행되는 작업은 호스트 별명으로 사용자 / 패스 자격 증명을 암호화 한 다음 호스트 별명을 사용하여이 정보를 홈 디렉토리의 구성 파일에 넣은 다음 필요할 때 대신 :
mysqldump -uroot --password=mycleartextpass mydatabase > dumpfile.sql
대신 다음과 같이 작성하십시오.
mysqldump --login-path=myhostalias mydatabase > dumpfile.sql
따라서 암호를 일반 텍스트로 스크립트에 넣지 않아도됩니다.
이것이 작동하려면 먼저 다음 myhostalias
과 같이 정의해야합니다 (한 번만) .
mysql_config_editor set --login-path=myhostalias --host=mysqlhost.localnet.com --user=root --password
원하는대로 다른 계정 및 / 또는 호스트에 대해 다른 로그인 경로를 사용할 수 있습니다. 물어 보면 아주 좋은 생각입니다.
참고로,이 기능은 5.6 이하 버전에는 존재 하지 않습니다 .
답변
--defaults-file
또는 --defaults-extra-file
옵션을 사용하십시오 . 사용자 ID와 비밀번호를 지정할 수 있습니다. 형식은 /etc/my.cnf
입니다.
더 읽어 보면, 외부 비밀번호 파일에 의존 할 필요는 없지만 이것이 유일한 안전한 방법입니다. 다른 것들은 프로세스 테이블이나 다른 곳에 흔적을 남길 것입니다. 원하는 경우 암호 파일을 버전 제어에 넣을 수도 있습니다. 600 또는 400으로 만들고 mysql 또는 실행중인 사용자 만 읽을 수 있도록하십시오.
답변
http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html 당 4 개의 옵션이 있습니다.
- 명령 행 에서
-pyour_pass
또는--password=your_pass
옵션 사용 - 비밀번호 값을 지정하지 않고 명령 행 에서
-p
또는--password
옵션을 사용하십시오 . 이 경우 클라이언트 프로그램은 대화식으로 비밀번호를 요청합니다. - 옵션 파일에 비밀번호를 저장하십시오.
MYSQL_PWD
환경 변수에 비밀번호 저장
필요에 MYSQL_PWD
따라 옵션이 될 수 있지만 더 이상 안전하지 않습니다. 실제로 대화식 프로세스를 생성하고 대화식으로 --password
비밀번호를 제출해야하지만이 문제에 대한 해결책은 상당히 복잡합니다.
답변
PHP 스크립트에 이미 열린 데이터베이스 연결이있는 mysqli_multi_query()
경우 .sql 파일을 가져 오는 데 사용하지 않는 이유는 무엇입니까? .sql 파일의 구문이 유효한 경우 물론 …