我有以下 bash 脚本来升级我的数据库架构。脚本从命令行读取主机名和数据库密码。
问题在于,如果密码是字母数字,例如r00t,那么脚本就可以工作。但如果密码中包含特殊字符,如pa**w0rd,则脚本不执行,直接退出。请帮我解决一下这个。谢谢。
#!/bin/bash
echo "Enter hostname."
read -p "Hostname [localhost]: " DB_HOST
DB_HOST=${DB_HOST:-localhost}
echo "Enter MySQL root password"
DB_PASS=
while [[ $DB_PASS = "" ]]; do
read -sp "Password: " DB_PASS
done
MYSQL="mysql --force --connect-timeout=90 --host=$DB_HOST -u root --password=${DB_PASS}"
# Apply schema updates. My DBName is "mydb"
# Upgrade schema file is stored in "mysql" folder
$MYSQL mydb -e exit > /dev/null 2>&1 && $MYSQL mydb < "../mysql/upgrade_schema_v.2.1.sql"
最佳答案
使用bash登录mysql
对于 ubuntu 或 linux shell 尝试使用命令
mysql -u username -p'p@ssw()rD'
供远程主机登录使用
mysql -h hostname -u user -p'password'
关于带有特殊字符的Mysql命令行密码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46663630/