我将以下代码用作更大脚本的一部分:
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
通过直接在脚本执行中键入/粘贴(而不是在脚本执行后手动更改)以交互方式插入密码的正确方法是什么?
只需让用户预先存储变量
read
:在这里,命令
read
读取用户输入并将其存储在$psw
变量中。请注意,在输入密码值后,系统将提示您输入 MySQL 根密码以连接到 MySQL 数据库(-p
标志 = 交互式密码提示)。