【问题标题】:avoid asking second time mysql root password (bash)避免第二次询问 mysql root 密码(bash)
【发布时间】:2014-12-12 11:37:49
【问题描述】:

在这样一个简单的脚本中:

set -x
# Check if db exists, if not we make it, make user, give privileges
if ! mysql -u root -p -e "use $db" 2>/dev/null; then

    c1="CREATE DATABASE $db"
    c2="GRANT ALL PRIVILEGES ON ${db}.* to '$username'@'localhost' IDENTIFIED BY '$password'"
    c3="FLUSH PRIVILEGES"

    mysql -u root -p -e "$c1; $c2; $c3"
else
    echo 'DATABASE ExISTS, ABORTING'; exit $DB_EXISTS
fi

我每次都被问到,bash 看到 mysql 命令,以获得我的根凭据。 有没有办法避免这种情况,这样一旦输入root密码,所有 其他 mysql 命令是否无缝执行?

【问题讨论】:

  • 您可以要求输入密码,将其存储在一个单独的变量中,然后在命令中将其传递为:mysql --password $pass_var

标签: mysql bash shell


【解决方案1】:

指定 --password 参数

mysql -u root --password=my_mysql_pass db_name

使用 bash 变量更安全

mysql -u root --password=$MYSQL_PASS db_name

【讨论】:

    【解决方案2】:

    尝试考虑将密码添加到 ~/.my.cnf

    [client]
    user = root
    password = XXXXXXXX
    

    退房:

    How to execute a MySQL command from a shell script?

    【讨论】:

    • 还有一个文档记录很差的标志,允许您指定特定文件:mysql --defaults-extra-file=/path/to/.my.cnf
    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2012-03-30
    相关资源
    最近更新 更多