mylogin.cnf에서 MySQL 클라이언트가 암호를 읽도록하려면 어떻게해야합니까?


11

대화식으로 암호를 제공하지 않고도 mysql 클라이언트를 mysql 서버에 연결하려고합니다. 취한 단계 :

1) 먼저 mylogin.cnf 파일을 작성하십시오

$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:

2) 파일이 성공적으로 생성되었습니다 :

$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt  136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
host = <host>

3) mysql 클라이언트를 사용하여 연결

$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

클라이언트가 mylogin.cnf의 비밀번호를 무시하도록하는 기본값 / 구성이 있습니까? 파일에서 사용자 및 호스트 특성을 올바르게 읽었습니다.

명령 행에 비밀번호를 제공하면 제대로 연결할 수 있습니다.

$ mysql -p <dbname>
Enter password: 
Reading table information...
...
mysql> 

MySQL 클라이언트 버전은 5.6.22이고 MySQL 서버 버전은 5.6.22이며 Oracle Linux 6에서 모두 클라이언트와 서버가 서로 다른 호스트에 있습니다.

감사

답변:


2

어떤 식 으로든 암호를 어딘가에 저장했을 것입니다. MySQL 5.6 로그인 경로조차도 동기 부여가있는 사람이라면 누구나 쉽게 해독 할 수 있습니다. 그 경고는 이것이 쉬운 해결책이라고 말했다.

환경 스크립트 (예 : ~/.profile또는 ~/.bashrc)에서

alias mysql='mysql -uUser -pPasswd -hHostname'

(물론 원하는 사용자, 암호 및 호스트 이름을 입력하십시오.)

쉘 재 로그인 후에는 간단하게 할 수 있어야합니다

mysql

... 별칭을 사용하고 DB에 연결하고 .my.cnf파일의 모든 비밀번호를 무시 합니다.

보안 참고 사항 : 서버에 다른 사용자가있는 경우 다른 사용자가 비밀번호에 쉽게 액세스 할 수 없도록 프로파일 스크립트를 chmod 700으로 만들 수 있습니다. 루트 또는 sudo를 가진 모든 관리자는 여전히 볼 수 있습니다. 그 주위에 방법이 없습니다.


이것은 실제 문제에 대한 해결 방법이지만 괜찮습니다. 나는 앞으로 독자들 에게이 답변을 올바른 방법으로 Nawaz 답변이라고 고지 하면서이 답변을 받아들이지 만 알 수없는 이유로 내 환경에서는 작동하지 않습니다. 감사!
Lefteris Koutsoloukas

1
-1 이것은 OP의 쿼리에 응답하지 않으며 파일에 암호를 저장하지 않습니다. 비밀번호는 이제 .mylogin.cnf 대신 .profile에 저장됩니다. 그러나 이제 비밀번호는 ps 명령으로 표시됩니다.
miracle173

@ 기적, ps가 암호를 밝힐 것이라는 귀하의 주장을 확인하십시오. 내 시스템에서 암호는 ps 출력에서 ​​xxxxxxx로 마스크 표시됩니다. MySQL 클라이언트가 내 것처럼 작동하지 않으면 실행중인 mysql 버전과 배포판을 게시하십시오. 그리고 OP의 실제 질문에 대한 더 나은 답변이 있습니까?
Joshua Huber

2
@joshua : 암호 보안에 대한 최종 사용자 지침 : " 명령 줄에서 a -pyour_pass또는 --password=your_pass옵션을 사용하십시오 (...) 편리하지만 안전하지 않습니다 ."
기적 173

10

다음 명령을 사용하여 먼저 로그인 경로를 설정하십시오.

mysql_config_editor set --login-path = lgpath --user = root -p
비밀번호

그런 다음 아래 명령을 사용하여 mysql에 로그인하십시오.

mysql --login-path = lg 경로

mysql 로그인 경로 옵션에 대한 도움말은 다음과 같습니다.

mysql_config_editor set --help


제안한대로 명시 적으로 로그인 경로를 설정하려고 시도했지만 불행히도 동일한 동작이 있습니다. $ mysql_config_editor print --all [lgpath] user = <user> password = ***** host = <host> $ mysql --login -path = lgpath 오류 1045 (28000) : 사용자 '<user>'@ '<host>'에 대한 액세스가 거부되었습니다 (비밀번호 사용 : NO)
Lefteris Koutsoloukas

3

OP와 같은 문제가 있었지만이 스레드의 답변이 혼란 스럽습니다. Vinay Mandala의 링크는 실제로 저에게 효과적이었습니다. 명확성을 위해 여기에 다시 게시했습니다.

내 문제 :

ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

mysql_config_editor암호의 특수 문자를 올바르게 처리하지 못한다 는 것을 증명합니다 .

해결책:

mysql_config_editor비밀번호를 묻는 메시지가 표시 되면 비밀번호를 큰 따옴표 ( ")로 묶어야합니다 . 그런 다음 로그인 만하면됩니다.


1

내가 말한 것을 제외 하고는이 오류가 발생했습니다 (암호 사용 : YES)

Giovanni가 언급 한 이유는 비밀번호에 "#"이 있기 때문입니다. 해결 방법은 프롬프트가 표시되면 암호 주위에 따옴표를 삽입하는 것입니다. .my.cnf를 사용하는 일반 텍스트 비밀번호에도 동일한 제한 사항이 있습니다.


0

Nawaz의 답변이 맞습니다. 추가 할 것이 거의 없습니다. 기본 파일이 손상된 경우를 대비하여 환경 변수 MYSQL_TEST_LOGIN_FILE을 사용하여 새 구성 파일을 크레이트하려고 시도하는 것이 좋습니다. 파일 --no-defaults을 건너 뛸 때도 사용하십시오 .cnf. 암호는 문자가 포함 된 경우 #, mysql login-path작동하지 않습니다.

$ export MYSQL_TEST_LOGIN_FILE=$HOME/mylogin.cnf

$ mysql_config_editor set --login-path=mytest --host=127.0.0.1 --port=5622 --user=mytest --password
Enter password:

$ ls -l $MYSQL_TEST_LOGIN_FILE
-rw------- 1 mysql mysql 288 Feb 27 14:25 mylogin.cnf

$ mysql --no-defaults --login-path=mytest test

이 환경 변수가 설정되지 않았습니다. 나는 그것을 설정했지만 정확히 같은 동작을 얻었습니다. mylogin.cnf의 비밀번호를 무시했습니다.
Lefteris Koutsoloukas

exec mysql명령 의 사용자가 확실 mysql합니까? 그렇지 않은 경우의 소유자를 변경 mylogin.cnf: 그것은 일을해야
Iazel

0

원본 포스터와 비슷한 문제가 발생했습니다. 암호의 문자가 제대로 암호화 / 암호 해독되지 않는 것으로 생각됩니다.

확인하기 위해 비밀번호를 간단한 것으로 변경하고이 문제가 사라지는 지 확인하십시오.


나는 같은 문제가 있었다. 으로 Plazgoth는 지적, 내가 암호에 특수 문자를했고 그것은 작동하지 않았다. 나를 위해 일한 것은 이 게시물 에 사용자 bglad 의 제안입니다
Vinay Mandala

0

쉘 스크립트 에서이 문제가 발생했습니다. 내 스크립트가 $ HOME 값을 변경하여 --login-path = ***가 무시 된 것으로 나타납니다. $ HOME 값 변경을 중단하면 작동하기 시작했습니다.


0

당신이 리눅스 사용자path 하에서 실행하려고하면 참고 -당신은 단순히 사용할 수 없습니다 . 루트 IE 로 로그인 해야합니다 rootsudo

user@server:$ sudo su
user@server:$ Enter Password
root@server:$ mysql_config_editor set --login-path=data-main --user=<user> --password --host=<host>
root@server:$ Enter Password
root@server:$ exit
user@server:$ ...

또한 여기에 다른 게시물에서 언급 .. 당신은 큰 따옴표를 사용해야합니다 주위에 당신 mysql이 영숫자 이외의 포함되어있는 경우 암호를 입력합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.