MySQL将脚本中的密码视为数据库

时间:2017-12-03 10:55:30

标签: mysql bash command-line-arguments

我是Bash脚本新手。我想为我创建一个登录MySQL的脚本:

PASSWORD="MyPassword"

sudo service mysql start

mysql -u root -p $PASSWORD

但是,它会告诉我密码($PASSWORD)不是数据库时会出错。

有什么办法吗?

如果我要问一些RTFM或UTFM,请表示歉意。

2 个答案:

答案 0 :(得分:2)

来自man mysql

  

如果使用短选项表单(-p),则选项和密码之间不能有空格。

所以要么

mysql -u root -p"$PASSWORD"

mysql -u root --password "$PASSWORD"

答案 1 :(得分:1)

在命令行上使用密码是不安全的。

来自mysql用户指南:

  

这很方便但不安全。在某些系统上,您的密码对系统状态程序(例如ps)可见,其他用户可以调用它来显示命令行。

我建议您使用mysql_config_editor实用程序来存储数据库凭据。

mysql_config_editor set --login-path=YOUR_LOGIN_PATH --host=YOUR_HOST --user=YOUR_DB_USER --password

然后它将以交互方式请求密码

之后,您可以连接到您的数据库:

mysql --login-path=YOUR_LOGIN_PATH YOUR_DB

示例(设置凭据):

mysql_config_editor set --login-path=root --host=localhost --user=root --password

示例(在脚本中连接到db):

mysql --login-path=root YOUR_DB