INSIDE mysql 쉘에서는 변수가 확장되지 않습니다.

INSIDE mysql 쉘에서는 변수가 확장되지 않습니다.

새로운 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]

관련 정보