[英]Bash user input Mysql login
从我要完成的事情开始。 我写了一个菜单脚本来添加一个新的数据库并回显屏幕结果。 但是似乎无法使用变量登录。
这是我遇到的问题:
#!/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)
即使我尝试不使用脚本也能正常工作。
请帮助,在此先感谢,乔
要直接在命令行字符串中提供密码,您应该使用mysql --password=[password]
。 看到这篇文章 。
为了提示用户输入密码,您可能应该使用类似这样的方式。
#!/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
登录。
在shellscript中,您可以执行
set -x
看看正在执行的命令是什么样子。
您应该正确地执行mysql --password =“ $ mysqlrp”。 '$ mysqlrp'->'$ mysqlrp'
在您的真实脚本中,我想您可能想做
read -p "Password, plz:" -s mysqlrp
为了正确回答该问题,您得到的实际错误会有所帮助。 [更新:在评论中回答。]
另外,请注意,如果查询长时间运行,则密码将在“ ps -ef”中显示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.