mysql CLI가 대화식으로 비밀번호를 묻도록 설정

mysql CLI가 대화식으로 비밀번호를 묻도록 설정

훨씬 더 큰 스크립트의 일부로 다음 코드를 사용합니다.

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플래그 = 대화형 비밀번호 프롬프트).

관련 정보