2011-01-05 4 views

답변

31

은 작은 따옴표로 [email protected]$pr!nT을 넣어 :

mysqldump -uroot '[email protected]$pr!nT' --databases app_pro > /srv/DUMPFILE.SQL 

문제는 배쉬는 ! 해석이다. 작은 따옴표로 묶은 문자열은 해석되지 않습니다.

+0

데이터베이스에 액세스하려고하는데 비밀번호가 작동하지 않습니다. 내 암호가 느낌표로 끝나서 작은 따옴표 안에 전체 -p 명령을 넣으려고했지만 "오류 1045 (28000) : 사용자 'admin'@ 'localhost'(암호 사용 : 예)에 대한 액세스가 거부되었습니다." – Lopsided

0

을 시도해보십시오 덤프

mysqldump -u root --password='[email protected]$pr!nT' app_pro > /srv/DUMPFILE.SQL 
+0

작동하지 않습니다.$는 큰 따옴표로 묶인 문자열 안에 interepreted 될 것이고 쉘은 존재하지 않을'$ pr' 변수를 찾고 null 문자열로 평가하여 암호를'sdfas @ N! nT'로 바꿀 것입니다. 그러나 작은 따옴표를 사용하는 것이 좋습니다. –

+0

의미가 있습니다. PHP는 같은 종류의 일을합니다. – pulsedemon

11

'!'를 이스케이프 처리해야합니다. 암호에 : -

[email protected]$pr\!nT 
+1

충분하지 않습니다. '$ pr' 비트는 변수 치환으로 해석되므로'$'를 이스케이프하거나 전체 암호를 작은 따옴표로 묶거나 별도의 프롬프트에서 입력하는 것이 가장 좋습니다. –

0

지시 사항 멸망에 따르면, 인수는 더블 하이픈이 있어야합니다. ( http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)

이 시도 : 당신이

mysqldump --user=root [email protected]$pr!nT --databases app_pro > /srv/DUMPFILE.SQL 
+0

거기에 문서화되어 있지 않은 이유는 모르지만 맨 페이지에는'-ppassword' 등이 나열되어 있습니다. – marcog

+0

흥미 롭습니다. 다른 대답을 볼 때 문제는 인수 구분 기호가 아니라 암호의 느낌표입니다. – JYelton

0

사용할 때! 명령 줄에서 다음 문자로 시작하는 마지막 실행 명령을 찾아 여기에 두십시오. 명령 줄로 이동하여 "history"를 실행 한 다음 다른 명령을 실행하십시오. cd, ls, 뭐든간에. then go! h 문자 'h'로 시작한 마지막 명령 (이 경우 "history")이 실행됩니다.

당신이 빅뱅을 탈출해야합니다 (!)는

2

대답은 지금까지 당신이 명령 행에 암호를 넣으면 안됩니다 점을 피하다. 암호를 공개하지 않고이를 수행하는 방법은 MySQL's End-User Guidelines for Password Security을 참조하십시오.

+0

물론 이것은 일회성 명령이라면 문제가되지 않습니다 ... 그런 다음에 -p를 입력하고 프롬프트에서 암호를 입력한다고 생각합니다. – mghicks

+0

일회성 명령은 여전히 ​​셸 내역에 기록되며 'ps'를 실행하는 모든 사람에게 표시됩니다. 명령 줄에 암호를 넣는 것은 정말 좋은 생각입니다. –

0

당신은 역사 확장을 해제 할 수 있습니다 다른 사람처럼

set +o histexpand 
1

이미 컴퓨터에 다른 프로세스가 그것을 읽을 수 있기 때문에 명령 줄에서 암호를 지정해서는 안됩니다 말했다. mysql을위한 간단하고 효과적인 솔루션은 mysql 또는 mysqldump를 실행하는 사용자의 홈 디렉토리에 .my.cnf 파일을 사용하는 것이다.

먼저 안전한 방법으로 그것을 만들 :

sudo touch /root/.my.cnf 
sudo chown 0:0 /root/.my.cnf 
sudo chmod 600 /root/.my.cnf 

을 다음 /root/.my.cnf 다음과 같은 태그가 포함되어 있는지 확인하십시오

[mysql] 
user=root 
[email protected]$pr!nT 

[mysqldump] 
user=root 
[email protected]$pr!nT 

할 수 있습니다하고 "정상"(루트가 아닌이 작업을 수행해야) mysql 계정뿐만 아니라. 그렇다면 결코 암호를 다시 입력하지 않아도 안전합니다. 그냥 당신의 자격 증명을 사용하여 자신의 홈 디렉토리에 .my.cnf을 넣어 당신이 파일을 읽고 쓸 수 만 확인 :

touch ~/.my.cnf 
chmod 600 /root/.my.cnf 
관련 문제