Mysql控制台备份导入在正确的目录中使用正确的密码失败

时间:2017-12-10 23:33:03

标签: mysql sql database console command-line-interface

我使用Ubuntu服务器16.04(xenial)和Mysql 14.14 Distrib 5.7.20(x86_64)和EditLine包装器。

我有一个Wordpress网站/var/www/html/${domain}/我已将cp复制到/var/www/html/test/并相应地更改了wp-config.php

我以这种方式导出 ${domain}的数据库备份:

mysqldump -u root -p"${rps}" "${domain}" > /var/www/html/test.sql

这个test.sql文件的重量为22mb,就像网站的常规sql备份一样,所以操作似乎很成功。

我还登录了 mysql控制台,并为test网站创建了一个授权的,所有权限最高的数据库用户和实例:

CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";
CREATE database test;
GRANT ALL PRIVILEGES ON test.* TO test@localhost;

注意:rpssps代表"(mysql)root密码"和#34;(mysql)网站密码"。回应两者都显示正确的值。

然后我退回到Ubuntu控制台。

到目前为止一直很好,但问题在于:

/var/www/html/时,我尝试导入我的test.sql文件到其相应的数据库实例中:

mysql -u test -p"${sps}" < test.sql

然而,我的导入操作失败了。

我也尝试了这种导入语法:

mysql -u test -p"${sps}" test < test.sql

两个导入操作均以完全相同的错误失败:

  

ERROR 1045(28000):拒绝用户访问&#39;测试&#39; localhost&#39; (使用   密码:是)

我的问题

当我似乎使用正确的密码时,为什么我会被拒绝访问?

我强调我已经仔细检查并确保${sps}echo ${sps}保留了正确的密码。

Update_1

即使此会话包含代码的主要部分you can view the entire code here

Update_2 ---里程碑

似乎问题是由于在创建用户时未扩展变量:

CREATE user "test"@"localhost" IDENTIFIED BY "${sps}";

我在手动创建具有密码的用户时已经确认了这一点。来自变量的密码只是不会计数。

1 个答案:

答案 0 :(得分:0)

它发生的原因是因为变量$ {sps}没有在Mysql shell中扩展; Mysql shell不是bash,不包括变量扩展的这种行为(在这种情况下,类型变量替换)。

See more data and a way to cope with this here