MySQL 安装部署

1.1 Linux 系统下 MySQL 部署

MySQL 是一款开源关系型数据库,广泛用于企业业务存储,在 Linux 环境中有多种部署方式,生产环境常用二进制包安装 、RPM/YUM 安装两种方案,下面分别记录实操步骤,本次实验版本为 MySQL 8.4.6。

说明:MySQL8.0 之后版本密码策略更加严格,默认生成随机初始密码,密码需要满足复杂度要求(大小写字母、数字、特殊符号组合)。

1.1.1 生产环境二进制包安装部署

二进制包安装自由度高,数据目录、程序路径可以自定义,方便多实例部署、版本迁移,是生产常用方案。

第一步:官网下载安装包 进入 MySQL 官网,选择社区版(Community),选择 Linux 通用二进制包,下载 mysql-8.4.6-linux-glibc2.28-x86_64.tar.xz。

第二步:上传安装包到服务器 使用 XFTP、rz 等工具,把下载好的二进制包上传到 /usr/local 目录

复制代码
[root@Mysql ~]# cd  /usr/local
[root@Mysql local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src

第三步:解压压缩包,创建软链接 软链接方便后续升级版本,升级时只需要替换软链接指向新版本目录,不用修改大量配置文件。

复制代码
[root@Mysql local]# tar  -xvf  mysql-8.4.6-linux-glibc2.28-x86_64.tar.xz 

[root@Mysql local]# ln  -s  mysql-8.4.6-linux-glibc2.28-x86_64  mysql

第四步:创建 mysql 用户组与运行用户 mysql 服务禁止使用 root 运行,使用普通账号运行提升安全性,-r 创建系统用户,禁止登录系统。

复制代码
[root@Mysql local]# groupadd  mysql
[root@Mysql local]# useradd  -r  -g  mysql  -s  /sbin/nologin  mysql
# 验证用户
[root@Mysql local]# tail  -1  /etc/passwd
mysql:x:978:1001::/home/mysql:/sbin/nologin
[root@Mysql local]# tail  -1  /etc/group
mysql:x:1001:

第五步:MySQL 初始化,生成初始密码 --initialize 初始化数据库,自动生成随机 root 密码;--basedir 指定程序目录,--datadir 指定数据存放目录。

⚠️ 注意:datadir 目录必须是空目录,否则初始化失败;记录控制台输出的初始密码,示例密码:f2amq+xeiDiv

复制代码
[root@Mysql local]# cd  mysql
[root@Mysql mysql]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files

[root@Mysql mysql]# bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

第六步:启动数据库,登录并修改 root 密码 mysqld_safe 是守护进程方式启动,末尾 & 代表后台运行。

复制代码
# 后台启动mysql
[root@Mysql mysql]# bin/mysqld_safe  --user=mysql  &

# 使用初始密码登录
[root@Mysql mysql]# bin/mysql  -uroot  -pt4cml+xeiDiv
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.4.6

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 修改root密码,符合复杂度策略
mysql> alter  user  root@localhost  identified  by  'quay050060Y+';
Query OK, 0 rows affected (0.00 sec)

第七步:配置全局环境变量 在 /etc/profile.d/ 下新建脚本,登录自动加载 mysql 环境变量,任意目录直接执行 mysql 命令。

复制代码
[root@Mysql mysql]# vim  /etc/profile.d/mysql.sh

写入内容:

复制代码
#!/bin/bash
PATH=$PATH:/usr/local/mysql/bin

生效命令后面统一执行。

第八步:编写自定义启动脚本

补充:生产更推荐制作 systemd 服务单元文件管理,这里为实验自定义启动脚本

复制代码
[root@Mysql mysql]# vim  /usr/bin/mysql.start

脚本内容:

复制代码
#!/bin/bash
/usr/local/mysql/bin/mysqld_safe  --user=mysql  &

加载环境变量、添加执行权限:

复制代码
# 加载环境变量
[root@Mysql mysql]# source  /etc/profile.d/mysql.sh
# 添加执行权限
[root@Mysql mysql]# chmod  +x  /usr/bin/mysql.start
[root@Mysql mysql]# ll  /usr/bin/mysql.start 
-rwxr-xr-x 1 root root 63  9月 12 14:53 /usr/bin/mysqld.start

1.1.2 RPM 包 / YUM 方式安装 MySQL

RPM 安装简单快捷,自动处理依赖,适合快速部署,会自动注册 systemd 服务,使用 systemctl 管理启停。

第一步:官网下载 mysql yum 源 rpm 包 下载 mysql84-community-release-el9-2.noarch.rpm(适配 RHEL9、Rocky9、AlmaLinux9)

第二步:上传包到服务器,安装 yum 源

复制代码
[root@Mysql /]# rpm  -ivh  mysql84-community-release-el9-2.noarch.rpm 

第三步:确认 yum 源文件,执行安装 进入 /etc/yum.repos.d/ 查看生成的 mysql 源文件,备份原有系统自带 mariadb 源后执行安装:

复制代码
[root@Mysql yum.repos.d]# yum  install  mysql-community-server

第四步:启动服务,获取初始密码,重置密码

复制代码
# 设置开机自启并立即启动
[root@Mysql ~]# systemctl  enable  --now  mysqld

# 在日志文件中抓取初始密码
[root@Mysql ~]# cat  /var/log/mysqld.log  |  grep  password
2025-09-12T07:56:43.353496Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ?KYduOlge2R<

# 登录,特殊符号<需要转义 \
[root@Mysql ~]# mysql  -uroot  -p?KYduOlge2R\<

# 重置root密码
mysql> alter  user  root@localhost  identified  by  'Mysql@123';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限表
mysql> flush  privileges;
Query OK, 0 rows affected (0.00 sec)

两种安装方式对比总结

方式 优点 缺点 适用场景
二进制包 路径自定义、方便多实例、升级灵活 需要手动初始化、手动配置服务、步骤多 生产环境、数据库多实例
RPM/YUM 安装简单、自动依赖、systemd 管理 路径固定,多实例部署麻烦 测试环境、快速部署
相关推荐
亚川楼宇自控系统数据中心厂家1 小时前
消防风机一体化监控系统结合楼宇自控 协同管控原理科普
运维
泡海椒1 小时前
JQuick-SQL 子查询:WHERE、SELECT、HAVING 与派生表实践
数据库·sql
邪修king1 小时前
Re:Linux系统篇(三十七):进程间通信Chapter4:System V 共享内存深度解析:为什么它是最快的 IPC?
android·linux·运维
用户0510122572961 小时前
SQLite 学习博客(一):从零建库,理解 SQLite 的角色与第一张表
数据库·sqlite
福娃筱欢1 小时前
金仓数据库配置SSL双向认证
数据库·网络协议·ssl
captain3761 小时前
MyBatis操作数据库(入门1)
数据库·oracle·mybatis
snpgroupcn1 小时前
SAP 系统退役的归档架构怎么设计:可检索、可理解、可追溯、可证明
java·数据库·架构
清水白石0081 小时前
React Native与Flutter长期维护成本对比
开发语言·数据库
桌管小李1 小时前
终端安全一体化实战:AI 审计、行为分析、零信任、防拍照与远程运维全解析
运维·服务器·网络·人工智能·windows·安全·macos