我可以使用本地工具连接远程服务器';使用根帐户访问mysql。但是我不能在远程服务器`mysql-u root-pxxx`上连接

我可以使用本地工具连接远程服务器';使用根帐户访问mysql。但是我不能在远程服务器`mysql-u root-pxxx`上连接,mysql,Mysql,我可以使用本地工具使用根帐户连接远程服务器的mysql。但是我不能在远程服务器mysql-u root-pxxx上连接 # mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 如果我没有输入根帐户的密码,我可以直接登录 但我无法更改任何内容,甚至无法选择数据库: mysql> use mysql; ERROR

我可以使用本地工具使用根帐户连接远程服务器的mysql。但是我不能在远程服务器
mysql-u root-pxxx
上连接

# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
如果我没有输入根帐户的密码,我可以直接登录

但我无法更改任何内容,甚至无法选择数据库:

mysql> use mysql;
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql' 
我也无法阻止mysql:

# /usr/bin/mysql stop 
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'stop'
即使是我也不能扼杀这个过程

[root@w9 templates]# ps -ef | grep mysql
root     23112 31156  0 09:44 pts/1    00:00:00 grep --color=auto mysql
root     31453     1  0 7月02 ?       00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    31660 31453  0 7月02 ?       00:19:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
[root@w9 templates]# ps -ef | grep mysql | grep -v grep
root     31453     1  0 7月02 ?       00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    31660 31453  0 7月02 ?       00:19:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
[root@w9 templates]# kill -QUIT 31453
[root@w9 templates]# ps -ef | grep mysql | grep -v grep
root     31453     1  0 7月02 ?       00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql    31660 31453  0 7月02 ?       00:19:05 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
[root@w9 templates]# 
之后我
kill-9
mysql


我不知道问题是否由我的命令引起:

use mysql;

update user set host = '%' where user ='root' and host='localhost';

正如您所说,您可以通过
kill-9pid
强制杀死您的mysql进程

然后启动mysql安全模式:

/usr/bin/mysqld_safe --skip-grant-tables
打开另一个ssh连接

在新的ssh连接中:

# mysql
mysql>use mysql
mysql>update user set host = 'localhost' where user ='root' and host='%';
mysql>flush privileges;
mysql>exit
现在您可以关闭安全模式窗口:

pkill -KILL -t pts/1
然后通过
服务mysqld start
重新启动mysql,如果出现与
mysql.sock
相关的错误,您可以在上找到这些问题的解决方案,这与此问题无关

如果是:

错误2002(HY000):无法通过套接字'/var/lib/MySQL/MySQL.sock'(111)连接到本地MySQL服务器

因为是强制杀死mysql,所以可以rm
/var/lib/mysql/mysql.sock
,然后启动

如果您收到此问题:

错误2002(HY000):无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器

sudo setenforce 0 
service mysqld start