2017-02-03 4 views
2

이상한 문제가 있습니다. RHEL에서 MySql을 실행 중입니다.MySql 1045 --defaults-file을 사용할 때

mysql -uroot -pmyPassword 

으로 MySql에 로그온 할 수 있으며 정상적으로 작동합니다. 나는 보통 .sh 스크립트에서 쿼리를 실행하려고 할 때 또한,이

mysql --user=root --password=myPassword --host=localhost --port=3306 -se "SELECT 1 as testConnect" 2>&1>> $OUTPUT

잘 작동하지만 다음과 같이 내가

[clientroot] 
user=root 
password=myPassword 

아래로 msql.conf 파일에 사용자 ID와 암호를 저장할 때

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

0 : 나는 그것을 실행하면

mysql --defaults-file=msql.conf --defaults-group-suffix=root -hlocalhost -P3306 -se "SELECT 1 as testConnect" 2>&1>> $OUTPUT

, 나는 오류를 얻을 아래로 스크립트에서 줄을 변경

나는 sudo으로 스크립트를 실행하고 및 설정 파일은 스크립트

내가 설정 파일에 대한 권한이 0600이 같은 디렉토리에 있습니다.

어떻게하면됩니까?

+0

Windows에서 작동합니다. 옵션 파일이없는 명령에서 mysql 뒤에 --print-defaults를 추가하고 옵션 파일이있는 명령에서'--defaults-group-suffix = root' 다음에 결과를 비교해 볼 수 있습니다 – rsanchez

+0

문제를 재현하고 고치십시오. 나는 아래의 나의 대답이 당신의 문제를 해결하기를 바랍니다. 이 질문을 실제로 해 주셔서 감사합니다, 나는 이것이 가능하다는 것을 모르고 있었다. 그리고 나는 아마 나 자신을 사용할 것이다. +1 – Mocking

답변

2

그것은 나를 위해 일했지만 실제 문서에는 표시되지 않은 '까다로운'수정 사항이었습니다. 당신이해야 할 모든

[clientroot] 
user="root" 
password="myPassword" 

는 기본적으로 단지 따옴표를 추가로 변경

[clientroot] 
user=root 
password=myPassword 

입니다.

mysql --defaults-file=msql.conf --defaults-group-suffix=root -hlocalhost -P3306 -se 
"SELECT 1 as testConnect" 2>&1>> $OUTPUT 

작동해야

(이것은 나를 위해 일한) :

는 그런 다음 명령을 실행.

documentation의 모호한 부분을 거의 관련없는 것으로 조사하여이를 발견했습니다. 따라서 누락 된 부분을 모두 탓할 필요는 없습니다.

+1

와우 !!!! 당신은 방금 저의 하루를 보냈습니다. 정말 고마워요. – Srijit

+1

기꺼이 도와 드리겠습니다! 위에서 언급 한 것처럼, 그것은 나에게도 도움이되었습니다. – Mocking

1

옵션 파일은 자동 로그인 자격 증명을위한 것이 아닙니다.

export MYSQL_PWD=myPassword 

을 그리고 root 사용자를 사용하여 연결을 시도 :

이보십시오.


이 방법은 "안전하지 못하다"는 점에 유의하십시오.하지만 수행하려는 작업의 기본 개념도 마찬가지입니다.

+0

감사합니다 보헤미안. 그러나 이것은 내 문제를 해결하지 못합니다. MYSQL_PWD 변수를 설정하려고 시도했지만 여전히 같은 오류가 발생합니다. 또한 mysql --defaults-file = msql.conf --print-defaults를 실행하면 다음과 같은 결과가 출력됩니다. "mysql은 다음 인수로 시작되었습니다 : --user = root --password = *****". 그것은 파일을 읽고 인자를 읽는 것이라고 확신합니다. – Srijit

0

스크립트 나 명령 줄에서 암호를 사용하지 않으려는 경우 다른 방법을 제안 할 수 있습니까?
당신은 암호화 된 로그인 자격 증명을 가진 파일을 생성하고 로그인을 위해 그것을 사용할 수 있습니다

다음은 예입니다 :.

mysql_config_editor --set-login-path=local --host=localhost --user=localuser --password 

이 파일 ~/.mylogin.cnf을 생성하여 파일을 만듭니다.

mysql --login-path=local 

local 당신이 지정할 수있는 이름이 함께 이제 BTW, 로그인 할 수 있습니다.

다음은 또 다른 장점입니다. 프로젝트마다 다른 파일을 만들 수도 있습니다. 예를 들어, 때로는 특정 스크립트에 대한 파일을 만듭니다. 나는 스크립트와 같은 폴더에 .mylogin.cnf을 넣고 스크립트에서 다음과 같이 사용 :

RESULT=($(MYSQL_TEST_LOGIN_FILE=./.mylogin.cnf mysql --login-path=$HOST -B --skip-column-names -e "SELECT whatever FROM whatever")) 
  • mysql_config_editor here에 대해 자세히 알아보십시오.
+0

시간을내어 주셔서 감사합니다 fancyPants. 문제는 이러한 스크립트가 다른 제품 공급 업체에서 제공 한 것이므로 스크립트가 제공하는 모든 스크립트를 수정하고 싶지는 않습니다. 그것은 유지 보수의 악몽이 될 것입니다. – Srijit

+1

그래, 내가 대답을 삭제하지 않을거야, 그것은 여전히 ​​다른 사람에게 유용 할 수 있습니다. – fancyPants