Заставить 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 user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.

Это проблематично, потому что мне нужно, чтобы пароль был другим. Конечно, я мог бы вручную изменить пароль с `${domain} после того, как весь скрипт завершит выполнение, но это не то, что мне нужно:

Я хочу ввести/вставить пароль непосредственно при выполнении,интерактивно.

Другими словами, я хочу, чтобы запрос пароля пользователя БД был неотъемлемой частью запуска скрипта.

Я уже пробовал следующий код, но он не сработал:

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переменной. Обратите внимание, что сразу после ввода значения пароля вам будет предложено ввести пароль root MySQL для подключения к базе данных MySQL ( -pфлаг = интерактивный запрос пароля).

Связанный контент