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

Ddl*_*hot 47 mysql localhost access-denied windows-xp-sp3 mysql-error-1045

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

mysqldump:收到错误:1045:尝试连接时用户'root'@'localhost'(使用密码:YES)拒绝访问

尝试mysqldump在Windows XP上导出数据库时.用户名为root,密码正确且仅包含字母数字字符.我尝试了不同的情况,有/没有引号,指定使用-u-p,指定使用--user=--password=其他指定用户/密码等的方法,指定主机(它是全局的),甚至指定数据库使用--databases而不是只是空白.使用密码时错误始终相同,除非"否",否则始终相同.我已尝试通过搜索找到许多修复但没有成功.一个修复建议检查mysql.conf,但Windows构建似乎没有.凭证(实际上是命令行参数)与mysql.exe完美配合 - 这个问题似乎只影响mysqldump.exe.

非常感谢您的帮助.

Bor*_*vić 54

这对我有用

mysqldump -u root -p mydbscheme > mydbscheme_dump.sql
Run Code Online (Sandbox Code Playgroud)

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

Enter password:
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*ore 26

如果您能够使用mysql连接到数据库,但是mysqldump会出错,那么问题可能是您没有锁定表的权限.

在这种情况下尝试使用--single-transaction选项.

mysqldump -h database.example.com -u mydbuser -p mydatabase --single-transaction  > /home/mylinuxuser/mydatabase.sql
Run Code Online (Sandbox Code Playgroud)

  • 在上面不要在-p开关和实际的db密码之间使用空格,例如`mysqldump -h database.example.com -u mydbuser -p'mydatabase'-single-transaction>/home/mylinuxuser/mydatabase.sql`注意:如果密码包含特殊字符$()#等,请使用单引号. (6认同)
  • @NaveedAnwar mydatabase是要转储的数据库,而不是密码. (5认同)
  • 这对我有用。原始错误消息显示:“使用 LOCK TABLES 时,用户‘用户名’@‘localhost’(使用密码:YES)的访问被拒绝。” (2认同)

小智 18

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


And*_*del 12

使用-p-option时尝试删除空格.这适用于我的OSX和Linux mysqldump:

mysqldump -u user -ppassword ...
Run Code Online (Sandbox Code Playgroud)

  • 我相信这应该被标记为正确答案 (2认同)

小智 9

您需要在密码中加反斜杠,其中包含外壳元字符,例如!#'“`&;。

  • 这让我走上了正轨,我的密码中有一个哈希符号。反斜杠并没有为我做到这一点,但我将密码放在单引号中,一切都很好。 (2认同)

Ana*_*hra 7

GRANT特权:

GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

  • 访问仍然被拒绝,错误1045. (2认同)
  • 谢谢,这对我有用.我不得不用localhost替换%. (2认同)

p u*_*ran 6

Administrator模式下运行命令提示符时,解决了访问用餐问题.

转到Start-> All Programs -> Accessories右键点击Command Promptclickc上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: *********
Run Code Online (Sandbox Code Playgroud)

在Windows XP中

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p >testDB.sql
Enter Password: *********
Run Code Online (Sandbox Code Playgroud)

它要求输入密码的密码,然后单击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: *********
Run Code Online (Sandbox Code Playgroud)

在Windows XP中

C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump test -u root -p images>testDB_Images.sql
Enter Password: *********
Run Code Online (Sandbox Code Playgroud)

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

在Windows XP中

C:\Program Files\MySQL\MySQL Server 5.5\bin
Run Code Online (Sandbox Code Playgroud)

在Windows 7和8中

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

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


har*_*riK 6

请勿使用命令输入密码.刚进入,

mysqldump -u(用户名)-p(db_name)>(backup_file).sql

然后您将收到输入密码的提示.


wcc*_*526 5

mysqldump -h hostname -u username -P port -B database --no-create-info -p> output.sql

我认为你应该指定args


zyl*_*tra 5

没有-u-p为我工作(当我以root身份登录时):

mysqldump --opt mydbname > mydbname.sql
Run Code Online (Sandbox Code Playgroud)


小智 5

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

\n
mysqldump.exe \xe2\x80\x93p --user=root  --databases DBname --result-file=C:\\DBname.sql\n
Run Code Online (Sandbox Code Playgroud)\n