MySQL的三种安装方式示例(包成功😋)

积云蟹

概述

定义和历史背景

  MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS)。它最初由瑞典 MySQL AB 公司开发,在 2008 年被 Sun Microsystems 收购,之后 Oracle 又收购了 Sun Microsystems,MySQL 也随之成为 Oracle 旗下的产品。

数据库存储结构

数据库(Database):MySQL 是数据库的集合,每个数据库用于存储相关的数据。

表(Table):数据库包含一个或多个表,表是数据存储的基本单位。表由行(Row)和列(Column)组成。

   索引(Index):索引是一种特殊的数据结构,用于提高数据库的查询性能。它类似于书籍的目录,通过创建 索引,可以更快地定位和检索表中的数据。

SQL语言支持

  • 数据定义语言(DDL):用于定义数据库的结构,包括创建(CREATE)、修改(ALTER)和删除(DROR)数据库、表、索引等。
  • 数据操作语言(DML):用于操作表中的数据,主要包括插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)操作。
  • 数据控制语言(DCL):主要用于管理数据库用户的权限,如GRANT(授予权限)和REVOKE(收回权限)

MySQL逻辑结构与Linux系统对比:

MySQLLinux
目录
show databases;ls -l /
use mysqlcd /mysql
普通文件
show tablesls

安装方式

(这里使用机器为 Rocky Linux 9.4 )

二进制安装

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
## 从官方选择对应的 mysql 源码包
# https://dev.mysql.com/downloads/mysql/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
# 上传下载好的压缩包到指定服务器
wget https://dev.mysql.com/get/Downloads/mysql/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
tar -xvf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.4.3-linux-glibc2.28-x86_64 /usr/local/mysql

## 创建mysql用户,因为启动mysql需要该用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql -M

## 创建数据目录
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chmod -R 750 /data/mysql

## 初始化
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql

## 以服务的方式启动(传统方式,可选)
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
# systemctl daemon-reload
# /etc/init.d/mysql.server start

## 添加环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile

#################################################################
## 将传统的以服务启动的方式改为 systemd 进行管理
## 首先关闭 selinux !!!
## 在/etc/systemd/system/目录下配置文件 mysql.service
cat > /etc/systemd/system/mysql.service << EOF
[Unit]
Description=MySQL Server
After=network.target syslog.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

## 配置默认文件缺失
# MySQL 不会在二进制安装时自动生成 my.cnf 文件,因为它无法确定需要的具体配置。这就意味着你得手动创建该文件。
# 在 ExecStart 行中启动命令后添加 --defaults-file=/etc/my.cnf 参数进行配置文件关联
# 创建 my.cnf 文件

cat > /etc/my.cnf << EOF
[mysqld]
# 基本目录
basedir = /usr/local/mysql
# 数据目录
datadir = /data/mysql
# PID文件路径
pid-file = /data/mysql/mysql.pid
# 套接字文件路径
socket = /tmp/mysql.sock
# 监听端口
port = 3306

# 其他常见配置
# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 日志相关配置
log-error = /data/mysql/error.log
general_log = 0
general_log_file = /data/mysql/general.log
slow_query_log = 1
slow_query_log_file = /data/mysql/slow.log
long_query_time = 2

# 内存相关配置
innodb_buffer_pool_size = 128M
key_buffer_size = 16M
EOF

# 赋权
chmod 644 /etc/my.cnf

## 启动
systemctl daemon-reload
systemctl restart mysql
systemctl status mysql

# 以下命令可查看 MySQL 所有的配置选项及其当前值
SHOW VARIABLES;

从源码编译安装

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
## 从官方选择对应的 mysql 源码包
# https://dev.mysql.com/downloads/mysql/
# 上传下载好的压缩包到指定服务器
wget https://dev.mysql.com/get/Downloads/mysql/mysql-8.4.3.tar.gz
tar -zxvf mysql-8.4.3.tar.gz
cd mysql-8.4.3
mkdir build
cd build

# 下载必要的软件包
yum install -y gcc gcc-c++ make cmake ncurses-devel bison wget tar bzip2 zlib zlib-devel gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl openssl-devel
sudo dnf install -y rpcgen

## 安装libtirpc-devel
yum install -y libtirpc-devel # 这个一般不行

wget https://rpmfind.net/linux/centos-stream/9-stream/BaseOS/x86_64/os/Packages/libtirpc-1.3.3-2.el9.x86_64.rpm
rpm -ivh libtirpc-1.3.3-2.el9.x86_64.rpm
# sudo rpm -Uvh --oldpackage libtirpc-1.3.3-2.el9.x86_64.rpm -U:有则升级,无则安装。

wget https://rpmfind.net/linux/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-2.el9.x86_64.rpm
rpm -ivh libtirpc-devel-1.3.3-2.el9.x86_64.rpm

# 依赖环境
cd /root
wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2
tar -jxvf boost_1_77_0.tar.bz2

# build 是个空目录
cd mysql-8.4.3/build/
# 到MySQL源码的build目录(个人新建)并运行cmake命令,以继续配置和编译MySQL:
cmake .. -DWITH_BOOST=/root/boost_1_77_0 \
-DWITH_ZLIB=bundled \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock

# 编译 MySQL
make

# 安装 MySQL
make install

## 开始配置

# 创建mysql用户和配置权限
# 创建一个名为 mysql 的用户组
groupadd mysql

# -r表示创建一个系统用户(system user),这种用户通常用于运行服务或系统进程,没有登录权限。
# -g mysql:指定用户的主组为 mysql,让该用户属于前面创建的 mysql 用户组。
# -s /bin/false:指定用户的默认登录 shell 为 /bin/false,这样做的目的是不允许该用户登录系统,进一步增强安全性。
useradd -r -g mysql -s /bin/false mysql

## /etc/my.cnf
cat > /etc/my.cnf <<EOF
[mysqld] # 表示这是 MySQL 服务的配置部分
basedir = /usr/local/mysql # 设置 MySQL 的安装目录为 /usr/local/mysql
datadir = /usr/local/mysql/data # 设置 MySQL 的数据存储目录为 /usr/local/mysql/data
port = 3306 # 指定 MySQL 服务监听的端口号为 3306,这是 MySQL 的默认端口
socket = /var/lib/mysql/mysql.sock # 指定 MySQL 进程的 socket 文件路径,用于本地客户端连接
user = mysql # 指定运行 MySQL 服务的用户为 mysql,增加安全性
symbolic-links = 0 # 禁用符号链接功能,增加系统安全性

log_error = /var/log/mysql/error.log # 设置错误日志文件的路径,记录 MySQL 服务的错误信息

general_log = 1 # 启用通用查询日志,记录所有执行的查询语句
general_log_file = /var/log/mysql/general.log # 设置通用查询日志的存储路径

slow_query_log = 1 # 启用慢查询日志,用于记录执行时间较长的查询
slow_query_log_file = /var/log/mysql/slow.log # 指定慢查询日志文件的路径
long_query_time = 2 # 设置慢查询的阈值,记录执行时间超过 2 秒的查询
# pid-file = /var/run/mysqld/mysqld.pid
pid-file=/usr/local/mysql/mysqld.pid
EOF

mkdir -p /var/log/mysql
# mkdir -p /var/run/mysqld
mkdir -p /var/lib/mysql

# mysql logs for /var/log/mysql
chown -R mysql:mysql /var/log/mysql
chmod -R 750 /var/log/mysql

# /usr/local/mysql 安装主目录
chown -R mysql:mysql /usr/local/mysql
chmod -R 750 /usr/local/mysql
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/data
chmod -R 750 /usr/local/mysql/data

# /var/run/mysqld/mysqld.pid
# chown mysql:mysql /var/run/mysqld
# chmod 755 /var/run/mysqld

# /var/lib/mysql/mysql.sock
chown -R mysql:mysql /var/lib/mysql
chmod -R 750 /var/lib/mysql

## 初始化
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure

## 启动 mysql 服务
cat > /etc/systemd/system/mysql.service<<EOF
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/var/run/mysqld/mysqld.pid
ExecStop=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf shutdown
User=mysql
Group=mysql
PIDFile=/var/run/mysqld/mysqld.pid

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mysql
systemctl start mysql

## 设置个root密码
/usr/local/mysql/bin/mysql_secure_installation
# Ag#@190}678900 # 我的密码

# 添加到系统环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile

mysql -uroot -pAg#@190}678900

# 新建个远程管理用户
# 开启远程连接
CREATE USER 'sxs'@'%' IDENTIFIED BY 'Ag#@190}678900';
GRANT ALL PRIVILEGES ON *.* TO 'sxs'@'%' WITH GRANT OPTION;
flush privileges;

yum 安装方式


1
2
3
4
5
6
7
- 本地系统源安装

yum -y install mysql # 安装的 mysql软件包包含了 MySQL 客户端程序等组件。
## 这使得用户能够在命令行下连接到远程 MySQL 服务器进行数据库操作,如查询数据库、执行 SQL 语句等。

yum -y install mysql-server # 安装 MySQL 服务器相关的软件包。
## 这个命令会安装 MySQL 服务器软件,使得计算机能够作为一个 MySQL 服务器运行,接受客户端的连接请求并处理数据库事务。

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
27
28
- 官方源安装(脱离了系统源)

## 从官方选择对应的操作系统的 mysql 安装源
# https://dev.mysql.com/downloads/
# 上传下载好的 rpm 包到指定服务器
scp .\mysql84-community-release-el9-1.noarch.rpm root@192.168.241.130:/root

# 安装下载好的源
dnf install -y mysql84-community-release-el9-1.noarch.rpm

# 安装 MySQL 服务器及其依赖项
sudo dnf install mysql-server

# 启动 MySQL 服务并设置开机自启
sudo systemctl --now enable mysqld

# 获取临时密码
grep 'temporary password' /var/log/mysqld.log

# 登录并修改密码
mysql -uroot -p

# 查看安全策略(可选)
SHOW VARIABLES LIKE 'validate_password%';

# 降低安全策略(可选,主要是为了学习或者测试时设置简单的密码方便记忆)
set global validate_password.policy=0;
set global validate_password.length=1;

通过 MySQL 安装向导(适用于 Windows 环境)

  • 标题: MySQL的三种安装方式示例(包成功😋)
  • 作者: 积云蟹
  • 创建于 : 2025-05-14 22:36:06
  • 更新于 : 2025-05-14 22:38:16
  • 链接: https://123456.today/2025/05/14/MySQL的三种安装方式/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论