从 shell 脚本调用 mysql 后无法登录 mysql

从 shell 脚本调用 mysql 后无法登录 mysql

(这是我的第一个问题,如果我违反了任何惯例,我提前道歉!)

这是我第一次尝试创建 shell 脚本。我尝试通过在命令行中指定它们以及 shell 脚本来创建新的数据库、用户和密码。我的 root 用户名和密码是在 shell 脚本中指定的。以下是我的 shell 脚本,它执行此操作:

/bin/sh #!/bin/sh

# 创建表

主用户=“root”

主密码=“哑密码”

# 要求命令行上有一个参数

如果 [ $# -ne 3 ]; 那么

echo "Usage: createdb.sh dbname dbuser dbpassword";
exit 1; 

数据库名称="$1"

数据库用户=“$2”

数据库密码="$3"

#echo $数据库名称

#回显 $dbuser

#回显 $dbpassword

mysql -u“$masteruser”-p“$masterpassword”<<EOF

创建数据库 $1;授予 $1.* 上的所有权限至由 '$3' 标识的 '$2';

刷新权限

末梢血

我从命令行运行它,如下所示:

./shellscriptname.sh 新数据库名称 新数据库用户 新数据库密码

多次运行此脚本(成功创建数据库)后,当我尝试连接时,发生了以下情况:

# mysql --user root --password dumbpassword

输入密码:错误 1049(42000):未知数据库“dumbpassword”

我不知道为什么会这样。(注意:flush permission 后没有分号)

为什么它不再工作了?我很好奇,因为我找不到我的脚本有什么问题。这个也不起作用:

mysql -u root -p 密码

我更感兴趣的是找出为什么会发生这种情况,而不是解决这个问题。所以我想我会问这里的专家!

答案1

您应该使用以下内容

mysql --user root --password=dumbpassword

或者

mysql -u root -pdumbpassword

请注意,-p/--password 和密码本身之间没有空格。

答案2

登录mysql的正确格式是:

mysql -u username -p mydbname

这允许您登录数据库“mydbname”。相反,您已将密码作为数据库名称传递,因此 mySQL 告诉您它找不到数据库“dumbpassword”

尝试这个:

mysql -u username -p

这将允许您在提示输入密码后登录到 mysql,然后您可以使用以下命令选择数据库:

use mydbname

如果您在没有 u/p 开关的情况下运行 mysql,它将从当前上下文中获取用户名和密码。

相关内容