mysql学习系列:总结数据库连接不上的数种情况,问题编号:ERROR 1045 (28000)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql学习系列:总结数据库连接不上的数种情况,问题编号:ERROR 1045 (28000)相关的知识,希望对你有一定的参考价值。

(文章目录)

场景

今天重启CDH的时候,发现重启报错,查看日志才发现是mysql数据库连接不上。在尝试解决的过程中,踩到一些坑。所以总结一下,并分享给大家看看,减少大家伙继续踩坑的次数。那么,连接报错会提示什么呢?如下:

ERROR 1045 (28000): Access denied for user hive@datanode01 (using password: YES)

环境

软件 版本
mysql 5.6.40
Centos 7

正文

接下来,我会罗列几种连接报错的原因。

一、密码输入错误

这种情况很司空见惯,有时候忘记密码了,有时候打错密码了。所以,遇到这种情况的时候,先仔细查看自己的密码是否输对了,如果输错密码了 那就重新输对就行!反之,如果是忘记密码,就得费一番功夫了。 然后,这里针对忘记密码,就得区分两种情况了:

i、root账户忘记密码

关闭mysql服务

ps -ef|grep mysqld|grep -v grep|awk print $2|xargs kill -9

免密启动mysql服务

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

免密码登录

mysql -uroot

修改密码

 UPDATE user SET Password=PASSWORD(密码) where USER=root;

刷新配置

FLUSH PRIVILEGES;

重新启动mysql服务

mysqladmin -uroot -p shutdown 

mysqld_safe &

ii、非root账户忘记密码

不是root账户忘记密码了,就直接用root账户重新更新密码即可。

UPDATE user SET Password=PASSWORD(密码) where USER=用户名称;
FLUSH PRIVILEGES;

二、mysql.user 未赋予权限

用户没有访问权限或者没有对应访问地址的权限。比如,user表配置的host地址是datanode01,那如果在namenode01访问,就会报连接不上。那么,可以使用grant命令来赋权,grant可以赋值的权限可以看文末的扩展。比如我们给hive用户,赋权hive数据库的访问权限,登录密码为test,那么可以执行以下命令:

# 赋予部分权限,不限访问地址
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on hive.* to hive@% identified by test;

#or 赋予全部权限,不限访问地址
GRANT  all privileges  on hive.* to hive@% identified by test;

#or 赋予全部权限,限制访问地址,datanode01可以自定义,主要为访问的地址
GRANT  all privileges  on hive.* to hive@datanode01 identified by test;

执行完毕之后,记得刷新权限

FLUSH PRIVILEGES;

三、mysql.user 存在匿名用户

以上情况都排除过了,但是还是登陆不上。那就可能是存在匿名用户。即user存在可以匹配上的多个host数据,如图:

Host User Password
% test *19F211E90F007D52C9E9B0127238E56057782
localhost *19F211E90F007D52C9E9B0127238E56057781

从上图可以看出,用户test在表user里面有多条记录,其中存在匿名用户,而且密码和test用户的密码不一致。这样,用户在登陆mysql的时候,mysql会进行选择,选择了匿名用户的这条记录,然后密码不匹配,就会报这个问题。那么匹配的规则是怎么样的呢?

那么如何解决这个问题呢,这个有两种方案:

i. 新插入一条Host为需要访问的地址的记录

ii. 删除匿名用户的记录

记得,无论使用哪种方案,都要刷新权限,不然除非启动mysql服务器,否则都是不生效的。

FLUSH PRIVILEGES;

总结

针对mysql数据库连接不上的情况,博主罗列了几种情况。一般按照这几种情况,依次排查,都可以解决这个问题。当然,如果有其他情况,也欢迎大家留言。谢谢大家!

扩展

grant命令可以赋予的权限

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏; 如果有好的讨论,可以留言; 如果想继续查看我以后的文章,可以点击关注 可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!

以上是关于mysql学习系列:总结数据库连接不上的数种情况,问题编号:ERROR 1045 (28000)的主要内容,如果未能解决你的问题,请参考以下文章

ssh服务突然连接不了案例总结

大白话系列MySQL 学习总结 之 MySQL 的架构设计

远程连接 mysql 数据库连接不上的解决方案

大白话系列MySQL 学习总结 之 初步了解 MySQL 的架构设计

MySql安装完成后,Navicat连接不上的问题

本机上的mysql突然连接不上,控制面板中mysql的服务无法启动