二进制文件压缩包安装,参照mysql官档,和5.7区别不大
官档:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html 下载地址:https://dev.mysql.com/downloads/mysql/ ,选择linux通用版

1、安装依赖

yum install libaio

2、创建用户

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
##使用-r和-s /bin/false选项来创建对服务器主机没有登录权限的用户,可忽略

3、解压安装
解压到/usr/local(自定义)下。注意从MySQL Server 8.0.12起,压缩算法从Gzip更改为XZ,并且通用二进制文件的文件扩展名从.tar.gz更改为.tar.xz

cd /usr/local
tar xvf /path/to/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql

4、创建目录
首先,创建数据目录、日志目录等,实际生产需单独挂载在其他存储上

mkdir -p /app/db_data/mysql3306/data
mkdir -p /app/db_data/mysql3306/logs
mkdir -p /app/db_data/mysql3306/tmp
chown -R mysql: /app/db_data/

另外,根据官档建议创建mysql-files目录。mysql-files目录是用作secure_file_priv参数指定导入、导出文件的路径(以前确实没用过,先建为敬)

cd mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

4、上传新的配置文件(一般不会用系统自带的/etc/my.cnf)

rm -rf /etc/my.cnf
rz

5、设置环境变量
我这里直接修改/etc/profile,修改后注意source使其生效,设置后可直接执行mysql命令

export MYSQL_HOME=/usr/local/mysql
PATH=$PATH:$MYSQL_HOME/bin

6、初始化
没有屏显信息,执行后根据数据目录和error.log判断是否成功

mysqld --defaults-file=/etc/my.cnf --initialize-insecure  --user=mysql

需要注意的几点:

  • 试了几次,发现只有跟官档指示一模一样,把–defaults-file放到最前面才行,不然提示没有–defaults-file这个选项(此处有黑人问号脸)
  • 个人习惯使用–initialize-insecure选项暂不生成root密码(因为找这个随机密码有点麻烦),首次连接时在设置,觉得不OK的话直接使用–initialize,随机密码生成在log里。
  • 强烈建议初始化之后仔细阅读error.log,包括warning部分,这样你会发现哪些参数设置的不规范

7、后台启动

mysqld_safe --user=mysql &

启动后注意检查进程和端口,关于mysqld启动和mysqld_safe启动的区别,请查看这篇

8、连接

mysql

9、查询系统用户并设置密码、权限

mysql>use mysql;
mysql> select host,user,authentication_string from user;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; #8版本不支持GRANT ... IDENTIFIED BY...了
mysql> flush privileges; #有说正规GRANT、REVOKE操作是可以不加的

安装过程到此结束

注意:因为8版本改进了密码策略,旧的客户端或协议连接会报错,比如workbench、navicat。可安装新的客户端,或修改参数default_authentication_plugin=mysql_native_password并重置密码的方式登录。