如何在启动后自动向程序提供两个参数?

如何在启动后自动向程序提供两个参数?

我有以下脚本,可以在 ubuntu 上正常运行,用于启动和创建 MySQL 数据库的新表:

echo "CREATE DATABASE database_name" | mysql -u root -p

执行此命令后,MySQL 会要求输入密码。

唯一的问题是我想在 vagrant 配置 bash 脚本上执行此操作,因此我必须自动执行输入密码的过程。我基本上必须向 MySQL 程序提供一行输入,如下所示:

Enter password: password_goes_here

如何将输入数据库创建命令和密码作为文本的过程结合到程序中?

答案1

对于这个特定问题,最简单的解决方案是在命令参数中提供密码,mysql如下所示:

echo "CREATE DATABASE database_name" | mysql -u root --password=your_password

这在 mysql 要求密码之前就为它提供了密码。

答案2

@业余程序员的回答很棒,但我只是想添加一件事。如果您担心有人运行时您的密码可见ps auxwww,您还可以使用名为的环境变量将密码提供给 MySQL MYSQL_PWD

mysql> set password for 'will@localhost' = PASSWORD('test');
Query OK, 0 rows affected, 1 warning (0.01 sec)

$ export MYSQL_PWD=test
$ mysql -uwill@localhost
Welcome to the MySQL monitor.

对此以及其他选项进行了解释在 MySQL 文档中

相关内容