UBUtu 20.04 + MYSQL8.0 数据库连接不上 终极解决办法

UBUtu 20.04 + MYSQL8.0 数据库连接不上 终极解决办法

遇到一个大坑啊,。。奋战到凌晨2点。。。

几天用 django 项目搭建mysql 数据引擎时,总是报错连接不上,其原因是本地UBUtu 系统装mysql 时没有装好的缘故。

总是连接不上,网上查了各种修改的方法,改的乱七八糟的,最后重装了好几次一步一步来才把问题给解决了。

现在回头看这个问题本来应该是很简单的问题,是自己慢慢的搞复杂了,刚开始 用 sudo mysql -uroot -p 回车就可以登上msyql,

进行如下步骤就可以解决的:

1 use mysql;   然后敲回车
# 第二步也是个坑,网上好多都是下面的命令,这个好像是5.x 版本的命令,我的是8.0的MySql 导致一直出错正确的命令在下面
2 update user set authentication_string=password("你的密码") where user="root"; 错误的   然后敲回车 
  update user set authentication_string="123456" where user="root"; 正确的写法,去掉password(),然后敲回车 
3 flush privileges;  然后敲回车
4.exit 退出
5.service mysql restart    mysql  重启

这个是改变root 的登录密码,好多说这个就可以退出登录,BUT 我的还是不行报错!!!(好像是1045的错误)

继续爬坑。。。

再次登录数据库 mysql 库,执行:
select user, plugin from user;
查看是plugin 为 auth_socket 需要改为 mysql_native_password
update user set authentication_string="123456",plugin='mysql_native_password' where user='root';
查看改成功后,再次退出,重启mysql

这个步骤就结束后,又说就可以解决了,BUT!BUT 我的还是报错,登录不上!!!!

后面又看到,mysql8.0的执行命令有问题需要执行下面的命令:

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
# 执行了这个命令还是报错,ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
查询  select user,host from user;
发现 root 的 host 为 ‘%’ 已经改成远程登录授权了,因此新的命令改为
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
又来了个BUT,报错 ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
还好帖子下面的兄弟有解决的,先把  authentication_string 置为空,再执行上面的命令,还是不行就是因为设置的密码过去简单,通过不了还是会报 ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%',改成一个复杂一点密码就OK了!!!
至此终于是把问题给解决了。。。。

如果遇到登录不上的情况看网上有几种解决的办法,

1、更改配置文件免密码登录 (好像不适应8.0版本的,反正我是没有找到这个配置)

# vim /etc/my.cnf
在 [mysqld] 末尾加上 skip-grant-tables  
保存退出就可以免密登录

2、使用默认密码登录

进入到etc/mysql 目录下,查看debian.cnf文件
里面 password 就是默认密码,user 为用户名 debian-sys-maint
因此可以使用这个账户密码来登录,
mysql -udebian-sys-maint -p
用这个方式来登录真是个忧伤的故事,默认密码又多又长还有大小写,0和O傻傻分不清楚,一直输错一直输 一直输错一直输。。。折腾了好久也是没有能登录进去,直到感觉自己是没问题时,才意识到是数据库的问题, 于是乎又走上了卸载重装的步骤。。。
后来才发现可以使用  mysql -udebian-sys-maint -pxedvSNKdLavjuEWV 将密码复制过来直接使用,不用复制。。我的那个心呢,痛痛痛啊!只是有个警告,说密码明文了不安全,BUT I DON'T CARE 啊!这个好的解决方式,竟然查了好多博客没有人用,我也是醉了。。

登录后就可以放心的慢慢改,不能登录是啥也改不了。

附上卸载安装步骤:

卸载步骤:
  1. 查看MySQL依赖 : dpkg --list|grep mysql

  2. 卸载: sudo apt-get remove mysql-common

  3. 卸载: sudo apt-get autoremove --purge mysql-server-8.0(这里版本对应即可)

  4. 清除残留数据: dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P

  5. 再次查看MySQL的剩余依赖项: dpkg --list|grep mysql(这里一般就没有输出了,如果有执行下一步)

  6. 继续删除剩余依赖项,如:sudo apt-get autoremove --purge mysql-apt-config

    【在执行过程中有的需要sudo】

    【第6部执行完了就彻底删除了】

安装步骤:
  1. 安装mysql-server sudo apt install mysql-server
  2. 初始化配置信息 sudo mysql_secure_installation
    • VALIDATE PASSWORD COMPONENT…(使用密码强度校验组件) 输入: n
    • New Password:(设置新密码,并重复一遍)
    • Remove anonymous users (删除匿名用户) n
    • Disallow root login remotely(拒绝远程root账号登录) n
    • Remove test database and access to it(移除test数据库) n
    • Reload privilege tables now (现在就重新载入权限表) y
  3. 登入到数据库并配置远程访问
    1. sudo mysql -uroot -p
    2. 配置root用户外网也可以连接并登录
      • use mysql
      • update user set Host='%' where User='root'; # 这里插一句如果表中已经存在的话就会报错,请认真查看报错信息,已经设置的话就不需要再设置了
      • GRANT ALL ON *.* TO 'root'@'%';
      • FLUSH PRIVILEGES; # 刷新权限

致敬每个奋战到凌晨苦命的娃!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值