我有以下脚本,可以在 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 文档中。