将从我想要完成的事情开始。我编写了一个菜单脚本来添加一个新数据库并回显以筛选结果。但似乎无法通过变量登录。
以下是我遇到问题的部分:
#!/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)
即使我在没有脚本的情况下尝试也能正常工作。
请帮忙, 提前致谢, 乔
答案 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”
中