Bash用户输入Mysql登录

时间:2011-03-12 21:05:52

标签: mysql bash mysql-error-1045

将从我想要完成的事情开始。我编写了一个菜单脚本来添加一个新数据库并回显以筛选结果。但似乎无法通过变量登录。

以下是我遇到问题的部分:

#!/bin/bash
while [[ "$yn" != "Yes" && "$yn" != "Y" && "$yn" != "y" && "$yn" != "yes" ]]; do
    echo "  Please, type password for root user.             #"
read -r  mysqlrp
    echo "  You have entered $mysqlrp as your MySQL password #"
    echo "  Is this correct? (Yes or No)            #"
      read yn
done
mysql -u root -p$mysqlrp

还尝试过:

mysql -u root -p${mysqlrp}

以及mysql -u root -p'${mysqlrp}'

我得到以下内容:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

即使我在没有脚本的情况下尝试也能正常工作。

请帮忙, 提前致谢, 乔

2 个答案:

答案 0 :(得分:1)

要直接在命令行字符串中提供密码,您应该使用mysql --password=[password]See this article

要提示用户输入密码,您应该使用类似的东西。

#!/bin/bash
read -p "Username: " uname
stty -echo
read -p "Password: " passw; echo
stty echo

您不能打印密码。并且在输入它时不应该看到它。


#!/bin/bash
read -p "Username: " uname
stty -echo
read -p "Password: " passw; echo
stty echo
mysql --user=$uname --password=$passw

该脚本适合我。如果不适合您,请检查您的mysql权限是否允许您从localhost登录。

答案 1 :(得分:0)

在一个shellcript中,你可以做到

set -x

查看正在执行的命令是什么样的。

你应该多做mysql --password =“$ mysqlrp”。 '$ mysqlrp' - > '$ mysqlrp'。

在你的真实剧本中,我想你可能想要做

read -p "Password, plz:" -s mysqlrp

为了正确回答问题,您获得的实际错误会有所帮助。 [更新:在评论中回答。]

另请注意,如果您的查询是长途运行,您的密码将显示在“ps -ef”