我选择的是 Debian 系统进行安装MySQL8,关于系统选择请参考《MySQL 系统以及硬件选择》 MySQL8 通用Linux 系统也就是二进制程序绿色安装 还有rpm deb, 他们之间没有任何区别,只是绿色安装难度高一点。 当然还有 源码编译安装 可以在编译的时调优编译器配置 需要个人超高C++水平,当然默认已经很好了,水平达不到不建议修改
MySQL 官网
下载并解压
# 更新系统
apt update
# 安装wget vim 等工具
apt install wget vim -y
# 执行下载
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
# 执行解压
tar -xvf ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
#root@VM-0-13-debian:~# ls
# mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar
# mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
# mysql-router-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
# mysql-test-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
# 在解压
tar -xvf ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz
# 移动SSD磁盘目录 OR 自己喜欢的目录
mv ./mysql-8.0.22-linux-glibc2.17-x86_64-minimal ./mysql8
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 绿色安装完成了
错误说明
- 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