受MySQL 8折磨的灵魂

重装系统是我不喜欢的几件事情之一

Ubuntu 20.04默认安装的MySQL版本已经是MySQL 8.0.20了,昨天我又受了一次MySQL折磨

sudo apt-get install mysql-server

安装好MySQL后,按照提示,进行mysql_secure_installation配置。
设置好root密码,保存了test库

但是PHPMyAdmin死活进不去,无限认证失败。

在服务端输入
mysql -h localhost -u root
根本没有让你输入密码的机会,直接报错。

切换到系统的root账号,输入
mysql -uroot
直接能MySQL数据库里,同时SHOW DATABASES;发现并不存在test库。

一番查询之后,才知道MySQL已经升级了默认的账号认证方式,改为了更先进,更高效的caching_sha2_password

注意这个密码认证,目前PHP只有Mysql_xdevapi这个扩展能支持,就是PHPMyAdmin是根本用不了的。

只能更新my.cnf配置,添加
default_authentication_plugin=mysql_native_password
改回落后腐朽的账号密码认证

重启:/etc/init.d/mysql restart

登录进入:mysql -uroot -p

提示输入密码,哭了,总算出现这个界面了。默认没有密码,直接回车进入。

刷新下旧用户的密码和权限

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Your password';
FLUSH PRIVILEGES;

注意,Your password一定要设置复杂点

重启MySQL后,恢复正常

MySQL虽然恶心。。但是安装,卸载还是很流畅。。在经历了3次安装卸载之后,我也尝试过MariaDB,结果更恶心了。安装进程永远卡在87%,但其实已经是安装启动完成。卸载完MariaDB再安装回MySQL竟然一直报错。

又是一番折腾,再发现MariaDB安装的时候在/lib/systemd/system目录里写入了mysql.service之类的启动文件。。卸载的时候却没有删除,当安装MySQL的尝试使用这个文件启动时,自然就报错。

安装好之后,需要设置binlog文件过期时间
set global binlog_expire_logs_seconds=60*60*24;