Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 378|回复: 0

centos下MySQL登录1045问题解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-17 19:47:17 | 显示全部楼层 |阅读模式

    由于需要在centos下部署整个应用,自然少不了对数据库的操作。但很多人可能会遇到一些问题,比如创建用户成功,但是却无法登录。

    无法登陆一般就两个原因。第一,远程访问端口没开,第二个原因就是密码错误了(很奇怪,我们登录时的密码明明是正确的,但还是会提示密码错误,我也不知道这是什么原因,有可能是编码之类的吧)

    远程访问端口没开这种情况比较好解决,如果用的云服务器,在控制台去配置安全组,打开相应端口就可以了。

    这里说一下第二种错误,这个比较坑。第二种情况往往会报错显示:1045    Access denied for user 'root'@'%' (using password:YES)。

    我把完整流程大致写一遍。我的操作系统是centos7.4,MySQL版本是5.7。

    首先登陆mysql,我的是root用户。登录命令是

    mysql -u root -p

    输入登录密码后,窗口变化如下图:

     

    首先看一下现在系统里面有哪些用户,以及用户的具体权限,具体命令:

    查看用户:

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

    查看具体用户的权限:

    show grants for 'root'@'%';

    窗口变化如下图:

     

    接下来我要创建一位用户,让改用户能够远程访问数据库,并对其进行操作。具体命令如下:

    create user zhangsanidentified by 'zhangsan.CQU.2020.lisi';
    grant all privileges on *.* to zhangsan@'%' identified by 'zhangsan.CQU.2020.lisi';

    或者一条命令直接搞定:

    grant all privileges on *.* to 'zhangsan'@'%' identified by 'zhangsan.CQU.2020.lisi' with grant option;

    操作完成后,千万记得刷新,否则可能不生效,命令如下:

    flush privileges;

    此时再查看用户,就能发现多了一位用户,也就是我们刚才创建的用户。

     

    输入exit,退出MySQL,然后试着用zhangsan这个账户登录一下。

     

    问题顺利出现了,就是登不上去,接下来去解决这个问题咯。

    首先,找到自己的MySQL的my.cnf文件,(我的在etc文件夹下面,不同的人可能不一样,用Linux命令按条件查找即可)

    打开文件后(vi my.cnf),进入编辑模式(a)找到mysqld关键字,在mysqld下面添加skip-grant-tables,保存退出(先esc,再:wq),如图:

     

     将注释去掉即可。

    然后重启mysql,命令如下:

    service mysqld restart

    接下来就是重新登录,然后修改密码啦。

     

     提示输入密码那里,直接enter,跳过密码验证,登陆成功。接下来进入mysql数据库,然后修改密码,命令如下。

    use mysql

    修改密码:

    update user set authentication_string=password("zhangsan.CQU.2020.lisi") where user="zhangsan";

    如图:

     

    然后退出mysql,将刚刚修改过的my.cnf文件改回来,并重新启动mysql。

     

    可以看到登录已经成功了,远程连接也能成功,就不演示了,如果远程登录还不成功,检查一下端口设置,是否开启了远程访问。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-10 03:23 , Processed in 0.067642 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表