mysql 无法创建socket,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

试试看 !!!

标签:ubuntu,bash,mysql,mysqldump

来源: https://codeday.me/bug/20190718/1493590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值