最近开发SAAS系统,遇到公司的云数据库到期,需要搭建自用开发数据库;参考官方的源安装模式,但是卓所周知,网速极慢,手动下载官方rpm包,又出现各种依赖缺失;醉了,装个数据各种坑,最后还是决定直接使用离线全包的方式直接解压缩安装配置。

下载MySQL8.0最新的程序

oracle官网提供mysql相关下载地址,网速快可以直接使用;

    MySQL :: Download MySQL Community Server

阿里云镜像站MySQL,直接下载最新的安装包

    mysql-MySQL-8.0安装包下载_开源镜像站-阿里云 (aliyun.com)

  • 注意下载完整的tar文件,不要下载 minimal压缩包,minimal压缩包中不包含innodb引擎

推荐使用 阿里云镜像站下载

解压到自己的安装目录

本文将以 /opt/mysql作为mysql安装包的根目录

配置MySQL

  • 首先创建MySQL用户

    MySQL数据库不建议采用root账号直接启动安装

1
useradd mysql # ubuntu 使用 adduser mysql
  • 删除系统中残存的所有mysql信息
1
2
3
4
5
# 找出mysql相关软件,包括mariadb
rpm -qa | grep mysql

# 删除软件
rpm -e xxx
  • 解压文件到 /opt/mysql
1
2
3
4
5
6
7
8
9
10
# 先下载对应的 软件 wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz -C /opt/mysql

mv /opt/mysql/mysql-8.0.27-linux-glibc2.12-x86_64/* /opt/mysql/
rm -rf /opt/mysql/mysql-8.0.27-linux-glibc2.12-x86_64

# 创建必要目录
mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/tmp
mkdir -p /opt/mysql/log
  • 更改权限
1
chown -hR mysql:mysql /opt/mysql
  • 创建MySQL关键配置文件
1
vim /opt/mysql/my.cnf

注意在配置MySQL8.0时需要查看MySQL8.0支持的参数,部分参数已经移除,不能直接使用MySQL5.7中的部分参数,不向下兼容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# client连接信息,配置默认访问端口号和MySQL server PID文件路径
[client]
port=3306
socket=/opt/mysql/tmp/mysql.lock

# mysql server配置信息
[mysqld]
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
server-id=1
port=3306
basedir=/opt/mysql
datadir=/opt/mysql/data
tmpdir=/opt/mysql/tmp
socket=/opt/mysql/tmp/mysql.lock
pid-file=/opt/mysql/log/mysql.pid
skip_name_resolve=1
character-set-server=utf8mb4
transaction_isolation=READ-COMMITTED
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1 #是否对SQL语句大小写敏感,1表示不敏感
max_connections=40000
max_connect_errors=1000
log_error=/opt/mysql/log/error.log
slow_query_log=1
long_query_time=1
  • 初始化数据库
1
2
3
4
5
6
7
8
9
# 先配置 MySQL的命令行到 环境变量
vim /etc/profile

# 添加如下信息
export MYSQL_HOME=/opt/mysql
export PATH=$PATH:$MYSQL_HOME/bin


source /etc/profile

 先初始化数据

1
mysqld --initialize --user=mysql

使用命令启动数据库

1
/opt/mysql/bin/mysqld_safe --basedir=/opt/mysql

如果正常启动则退出,之后配置systemd

配置Systemd

systemd相关的内容请参考Redhat官方关于systemd介绍

    Overview of systemd for RHEL 7 - Red Hat Customer Portal

1
vi /usr/lib/systemd/system/mysql8.service

添加配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=MySQL database server
After=syslog.target
After=network.target

[Service]
Type=simple
# 配置启动用户 ,不建议使用root,建议采用最小权限用户,甚至可以使用不可登录的账号启动
User=mysql
Group=mysql
# 启动 mysql数据库的命令,注意不要使用 nohup
ExecStart=/opt/mysql/bin/mysqld_safe --basedir=/opt/mysql

TimeoutSec=300

PrivateTmp=true

[Install]
WantedBy=multi-user.target

使用加载最新的systemd文件

1
systemctl daemon-reload

启动mysql

1
2
3
systemctl start mysql8

systemctl status mysql8

初始化数据库并配置账号密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 初始化数据库
# 首先找到临时密码
cat /opt/mysql/log/error.log

# 初始化安装mysql数据库
mysql_secure_installation

# 按照提示配置权限账号密码


mysql -uroot -p

CREATE USER 'admin'@'%' IDENTIFIED BY 'Changeme_123';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;