mysqldump 错误 1045 访问被拒绝,尽管密码正确等

Posted

技术标签:

【中文标题】mysqldump 错误 1045 访问被拒绝,尽管密码正确等【英文标题】:mysqldump Error 1045 Access denied despite correct passwords etc 【发布时间】:2013-12-02 07:31:45 【问题描述】:

这是一个棘手的问题,我有以下输出:

mysqldump:出现错误:1045:尝试连接时用户“root”@“localhost”的访问被拒绝(使用密码:YES)

在 Windows XP 上尝试使用 mysqldump 导出我的数据库时。用户名是 root,密码正确且仅包含字母数字字符。我尝试了不同的情况,带/不带引号,使用-u-p 指定,使用--user=--password= 指定以及其他指定用户/密码等方法,指定主机(它都是本地的)甚至使用--databases 而不是空白来指定数据库。使用密码时错误总是相同的,并且除了没有密码时的“NO”消息之外总是相同的。我尝试了许多通过搜索找到的修复程序,但均未成功。一项修复建议检查 mysql.conf,但 Windows 版本似乎没有。凭据(实际上是命令行参数)与 mysql.exe 完美配合 - 这个问题似乎只影响 mysqldump.exe。

【问题讨论】:

您是否尝试使用-p 选项而不应用密码?那么你应该被提示输入密码。 你是否可以使用相同的凭据通过 mysql 客户端连接到数据库? 相同的凭据,命令行的登录部分与 mysql.exe 使用的登录部分相同。密码指定正确,因为它适用于 mysql.exe。 检查指定的密码,并尝试添加--host选项。 尝试使用-h,但没有成功。密码是正确的,因为它与 MySQL.exe 使用的密码相同,而且效果很好! 【参考方案1】:

GRANT 权限:

GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' IDENTIFIED BY 'password';

【讨论】:

谢谢,这对我有用。我不得不用 localhost 替换 %。 为我工作。 GRANT as, GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'localhost' IDENTIFIED by 'password';接下来是mysqldump,如下所示,mysqldump --socket=$HOME/apps/mariadb/mysql.sock -u username -p mydb --single-transaction > db_backup.sql IDENTIFIED BY 'password' 不适用于服务器版本 8【参考方案2】:

这对我有用

mysqldump -u root -p mydbscheme > mydbscheme_dump.sql

发出命令后它要求输入密码:

Enter password:

输入密码将生成转储文件。

【讨论】:

【参考方案3】:

我在全新安装 MySQL 5.6.16 后遇到了这个问题。

奇怪的是,它没有指定或标记的密码:

mysqldump -u root myschema mytable > dump.sql

【讨论】:

【参考方案4】:

当我在Administrator 模式下运行命令提示符时,Access dined 问题得到解决。

转到Start-> All Programs -> Accessories 右键单击​​Command Prompt 单击c Run as.. 选择The Following User 从选择选项中选择administrator username 如果有任何单击OK 按钮,请输入密码。

示例 1: 使用命令提示符在 mysql 中备份整个数据库。

在 Windows 7 和 8 中

C:\Program Files <x86>>\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p >testDB.sql
Enter Password: *********

在 Windows xp 中

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p >testDB.sql
Enter Password: *********

它要求密码输入凭据输入密码并单击 Enter 按钮。

示例 2: 使用命令提示符在 mysql 中进行特定表备份/转储。

在 Windows 7 和 8 中

C:\Program Files <x86>>\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p images>testDB_Images.sql
Enter Password: *********

在 Windows xp 中

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p images>testDB_Images.sql
Enter Password: *********

转储文件将在文件夹下创建

在 windows xp 中

C:\Program Files\MySQL\MySQL Server 5.5\bin

在 Windows 7 和 8 中

C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin

注意: 在命令提示符下运行时检查 Windows 7、8 中的 MySQL 安装文件夹。如果 MySQLWorkbench 是 32 位版本,则安装在 Program Files (x86) 文件夹中,否则安装在 Program Files 文件夹中。

【讨论】:

【参考方案5】:

被拒绝的访问可能是对 Windows 文件系统而不是对 MySQL 数据库;尝试将输出文件重定向到允许您的帐户创建文件的位置。

【讨论】:

这救了我。默认 win 7 用户没有足够的权限写入 bin 文件夹! 正确。当我将重定向更改为另一个文件夹时,它对我有用。谢谢【参考方案6】:

过去,在我从 MS Word 文件中复制了 mysqldump 语句后,我也遇到了同样的问题。

但是当直接输入语句时,一切正常。

在十六进制编辑器中,无效语句的“-”由 unicode char e2 80 93 (http://www.fileformat.info/info/unicode/char/2013/index.htm) 表示

在排序中,直接输入密码并检查复制粘贴代码,因为 uni-code(或其他编码)字符串可能会导致问题..

【讨论】:

【参考方案7】:

不要使用命令输入密码。输入,

mysqldump -u <username> -p <db_name> > <backup_file>.sql

然后会提示输入密码。

【讨论】:

【参考方案8】:

如果你能够使用mysql连接到数据库,但是你得到一个mysqldump的错误,那么问题可能是你没有锁定表的权限。

在这种情况下尝试 --single-transaction 选项。

mysqldump -h database.example.com -u mydbuser -p mydatabase --single-transaction  > /home/mylinuxuser/mydatabase.sql

【讨论】:

在上面不要使用 -p 开关和实际数据库密码之间的空格,例如mysqldump -h database.example.com -u mydbuser -p'mydatabase' --single-transaction &gt; /home/mylinuxuser/mydatabase.sql 注意:如果密码包含特殊字符 $()# 等,请使用单引号。 @NaveedAnwar mydatabase 是要转储的数据库,而不是密码。 这对我有用。原始错误消息说,“使用 LOCK TABLES 时用户 'username'@'localhost' 的访问被拒绝(使用密码:YES)。”【参考方案9】:

mysqldump -h 主机名 -u 用户名 -P 端口 -B 数据库 --no-create-info -p > output.sql

我认为你应该指定参数

【讨论】:

端口是我认为的关键技巧。因为 mysqldump 直接在默认端口上工作... :) 谢谢 有另一个 mysqld 偷偷地占用了我的 3306 端口,而 mysqldump 试图访问那个而不是从它自己安装的那个【参考方案10】:

mysqldump -u (user) -p(passwd) -h (host_or_IP) database_to_backup > backup_file.sql

示例:

mysqldump -u god -pheaven -h 10.0.10.10 记帐>accounting_20141209.sql

这将为服务器 10.0.10.10 上的会计数据库创建 sql 备份文件。当 localhost 不在配置中时,有时会看到您的错误。指定服务器的 ip 可能会有所帮助。

【讨论】:

【参考方案11】:

您需要在包含 shell 元字符的密码中添加反斜杠,例如 !#'"`&;

【讨论】:

这让我走上了正轨,我的密码中有一个井号。反斜杠不是为我做的,但我把我的密码放在单引号里,一切都很好。【参考方案12】:

我必须删除密码标志后的单个刻度:

--password=mypassword

--password='mypassword'

【讨论】:

【参考方案13】:

转到开始->所有程序->附件右键单击命令提示符单击以管理员身份运行

在命令提示符下使用 CD 命令转到 MySQL bin 文件夹并运行以下命令

mysqldump --user root --password=root --all-databases>dumps.sql

它会在 bin 文件夹中创建 dumps.sql 文件。

【讨论】:

这如何回答这个问题? OP 已经说过他们已经尝试过这样做,但它不起作用。 在管理员中运行 CMD 对创建备份没有影响。【参考方案14】:

过去 2 天我遇到了同样的错误。尝试了一堆东西。没有任何效果。 但这确实有效: 创建另一个用户。授予它一切。mysqldump -u new_user db_name &gt; db_name.sql //没有错误

【讨论】:

【参考方案15】:

我发现一个正在运行的 apache 进程访问 MYSQL 导致了这个错误。所以我建议确保所有可能与数据库交互的进程都提前关闭。

【讨论】:

【参考方案16】:

在使用 -p 选项时尝试删除空格。这适用于我的 OSX 和 Linux mysqldump:

mysqldump -u user -ppassword ...

【讨论】:

我相信这应该被标记为正确答案【参考方案17】:

不使用 -u-p 对我有用(当我以 root 身份登录时):

mysqldump --opt mydbname > mydbname.sql

【讨论】:

【参考方案18】:

当 mysql 帐户打开 REQUIRE SSL 时,Mysql 会使用正确的凭据回复拒绝访问

ssl_ca 文件(至少)必须在连接参数中提供。

可能需要额外的 ssl 参数,并在此处记录:http://dev.mysql.com/doc/refman/5.7/en/secure-connection-options.html


也在这里发布https://***.com/a/39626932/1695680

【讨论】:

【参考方案19】:

我遇到的问题是,有些视图的“DEFINER”错误,即定义视图的用户。视图中使用的 DEFINER 已在一段时间前被删除,因为它是“来自某个随机工作站的根”。

通过运行检查是否有问题:

USE information_schema; 
SELECT DEFINER, SECURITY_TYPE FROM views;

我修改了 DEFINER(实际上,将 DEFINER 设置为root@localhost,将 SQL SECURITY 值设置为INVOKER,因此视图是使用调用用户而不是定义用户的权限执行的,这实际上更有意义)使用ALTER VIEW。

这很棘手,因为您必须从 information_schema.views 构造适当的 ALTER VIEW 语句,因此请检查:

Modify DEFINER on many views MySQL error 1449: The user specified as a definer does not exist

【讨论】:

【参考方案20】:

对于 MAMP PRO 用户(或任何使用 mysql 的用户),请准备好从 boonies 中指定 mysql 完整路径,并指定要转储文件的用户本地文件夹的完整路径,否则您将得到“权限被拒绝错误”..

经过 3 小时的研究,以下内容对我有用:

/Applications/MAMP/Library/bin/mysqldump  -u root -proot YOUR_DB > /Users/YOUR_USER/yourdump2.sql

【讨论】:

【参考方案21】:

对我来说,当我省略密码时它起作用了。

所以mysqldump -u user dbname &gt; dump.sql

【讨论】:

【参考方案22】:

就我而言,我可以使用mysql.exe 正确访问,但不能使用mysqldump.exe

问题是我的连接端口不是默认端口(3306),我不得不让 mysqldump 端口与(-P3307)一起工作

mysqldump -u root -p -P3307 my_database &gt; /path/backup_database

【讨论】:

【参考方案23】:

尝试了上述大部分内容,但没有任何乐趣。 查看我的密码,其中的字符可能会使解析器感到困惑。我将密码用引号括起来,错误已解决。 -p"a:@#$%^&+6>&FAEH"

使用 8.0

【讨论】:

【参考方案24】:

如果要创建 mysql 数据转储,可以使用 mysqldump 命令。以下命令将在运行此命令的同一位置创建一个名为 xxx.sql 的 sql 文件。 xxx.sql 将拥有在任何其他 mysql 数据库中复制完全相同的数据库架构所需的所有 sql。

命令是:mysqldump -u root -p密码 --databases 你要导入的数据库名称 > xxx.sql

这里的root是mysql的root用户,password是这个root用户的密码。

示例:如果 root 用户密码是 hello,要导出的数据库名称是 regdb,xxx.sql 是要导出此 regdb 的文件,命令如下:

mysqldump -u root -phello --databases regdb > xxx.sql

注意:xxx.sql 是这个 db 将被转储到的文件名。

【讨论】:

【参考方案25】:

此解决方案可能是最后尝试/最不可能成为罪魁祸首的解决方案之一,但这是我的问题...

我的问题是我试图转储到的目录需要管理员权限才能写入,这就是导致mysqldump 命令返回"Access Denied" 的原因。

我将转储文件路径设置为我的桌面目录,然后它就起作用了。

这是在 Windows 上。

【讨论】:

【参考方案26】:

我遇到了同样的问题,持续了 30 分钟!我发现我用的是_p而不是-p,终端字体让我很困惑!

【讨论】:

【参考方案27】:

在 Windows Server 2012R2 上将 -p 作为第一个选项对我有用(在 cmd.exe 中作为管理员)。

mysqldump.exe –p --user=root  --databases DBname --result-file=C:\DBname.sql

【讨论】:

【参考方案28】:

我有同样的错误。仅在从我的正常工作 PC 移动到不同位置的 PC 后发生。

我必须在我的主机站点的 CPanel 中将我的公共 IP ho 地址添加到 Remote MySQL

【讨论】:

以上是关于mysqldump 错误 1045 访问被拒绝,尽管密码正确等的主要内容,如果未能解决你的问题,请参考以下文章

错误 1045 (28000):用户访问被拒绝 [重复]

错误:(1045)用户'root'@'localhost'的访问被拒绝(使用密码:否)

phpMyAdmin 上的错误 #1045 - Mac 访问被拒绝

用户 'ODBC'@'localhost' 的错误 1045 访问被拒绝(不使用密码)

错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

错误 1045 (28000):用户 'root'@'localhost' 的访问被拒绝(使用密码:是)-Ubuntu