打开Mysql官方yum安装向导:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
先去下载最新版mysql的仓库(某些英文不太好的童鞋会懵逼,点击下图标识地方即可下载,楼主是在Centos7系统里安装的,系统不一样的童鞋需自行选择下载地址)
下载完后 上传到虚拟机里,这里上传路径为:/usr/etc/mysql80-community-release-el7-1.noarch.rpm
切换目录 并安装源:
cd /usr/etc
yum localinstall mysql80-community-release-el7-1.noarch.rpm
关闭mysql5.7:
yum-config-manager --disable mysql57-community
开启mysql8:
yum-config-manager --enable mysql80-community
接下来可以执行安装了:
yum install mysql-community-server
一路执行下去后 就可以成功安装了mysql8。
启动mysql:
service mysqld start
查看mysql初始化的密码(使用此密码登录后,需尽快修改密码,不然很快就登录失效,具体多久我也不太清楚......)
grep 'temporary password' /var/log/mysqld.log
然后用显示出来的密码 登录mysql。
此处必须使用官方指定的修改密码方式来修改密码,楼主用了之前setpassword那种方式 以及百度出来的其他方式都不行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
设置远程登录:grant all privileges on *.* to root@'%' identified by "password";
这句话根本无法执行!
使用:
use mysql;
update user set host = '%' where user = 'root';
这样还没完,远程依然无法登录,百度其他各种在sql上设置的要么无法执行,要么无效。
只能修改配置文件了:
修改/etc/my.cnf 在[mysqld]下添加:bind-address=0.0.0.0
这里是做测试用,允许任何IP链接
重启mysql
systemctl restart mysqld.service
至此mysql终于可以远程链接了,用Mysql workbench链接的童鞋会发现 之前用的好好的workbench,现在不能链接mysql8了。原因版本不兼容了。需安装最新版,这里又是一个坑,mysql官网找了一圈 没有workbench8版本。
需要卸载当前的workbench(必须卸载,不然安装不上最新版),然后下载并安装最新版Mysql安装器,下载地址:https://dev.mysql.com/downloads/installer/
这里只有32位的下载链接,上面已经注明:32位的在64位的机器上安装 就是64位的了。
下载完后,按需安装就OK了 这里不多讲了。继续下一个坑。
使用java jdbc远程链接mysql8,发现报错:
Unable to load authentication plugin 'caching_sha2_password'
这是个什么鬼?之前没遇到过呀,于是乎百度一番。有之前的前辈在老版本中遇到过此类错误,抱着试试看的态度试下:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root1';
后面的那个“root1”为mysql的登录密码,需改为自己上门设置的密码。
然后flush privileges;
再次跑起java项目,这时项目已经可以成功跑起,说明jdbc链接正常了。
至此 还是不死心 看看还有没别的坑,于是把公司项目的数据库导进去,然后把项目jdbc链接指向mysql8,项目运行,随便访问几个页面看看,果不其然 又报错了:
Expression #1 of ORDER BY clause is not in SELECT list, contains aggregate function; this is incompatible with DISTINCT
虽然看出来不是什么严重问题,可以通过修改sql语句搞定,但懒得弄了,本来就想看看新版本好不好用,好用的话公司新项目就用新版本了,现在发现新版的Mysql坑还是不少,到时万一遇到比较深的坑,就坑爹了。
还是观望段时间再看吧。