这个问题一直困扰着我的大脑几个小时.我一直在尝试使用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