我选择的是 Debian 系统进行安装MySQL8,关于系统选择请参考《MySQL 系统以及硬件选择》 MySQL8 通用Linux 系统也就是二进制程序绿色安装 还有rpm deb, 他们之间没有任何区别,只是绿色安装难度高一点。 当然还有 源码编译安装 可以在编译的时调优编译器配置 需要个人超高C++水平,当然默认已经很好了,水平达不到不建议修改

MySQL 官网

下载并解压

  1. # 更新系统
  2. apt update
  3. # 安装wget vim 等工具
  4. apt install wget vim -y
  5. # 执行下载
  6. wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
  7. # 执行解压
  8. tar -xvf ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
  9. #root@VM-0-13-debian:~# ls
  10. # mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
  11. # mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  12. # mysql-router-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  13. # mysql-test-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  14. # 在解压
  15. tar -xvf ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
  16. # 移动SSD磁盘目录 OR 自己喜欢的目录
  17. mv ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal ./mysql8
  18. mv ./mysql8 /opt

配置环境

安装好MySQL 之后就需要配置my.cnf 这里是一个简单的my.cnf 详细需要到《MySQL配置详解》 根据下面配置将 /opt/mysql 替换成你自己喜欢的路径

[client]
port = 3306
socket = /opt/mysql8/mysql.sock
[mysqld]
# Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1

# 服务端口号 默认3306
port = 3306

# mysql安装根目录
basedir = /opt/mysql8

# mysql数据文件所在位置
datadir = /opt/mysql_data

# pid
pid-file = /opt/mysql8/mysql.pid

# 设置socke文件所在目录
socket = /opt/mysql8/mysql.sock

# 设置临时目录
tmpdir = /tmp

# 用户
user = mysql

# 允许访问的IP网段
bind-address = 0.0.0.0

# 跳过密码登录
# skip-grant-tables

# 主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking

# 只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1

# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED

# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4

# 数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci

# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1

# 最大连接数
max_connections = 400

# 最大错误连接数
max_connect_errors = 1000

# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true

# SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M

# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800

# 数据库错误日志文件
log_error = /opt/mysql8/log/mysql.log

设置用户以及分配权限

将配置文件创建到服务器之后,创建用户和分配权限 MySQL8之前可以用root 好像8只能mysql用户运行了

groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /opt/mysql8/
chown -R mysql:mysql /opt/mysql8/*

初始化MySQL Data

配置好目录权限之后就初始化MySQL

./mysql8/bin/mysqld --defaults-file=/opt/mysql8/my.cnf --initialize --lower-case-table-names=1

启动MySQL

查看密码; 密码存在到/opt/mysql/log.error 日志中

# 查看密码
tail -100f /opt/mysql8/log/error.log
# 2021-01-12T07:09:19.874688Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Nfl9lprVgj/m

# 启用mysql; >/dev/null 2>&1 表示不输入日志
nohup ./mysql8/bin/mysqld --defaults-file=/opt/mysql8/my.cnf >/dev/null 2>&1 &

# 如果没有启动成功去日志查看错误; 百度解决或者给我留言解决

# 登陆mysql; 指定sock
 ./mysql8/bin/mysql -uroot -p --socket=/opt/mysql8/mysql.sock 

# 必须Alter 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'lxsqaz123!@#';

# mysql 绿色安装完成了

错误说明

  1. error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    需要安装一个aio 基础库 apt install libaio -y apt install -y libaio1 sudo yum install libncurses* -y