linux安装mysql8后的登陆问题

通过宝塔面板快速安装了mysql8,然后到了要登陆mysql的时候想起来不知道密码,这时候就要强制重置mysql密码了。

  1. 修改/etc/my.cnf中的mysql配置,添加一句话来跳过密码验证
  2. 然后重启mysql服务service mysqld restart
  3. 重新登陆mysql,mysql -uroot -p,弹出输出密码直接回车就可以
  4. 选择mysql数据库,use mysql
  5. 修改user表中root用户的密码:update user set password=password('123456') where user='root';
    提示语法错误,百度了一下是因为password字段改成了authentication_string
    然后我就输出update user set authentication_string=password('123456') where user='root';
    结果还是提示语法错误,然后我就查了一下user表select user,authentication_string from user,发现是有结果的

    说明上边那句话出错的只能是我不知道用来干啥的password()这个函数了,然后我就把这个去掉了
    update user set authentication_string='123456' where user='root';
    然后就执行通过了。
  6. 刷新权限:flush privileges
  7. 把/etc/my.cnf中刚才添加那句放删掉
  8. 重启mysql服务
  9. 再次登陆,使用刚才修改的123456密码发现是不正确的。
  10. 再次百度,发现password()这个函数在mysql8后用不了了,然后user表中存储的authentication_string字段中的密码也都是经过转化的,所以直接改成123456是不可以行的,还找到了123456转化对应的值:【*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9】,把密码设置成这样就可以用123456登陆了
    update user set authentication_string='*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' where user='root';

现在在服务器上可以登陆mysql了,然后我用navicat连接又出现了新的问题

报错:1130-host ... is not allowed to connect to this MySql server
是因为root用户没有远程登陆的权限。
接下来修改mysql为中的user中root用户对应的host字段,将其改为通配符%即可
user mysql; update user set host='%' where user='root'; flush privileges;
这样navicat就可以成功连接了。

posted @   程长新  阅读(471)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示