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 管理 路径固定,多实例部署麻烦 测试环境、快速部署
相关推荐
笃行35018 小时前
数据库性能优化的五处内核改造,KingbaseES 配了四件诊断工具
数据库
非优秀程序员20 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
知已难寻21 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
SelectDB1 天前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
这个DBA有点耶1 天前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
阿里云云原生1 天前
生产更可信,订阅更耐用丨Higress 社区进展报告
云原生
这个DBA有点耶1 天前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风1 天前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
阿里云云原生1 天前
如何用 STAROps Elasticsearch 智能助手看穿“搜索变慢”
云原生
Alluxio1 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型