훨씬 더 큰 스크립트의 일부로 다음 코드를 사용합니다.
mysql -u root -p << MYSQL
create user '${DOMAIN}'@'localhost' identified by '${DOMAIN}';
create database ${DOMAIN};
GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL
보시다시피 권한이 부여된 모든 권한이 있는 DB 사용자와 동일한 값을 가진 DB 인스턴스를 생성합니다(비밀번호도 동일한 값임).
DB user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.
비밀번호가 달라야 하기 때문에 문제가 됩니다. 물론 전체 스크립트 실행이 완료된 후 `${domain}에서 수동으로 비밀번호를 변경할 수 있지만 이는 내가 원하는 것이 아닙니다.
내가 원하는 것은 실행 시 비밀번호를 직접 입력/붙여넣기하는 것입니다.대화형으로.
즉, DB 사용자의 비밀번호를 묻는 메시지가 스크립트 실행의 필수적인 부분이 되기를 바랍니다.
나는 이미 다음 코드를 시도했지만 실패했습니다.
mysql -u root -p << MYSQL
create user '${DOMAIN}'@'localhost' identified by -p;
create database ${DOMAIN};
GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL
스크립트 실행 시 직접 입력/붙여넣기(스크립트 실행 후 수동으로 변경)하여 대화형으로 비밀번호를 삽입할 수 있는 올바른 방법은 무엇입니까?
답변1
사용자가 다음을 사용하여 미리 변수를 저장하도록 하십시오 read
.
echo "Please enter password for user ${domain}: "; read -s psw
mysql -u root -p << MYSQL
create user '${domain}'@'localhost' identified by '${psw}';
create database ${domain};
GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;
MYSQL
여기서 명령은 read
사용자 입력을 읽고 이를 $psw
변수에 저장합니다. 비밀번호 값을 입력한 직후 MySQL 데이터베이스에 연결하려면 MySQL 루트 비밀번호를 입력하라는 메시지가 표시됩니다( -p
플래그 = 대화형 비밀번호 프롬프트).