centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法

时间:2020-03-26
本文章向大家介绍centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法,主要包括centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

centos虚拟机下的mysql登录时出现Access denied for user 'root'@'localhost' (using password: YES) 及外部拒绝访问的解决方法

先说下我的情况,我用的mysql是docker部署的。然后在使用过程遇到两个问题。

1.外部拒绝访问,就是想Navicat或者sqlyog的外部软件访问报错。

2.在linux下的mysql命令行登录也出现权限问题。

第一个问题的解决方法挺简单的,就是授予权限。但是授予权限是要在mysql命令行下执行的,然后就因为第二个问题,mysql登录不进去,给卡死了。下面说下解决方法。

1.MySQL登录出现权限拒绝问题

解决方法就是重置密码。。没错,没有什么方法比‘**重启‘**更管用。步骤如下:

1.跳过认证启动

首先进入到容器中。

mysql是我的数据库名称。命令的意思是:

然后编辑mysql配置文件,使用vi终端编辑器

vi /etc/mysql/conf.d/docker.cnf

在docker.cnf文件下新增skip-grant-tables

然后保存退出。这样下次登录mysql就不用密码了。然后重新启动容器。

docker restart mysql

这一步要说下vi终端编辑器的工作模式。

编辑模式:按”i“进入,按esc退出编辑模式进入命令模式

命令模式:就是最开始的状态

末行模式:在命令模式下按“:”进入,末行模式输入wq就是保存退出(w是write,q是quit)。q!是强制退出

2.重新设置密码

同第一样在进入mysql容器后,直接输入mysql就登录成功。

接着重新设置密码。

#使用mysql自带的mysql数据库。

use mysql;

#更改user表下的密码。

UPDATE user SET authentication_string = password ( 'a123456' ) WHERE User = 'root';

#刷新权限

flush privileges;

#退出

quit;

注意!!!这里有个坑,user表的密码的属性名是authentication_string

3.删除第一步的跳过认证启动

重新进入docker容器。在docker.cnf文件下删掉skip-grant-tables

4.重启mysql容器

再次重新启动后,就可以登录mysql。

2.外部拒绝访问问题解决

在mysql命令行下输入:

mysql> GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
**这里用户名和密码都是你自己的。**另外说一下grant命令的解释:

grant 权限1,权限2, ... 权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';

权限1,权限2,... 权限n 代表 select、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdown、process、file 等14个权限。
当权限1,权限2,... 权限n 被 all privileges 或者 all 代替时,表示赋予用户全部权限。
当 数据库名称.表名称 被 . 代替时,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是IP地址、机器名和域名。也可以用 '%' 表示从任何地址连接。
'连接口令' 不能为空,否则创建失败。

参考资料

https://blog.csdn.net/u012467855/article/details/81266470
https://blog.csdn.net/qq_36675754/article/details/81381341

原文地址:https://www.cnblogs.com/rockyh-/p/12572279.html