微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysqldump无法使用socket连接

这个问题一直困扰着我的大脑几个小时.我一直在尝试使用mysqldump转储数据库,使用:

MysqLdump --protocol=socket -S /var/run/MysqLd/MysqLd.sock database`

但是,我一直在:

1045:尝试连接时,用户“root”@“localhost”(使用密码:NO)拒绝访问

我在localhost上并在root下运行(sudo su).
MysqL用户表中允许使用root @ localhost.
我可以用> MysqL查看所有数据库,但MysqLdump无法正常工作.
我不知道root密码(系统生成).
我试过像这样添加套接字到my.conf并重启MysqL服务器:

[MysqLdump]
socket = /var/run/MysqLd/MysqLd.sock

任何帮助,将不胜感激!

解决方法:

即使您通过套接字进行连接,仍必须为用户提供root权限

如果root @ localhost没有密码,请执行以下操作:

MysqLdump -uroot --protocol=socket -S /var/run/MysqLd/MysqLd.sock database

如果root @ localhost有密码,那么执行以下操作:

MysqLdump -uroot -p --protocol=socket -S /var/run/MysqLd/MysqLd.sock database

如果跑步

MysqL

让你登录时指定-uroot,尝试不指定套接

MysqLdump database

我刚刚注意到你为MysqLdump指定的套接字是

[MysqLdump]
socket = /var/run/MysqLd/MysqLd.sock

您需要确保套接字也是在my.cnf的[MysqLd]部分下定义的

如果这不存在

[MysqLd]
socket = /var/run/MysqLd/MysqLd.sock

然后运行此查询

SHOW VARIABLES LIKE 'socket';

并确保套接文件名称和路径.

您可以让System DBA为您添加自定义用户

GRANT ALL PRIVILEGES ON *.* TO tyler@localhost;

然后,你可以运行

MysqLdump -utyler --protocol=socket -S /var/run/MysqLd/MysqLd.sock database

这不安全.泰勒应该有一个密码.所以,运行这个:

SET sql_LOG_BIN=0;
GRANT ALL PRIVILEGES ON *.* TO tyler@localhost IDENTIFIED BY 'tylerspasssword';

那么你可以做到

MysqLdump -utyler -p --protocol=socket -S /var/run/MysqLd/MysqLd.sock database

试试看 !!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐