项目场景:
提示:这里简述项目相关背景:
记录一下navicat远程连接数据库失败,解决连接远程服务器MySQL“ACCESS DENIED FOR USER‘ROOT‘@‘IP地址‘“问题
问题描述
提示:这里描述项目中遇到的问题:
navicat远程连接数据库失败,出现以下报错。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/976a64cd9f9e490aa760e0a78fa6967f.png
告诉我用户root拒绝访问。
原因分析:
提示:这里填写问题的分析:
现在来一步步排查
1 难道是我的密码错误?
我登录我的远程连接服务器,
将密码了修改一下(大家可以去搜忘记密码教程)
输入mysql -u root -p 输入密码,又成功访问/到了mysql,
连接navicat试试,结果还是不行
那说明不是密码的问题(划重点!!!!)
2难道是没有给root用户权限吗
输入show grants;
出现划红线字符串,果然是没有给root权限,这个的意思就是本数据库只允许本地访问,其他ip的主机访问不到
解决方案:
提示:这里填写该问题的具体解决方案:
跟着教程输入,
1改表法
发现root的host已经是对所有ip都开放了
2 授权法
跟着教程敲
```java
#给用户授权
grant all privileges on *.* to "root"@"%";
``
果然成功了
接着再输入以下,刷新一下用户权限
flush privileges;
本来以为皆大欢喜,输入
show grants;
发现/数据库还是没有对外开放权限
3 难道说数据库需要重启一下?
先使用以下命令查看数据库状态,是active证明数据库是启动的,
systemctl restart mysqld
再使用以下命令重启一下
service mysqld restart
连接一下navicat,还是错误
4 难道说我的数据库端口不是3306吗?
输入以下代码,结果出来是3306啊
show global variables like 'port';
很奇怪,为什么我修改root用户可以访问的ip地址失败呢
5难道是我的3306端口没开?
输入以下命令,服务器的端口也开了,腾讯云上面的防火墙也开了3306
firewall-cmd --list-ports
6 查看错误日志,爆could not be resolved: Name or service not known
百度说我my.cnf没有加这个参数
skip-name-resolve
然后重启mysql
结果navicat还是连接不上
总结:mysql感觉可能被弄坏了
7最后再努力一波,连不上这云服务器可就白费了,重置密码
本博主特意去请教了高人。
高人看了看,想起对我智障一般的印象,轻描淡写说让我把密码重改试试。
当时我反应贼大,不可能密码错误,我还访问本地的数据库成功了呢,证据如下:
怎么可能犯这种错误,你在 开什么玩笑
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7fdf23173cbf4456a52887b2debc0277.png
在大佬再三肯定加催促下,我不以为意地修改了密码
alter user 'root' identified by '密码';
flush privileges;
居然!!!!!!!!五雷轰顶
博主当时表情真的如下:
整个人当场从椅子上摔下来,雷的我前仰马翻
他说:哈哈,果然没错把,只有你们新手才能整出这么奇异的问题~~~
我说:不!一定是哪里出错!!!
他说:没有哪里出问题,就是你输入错了,不行你再试试
我不死心,把密码又改回去,发现,嘶。。。连上了。。。
博主当时内心os:
8 有种80岁老大爷半夜走了八百公里,挑扁担来回800次浇菜,第二天起来发现是别人菜地的无力感加羞耻感
始终怀疑我聪明的脑瓜子怎么会出这种错
一定是系统的问题
好。。。我信大佬。。。死心了
再一次巩固了我在大佬心中智障印象的地位
本来以为这个博客是科普篇,没想打是搞笑篇