让 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变量中。请注意,输入密码值后,系统将提示您输入 MySQL root 密码,以便连接到 MySQL 数据库(-pflag = 交互式密码提示)。

相关内容