탈출하는 방법! 비밀번호로?


24

비밀번호에서 느낌표를 어떻게 벗어날 수 있습니까?

$ mysql -umyuser -pone_@&!two
-bash: !two: event not found

명백한 백 슬래시를 시도해도 도움이되지 않았습니다.

$ mysql -umyuser -pone_@&\!two
[1] 22242
-bash: !two: command not found
name@domain.com [~]# ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)

내 모든 Google 검색에서 백 슬래시가 도움이 될 것이라고 제안하지만 그렇지 않습니다. 이 질문 에서 제안한대로 따옴표를 사용하는 방법은 없습니다 . 이 줄은 .bashrc 별칭으로 사용됩니다. 여기에 표시된 사용자 이름과 비밀번호는 단지 예일 뿐이며 프로덕션에는 사용되지 않습니다.


항상 작은 따옴표를 사용할 수 있습니다. 작은 따옴표로 묶은 작은 따옴표 "내부"를 사용하려면 다음을 시도하십시오.''\'
cas

6
명령 줄에 암호를 입력하면 다중 사용자 시스템에서 잠재적 인 보안 위험이 발생할 수 있습니다. 실행중인 프로세스의 명령 줄 인수를 쉽게 검사 할 수 있습니다. .my.cnf 파일을 대신 사용하십시오 (기억 chmod 600하십시오).
cas

죄송합니다. 의 것이 '\''아니라''\'
CAS

고마워, 크레이그 실제로 이것은 대안보다 더 안전합니다. 모든 사람에게 암호 사본을 전자 메일로 보내면 알 수있는 곳에 저장됩니다. 개인적으로 각 개발자는 자신의 /home/usermysql 사용자를 선호 하지만 그 점에서 의사 결정자는 아닙니다.
dotancohen

2
관리는 현명하고 모든 것을 알고 있습니다 :)
cas

답변:


38

다음과 같이 비밀번호 주위에 작은 따옴표를 사용하십시오. -p'one_@&!two'

별명에 넣으려면 다음과 같이하십시오.

alias runmysql='mysql -umyuser -p'\''one_@&!two'\'''


1
-p와 암호 사이에는 공백이 없지만 그렇습니다.
mulaz

이미 공간을 편집했습니다 :)
cas

4
-bash: !two: command not found

당신은 또한 &캐릭터 를 탈출해야 합니다 :

$ mysql -umyuser -pone_@\&\!two

3

당신이 사용하지 않으면! 히스토리 기능을 사용하는 경우 ( set +Hbashrc에서) 단순히 비활성화하는 것이 더 편리 할 수 ​​있습니다 .


1

bash 변수에 비밀번호를 저장할 수 있습니다.

$ pass='one_@&!two'

그런 다음 명령에서 변수를 대체하십시오.

$ mysql -umyuser -p$pass

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