我可以使用本地工具使用root帐户连接远程服务器的mysql。但是我无法在远程服务器mysql -u root -p xxx
中进行连接。
# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
如果我没有输入root帐户的密码,则可以直接登录。
但是我无法更改任何内容,甚至无法选择数据库:
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';
答案 0 :(得分:0)
如您所说,您可以通过kill -9 PID
强制终止mysql进程。
然后启动mysql安全模式:
/usr/bin/mysqld_safe --skip-grant-tables
打开另一个ssh连接。
在新的ssh connect中:
# 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
并通过service mysqld start
重新启动mysql,如果出现与mysql.sock
相关的错误,则可以在SO上找到那些问题的解决方法,那与该问题无关。
如果是:
ERROR 2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'(111)连接到本地MySQL服务器
因为是用力杀死了mysql,所以您可以运行/var/lib/mysql/mysql.sock
,然后启动
如果遇到此问题:
ERROR 2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'(2)连接到本地MySQL服务器
sudo setenforce 0
service mysqld start