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

您所在的位置:网站首页 mysql本地数据库连接不上怎么回事 UBUtu 20.04 + MYSQL8.0 数据库连接不上 终极解决办法

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

2024-07-13 12:48| 来源: 网络整理| 查看: 265

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 啊!这个好的解决方式,竟然查了好多博客没有人用,我也是醉了。。

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

附上卸载安装步骤:

卸载步骤:

查看MySQL依赖 : dpkg --list|grep mysql

卸载: sudo apt-get remove mysql-common

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

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

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

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

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

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3