2016-07-25 10 views
2

mysql은 .mylogin.cnf 파일에 저장된 로컬 인증 자격 증명을 사용하여 패스워드없는 로그인을 지원합니다 (자세한 내용은 here 참조). 예를 들어사용 --login-path = perl DBD :: mysql

:

mysql --login-path=local 

내 질문은 : 어떻게 DBD :: MySQL을 사용 펄에서이 작업을 수행하기 위해?

+0

DBD :: mysql은 워드 프로세서에서 설명하지 않으며 DBI는 힌트를 제공하지 않습니다. – simbabque

답변

2

DBD :: mysql은 로그인 경로를 지원하지 않는 MySQL C API를 사용합니다. 다른 방법으로, 당신은 당신의 connect 전화에 option filemysql_read_default_filemysql_read_default_group 옵션을 사용할 수 있습니다

use strict; 
use warnings 'all'; 

use DBI; 

my $dsn = 'DBI:mysql:' . 
      ';mysql_read_default_group=local' . 
      ';mysql_read_default_file=/path/to/config'; 

my $dbh = DBI->connect($dsn, undef, undef, { 
    PrintError => 0, 
    RaiseError => 1 
}); 

귀하의 옵션 파일은 다음과 같이 보일 것입니다 : 그

[local] 
host  = localhost 
database = foo 
user  = myuser 
password = mypassword 

[remote] 
host  = remote.example.com 
database = foo 
user  = myuser 
password = mypassword 

참고 .mylogin.cnf 달리 (--login-path에서 사용하는 파일) 일반 옵션 파일은 암호화되지 않습니다. 이것이 들리는 것처럼 큰 문제는 아닙니다. 암호화의 주요 이점은 실수로 사용자의 자격 증명을 노출하는 것을 방지 할 수 있다는 것입니다. 파일을 볼 때, 깨지지 않는 보안을 제공하지는 않습니다. 당신은 여전히 ​​버전 관리 등을 제외하고 세계가 읽을 수 없도록 옵션 파일을 보호 할 수 있습니다.

+0

그래도이 사실입니까, 아니면 바이너리가 업데이트 되었습니까? – Dan

+1

내가 아는 한, 아무 것도 변하지 않았다. MySQL 개발자가이 기능을 추가하기 위해 노력하고 있다고 제안하는 것은 아무것도 없습니다. 어쩌면 기능 요청을 제출해야합니다. – ThisSuitIsBlackNot

관련 문제