坚持最简。
前提,使用root账号操作。

1、安装

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum --enablerepo=mysql80-community install -y mysql-community-server

可以看到现在安装已经是8.0.20的版本了。

2、【可选】重新初始化

安装完即可启动,但是有一个问题,mysql8以前是默认支持表名大小写不敏感的,但是8以后,不再默认支持,你也许想当然觉得可以通过配置文件指定
lower_case_table_names=1
修改,但是mysql8初始化以后,就不可以修改此参数值了。见文档
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
所以如果该配置要修改一定要在初始化时修改。如果你的代码中有表名大小写不同写法的语句,则建议开启该配置。
那么就提供了以下备案。

#重新用新的参数初始化一遍
sudo mysqld --initialize --lower-case-table-names=1 --user=mysql --console

PS:mysql8配置默认表名大小写敏感,说明是趋势,以后注意建表和查询语句中表名大小写要一致了。

3、修改配置参数并启动

初始化时的参数值,要与配置文件中的参数值一致,才可以启动成功。
如果执行了第2步,就必需要在/etc/my.cnf上加上该参数配置,
lower_case_table_names=1
但是如果直接启动,则不需要加上该参数,去掉或修改为0即可。

另一个要说的参数为
default-authentication-plugin=mysql_native_password
这个是默认密码加密方法的配置参数,mysql8使用新的密码加密方式,所以老的客户端工具是不支持,如果需要兼容以前,则需要添加该配置,可以看到配置文件中这行是注释掉的,解注即可

#修改配置文件,并保存
vim /etc/my.cnf

#追加以下配置,并保存退出
default-authentication-plugin=mysql_native_password
lower_case_table_names=1

max_connections=5000
wait_timeout = 600
interactive_timeout = 600
back_log=128
max_user_connections= 600
max_connect_errors = 2000
character-set-server = utf8mb4

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

#启动mysql
sudo service mysqld start

4、修改初始密码

当然Mysql在不修改密码前无法使用,找到原始随机密码,并修改它。

#找到默认密码,如果进行过步骤2,会发现有两个密码,用最后那个就行
sudo grep 'temporary password' /var/log/mysqld.log
# 登录
mysql -uroot -p

# 使用命令修改密码即可
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
flush privileges;

做完以上步骤就可以用修改后的密码登录啦。
但是mysql的默认root是只能localhost本地有访问权限的,而且虽然我们通过步骤2修改了密码的默认加密方式,即这句配置:
default-authentication-plugin=mysql_native_password
但是可以看到mysql仍然使用的是新版密码加密方式

select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

很多老的客户端工具是不支持该加密方式的,那么解决方案第5步一起说。

5、当然建议创建一个子账号来登录mysql。

create USER 'admin'@'%' IDENTIFIED BY '你的新密码' PASSWORD EXPIRE NEVER;
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

可以看到新账号已经加上,并且加密方法已经是兼容旧版的值了。

当然如果你仍然觉得要使用root,并修改密码和开放权限,那么就这样改

update mysql.user set host ='%' where user = 'root';
flush privileges;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新密码' PASSWORD EXPIRE NEVER;
flush privileges;

mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| admin            | %         | mysql_native_password |
| root             | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

其他问题

当然如果你发现其他问题各种无法启动,也不用担心,更不用重新卸载安装。
而且假如你发现你一开始的操作没有设置lower-case-table-names=1,测试时发现代码跑起来又有问题了,现在又需要修改,只需要把数据库dump一下,使用以下命令重新初始化安装即可。
删除旧文件

rm -rf  /var/lib/mysql /var/lib/mysql-files
mkdir /var/lib/mysql-files

再重新从步骤2开始,即可。