Mysql无法登录的问题

本文最后更新于:2022年6月17日 下午

问题描述:

mysql版本:5.7.35,linux系统:centos7

远程登录和linux服务器本地登录都出现Access denied for user ‘root‘@’localhost’ (using password: YES/NO) 的报错。一个常见的原因是密码错误,但作者遇见此问题时确信密码是正确的,因为之前都是使用的同一账户密码远程登录没有问题。

登录服务器终端,发现本地登录也是同样的报错,于是先在配置文件 /etc/my.cnf中添加一行

1
skip-grant-tables

这样可以忽略权限表,从而可以临时不要密码直接登录 mysql 控制台。

然后进入 mysql 控制台,查看一下 user 表中的数据,发现居然没有 root 账户,所以需要先添加一个 root 账户,然后授权。以下操作均在 mysql 控制台中进行:

1
2
3
use mysql;
// @后的'localhost'代表仅支持本地登录,如果要远程登录则填 root@'%'
create user root@'localhost' identified by '123456';

此处参考文章[1],原作者此处为:

1
create user 'root'@'localhost' identified by '123456';

在我的环境中会报错 Operation CREATE USER failed for ‘root‘@’localhost’。

然后刷新:

1
flush privileges;

然后授权:

1
2
3
//赋予所有库所有表操作权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
flush privileges;

最后恢复mysql配置文件:/etc/my.cnf,删除掉之前添加的 skip-grant-tables。再重启mysql服务即可。

服务器端推荐的mysql启动和停止的方式:

1
2
3
4
//启动
{mysql_dir}/bin/mysqld_safe &
//停止
{mysql_dir}/bin/msyqladmin -uroot -p shutdown

s参考文章1


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!