새로운 mysql 사용자와 데이터베이스를 생성하기 전에 다음을 수행했습니다.
read sps -s
# Inputing and saving the sps (password) value.
echo ${sps}
# sps password value echoed.
mysql -u root -p[PASSWORD]
mysql>
CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";
질문
로그인하면 mysql -u test -p[SPS_PASSWORD_VALUE]
액세스 거부 오류가 발생합니다.
비밀번호는 내가 부여한 값 ${sps}
이 아니라 ${sps}
그 자체입니다.문자열로.
덫
test1이 수동으로 (변수가 아닌) 비밀번호를 제공했기 때문에 문제가 발생했다는 것을 "공식적으로" 증명하기 위해 ${sps} variable not being expanded **inside** mysql shell, and therefore acts as a regular string, I created another user
이번에는 잘 로그인할 수 있었습니다.
질문
mysql 쉘에 있을 때 변수 확장이 없는 이유는 무엇이며, 이 동작을 방지하거나 적어도 이와 비슷한 동작을 얻을 수 있는 방법은 무엇입니까?
어쩌면 이것은 버그일까요?
답변1
아니요. MySQL Shell은 환경 변수를 확장하지 않기 때문입니다. 사용자의 비밀번호는 리터럴 test
입니다 ${sps}
. 그러나 Bash가 변수를 확장하고 결과를 MySQL에 제공하도록 할 수 있습니다.
echo "CREATE user \"test\"@\"localhost\" IDENTIFIED BY \"${sps}\";" | mysql -u root -p[PASSWORD]