带有特殊字符的Mysql命令行密码不起作用

标签 mysql bash

我有以下 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/

相关文章:

mysql - 从 SQL Server 迁移到 AWS Aurora

php - 从 PHP 中的 shell_exec 调用时不显示 MySQL 表轮廓

php - 如何使用 phpseclib 设置 Cron Job?

mysql - Mysql中的条件where子句

php - 有没有办法在 php 和 mysql 中实现树 ADT?

linux - 如何在 BASH 中将两个表相乘

bash - 在bash中提取两个引号之间的字符串

regex - 使用 grep 等 bash 工具解决难题

mysql - 如何在 ionic 4 客户端应用程序和 Express 服务器之间建立连接?

mysql - RDBMS 的加权投票处理