문제

사용하려고합니다 mysqldump 스키마를 덤프하기 위해, 그것은 대부분 작동하지만 나는 하나의 호기심에 부딪쳤다 : -p 또는 --password 옵션은 비밀번호를 설정하는 것 외에 다른 일을하는 것 같습니다 ( man 페이지와 --help 출력은해야한다고 말합니다).

구체적으로, 그것은 여기에 표시된 일을하고있는 것처럼 보입니다. http://snippets.dzone.com/posts/show/360 - 즉, 데이터베이스를 덤프하도록 설정합니다.

다소 외설적 인 주장을 뒷받침하기 위해, 나는 내가 지정하지 않으면 --password (또는 -p) 옵션, 명령은 사용 명령문을 인쇄하고 오류로 종료합니다. 지정하면 즉시 비밀번호를 입력하라는 메시지가 표시된 다음에 지정된 데이터베이스가 --password 옵션이 덤프됩니다 (또는 일반적인 경우에는 데이터베이스 이름과 일치하지 않는 암호가 지정된 경우 오류가 제공됩니다).

다음은 성적 증명서입니다.

    $ mysqldump -u test -h myhost --no-data --tables --password lose
    Enter password: 
    -- MySQL dump 10.10
    mysqldump: Got error: 1044: Access denied for user 'test'@'%' to
    database 'lose' when selecting the database

그래서 무엇을 제공합니까? 이것이 작동하는 방식입니까? 확실히 말이되지 않는 것처럼 보이거나 공식 문서와 일치하지 않습니다. 그리고 마지막으로 이것이 작동하는 방식이라면 자동화 된 작업에서 사용할 비밀번호를 어떻게 지정해야합니까? 사용 expect???

사용 중입니다 mysqldump Ver 10.10 Distrib 5.0.22, for pc-linux-gnu (i486).

도움이 되었습니까?

해결책

Man Mysqldump에서 :

-password [= password], -p [password

서버에 연결할 때 사용할 비밀번호. 짧은 옵션 양식 (-p)을 사용하는 경우 옵션과 비밀번호 사이에 공간이 없습니다. 명령 줄에서 -password 또는 -p 옵션에 따라 비밀번호 값을 생략하면 하나가 메시지가 표시됩니다.
명령 줄에 비밀번호를 지정하는 것은 안전하지 않은 것으로 간주되어야합니다. 6.6 절, "비밀번호 유지"를 참조하십시오.

구문 적으로, -password 스위치를 올바르게 사용하지 않습니다. 따라서 Command Line Parser는 MySQLDump가 데이터베이스 이름으로 해석하는 독립형 인수로 "Lose"를 사용하는 것을보고 있습니다. mysqldump lose

이를 수정하려면 사용해보십시오 --password=lose 또는 -plose 또는 간단히 사용하십시오 -p 또는 --password 프롬프트가 표시되면 비밀번호를 입력하십시오.

다른 팁

또 다른 옵션은 파일을 만드는 것입니다 ~/.my.cnf (권한은 600이어야합니다).

이것을 .my.cnf 파일에 추가하십시오

[client]
password=lose

이를 통해 실제로 비밀번호를 입력하지 않고 비밀번호가 필요한 MySQL 사용자로 연결할 수 있습니다. -p 또는 -password도 필요하지 않습니다.

MySQL 및 MySQLdump 명령을 스크립팅하는 데 매우 편리합니다.

비밀번호에 특수 문자가 있으면 이것이 발생한다는 것을 알았습니다. 여기에 MySQL 암호가 있습니다! 그것에, 그래서 나는 == password = 'xxx! xxxx'를해야한다. '마크를 기록하십시오.

-password 버전에서 작동하는지 확실하지 않지만 -p를 사용하면 즉시 비밀번호를 지정할 수 있습니다 (키는 공간을 포함하지 않아야합니다).

mysqldump -pmypassword ...

-password lose lose mike 사이에 '='를 배치 해보십시오.

--password=lose

-p를 사용하는 경우 -p와 비밀번호 사이에 공간이 없을 수 있습니다 (예 : '-plose').

당신은-password = 뭐든지 password-is를 시도 했습니까?

아마도 나는 질문을 놓치고 있을지 모르지만 그것이 내가 도구를 실행하기 위해하는 일입니다.

인수없이 -p 또는 -password를 사용하는 경우 비밀번호를 삽입하도록 요청하는 프롬프트가 나타납니다.

명령 줄에 비밀번호를 표시하려면 -pyourpassword 또는 -password = yourpassword를 사용해야합니다. -P 이후 공간이 없으며 -Password 다음에 "="표시가 있습니다.

예에서 MySqlDump는 비밀번호를 요청한 다음 "LOSH"를 데이터베이스 이름으로 취급합니다. 그것이 당신의 비밀번호라면, 당신은 "="를 포함시켜야했습니다.

-P 옵션에는 인수가 필요하지 않습니다. 데이터베이스에 액세스하기 위해 비밀번호를 사용한다는 것을 나타 내기 위해 -p 또는 -password를 넣습니다. -P 이후에 입력 한 데이터베이스를 덤프하는 이유는 MySQlDump에 대한 마지막 인수가 덤프하려는 데이터베이스의 이름 (또는 모두를 원할 경우 all -database)의 이름이어야하기 때문입니다.

@Nathan의 대답도 사실입니다. 비밀번호를 지정할 수 있습니다 즉시 -P 스위치 다음 (스크립트 및 명령을 실행 한 후 직접 입력 할 수없는 곳에서 유용합니다).

-password [= password

여기에 있습니다 선적 서류 비치

사용자 "테스트"가 "잃어버린"데이터베이스에 액세스 할 수있는 권한이 없습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top