CentOS7系统下部署MySQL 5.7.34服务全过程

 更新时间:2025年07月02日 08:52:11   作者:XMYX-0  
这篇文章主要为大家详细介绍了如何通过普通用户 test 在 CentOS 7 系统下部署 MySQL 5.7.34,适用于中小型服务部署、开发测试环境以及基于裸机的数据库初始化场景

使用普通用户 部署 MySQL 5.7.34 服务全过程

在企业级 Linux 服务器中,出于最小权限原则(Least Privilege Principle),不建议直接使用 root 用户运行数据库服务。这不仅可以降低误操作风险,也方便后续进行权限审计、容器化迁移、安全加固等操作。

本文将介绍如何通过普通用户 test 在 CentOS 7 系统下部署 MySQL 5.7.34,适用于中小型服务部署、开发测试环境以及基于裸机的数据库初始化场景。

最终目录结构示意

/data/
├── app/
│   └── mysql/           # 安装目录
│       ├── bin/         # 可执行文件
│       ├── data/        # 数据目录
│       ├── log/         # 日志目录
│       └── my.cnf       # 配置文件
│       └── mysqld.sh    # 启动脚本
│       └── ......       # 其他文件
├── bag/
    └── mysql/           # 存放压缩包

[test@mmm mysql]$ pwd
/data/app/mysql
[test@mmm mysql]$ ls 
bin  data  docs  include  lib  LICENSE  log  man  my.cnf  mysqld.sh  README  share  support-files
[test@mmm mysql]$ ll 
total 288
drwxrwxr-x  2 test test   4096 Mar  6 09:54 bin
drwxrwxr-x 10 test test   4096 Mar  6 21:20 data
drwxrwxr-x  2 test test     55 Mar  6 09:26 docs
drwxrwxr-x  3 test test   4096 Mar  6 09:26 include
drwxrwxr-x  5 test test    230 Mar  6 09:26 lib
-rw-r--r--  1 test test 257591 Mar 26  2021 LICENSE
drwxrwxr-x  2 test test     29 Mar  6 09:35 log
drwxrwxr-x  4 test test     30 Mar  6 09:26 man
-rw-rw-r--  1 test test   1469 Mar  6 09:34 my.cnf
-rwxr-xr-x  1 test test  10585 Mar  6 09:49 mysqld.sh
-rw-r--r--  1 test test    566 Mar 26  2021 README
drwxrwxr-x 28 test test   4096 Mar  6 09:26 share
drwxrwxr-x  2 test test     90 Mar  6 09:43 support-files
[test@mmm mysql]$ 

创建 test 用户并赋予 sudo 权限

操作用户:root

# 创建 test 用户,指定家目录和 bash 作为默认 shell
adduser -m -d /home/test -s /bin/bash test

# 设置 test 用户密码(此处密码为 test123456.)
echo "test:test123456." | sudo chpasswd

# 将 test 用户加入 wheel 组以获取 sudo 权限
usermod -aG wheel test

# 查看用户组信息确认是否添加成功
groups test

切换至 test 用户并准备部署目录

# 切换到 test 用户
su - test

# 进入数据目录
cd /data

# 确认是否有写权限
ll /data

# 若无权限,使用 sudo 赋权
sudo chmod u+w /data
sudo chown -R test:test /data

# 创建 MySQL 安装与数据目录
mkdir -p /data/app

准备 MySQL 安装包并解压

# 假设安装包已上传至 /data/bag/mysql
cd /data/bag/mysql

# 解压 MySQL 5.7 安装包
tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

# 移动解压后的内容到指定安装目录
mv mysql-5.7.34-linux-glibc2.12-x86_64/* /data/app/mysql

安装必要依赖包

# 安装 libaio 和 numactl 是 MySQL 正常运行的前提
sudo yum -y install libaio
sudo yum -y install numactl

配置 my.cnf 配置文件

/data/app/mysql 下新建或编辑 my.cnf 文件:

cd /data/app/mysql
vim my.cnf

示例配置内容(可根据实际情况调整):

[mysql]

# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/data/app/mysql/mysql.sock

[mysqld]
# 用户
user=test

skip_ssl
skip-name-resolve
#设置3306端口
port = 3306

expire_logs_days = 10
max_binlog_size = 500M

# 设置mysql的安装目录
basedir=/data/app/mysql
# 设置mysql数据库的数据的存放目录
datadir=/data/app/mysql/data

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
key_buffer_size=32MB

# innodb参数
innodb_buffer_pool_size=512MB

innodb_buffer_pool_dump_at_shutdown=1  #该命令用于在关闭时把热数据dump到本地磁盘
innodb_buffer_pool_load_at_startup=1   #在启动时把热数据加载到内存

#避免双写缓冲的参数:
innodb_flush_method=O_DIRECT

innodb_lock_wait_timeout=50 # 锁等待超时时间 单位秒
#启用标准InnoDB监视器
innodb_status_output=ON
# 查询缓存
#开启慢查询日志:
slow_query_log=1
slow_query_log_file=master.slow
long_query_time=2

#配置错误日志:
log-error=/data/app/mysql/log/mysql_error.log

# 复制的参数
log_bin=master-bin
server_id=10
binlog_format=ROW
sync_binlog=1

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# 启用gtid复制:
gtid_mode=ON
enforce-gtid-consistency=true


max_connections = 1000
max_connect_errors = 1000
wait_timeout = 30
innodb_log_file_size=1500M

常见参数说明

参数名示例值说明
basedir/data/app/mysqlMySQL 的安装目录(即解压后的主目录)
datadir/data/app/mysql/data数据库的数据文件存放路径
port3306MySQL 服务监听端口,默认是 3306
usertest启动 mysqld 进程的用户,需具有写权限
socket/data/app/mysql/mysql.sockMySQL 客户端与服务器端通信使用的套接字文件
log-error/data/app/mysql/log/mysql_error.log错误日志输出路径
character-set-serverutf8 / utf8mb4设置默认字符集,推荐使用 utf8mb4 支持表情符等
default-storage-engineINNODB默认存储引擎
innodb_buffer_pool_size512MBInnoDB 数据缓冲池大小,建议设置为物理内存的 50%-80%
slow_query_log1开启慢查询日志功能
slow_query_log_filemaster.slow慢查询日志文件名称
long_query_time2定义慢查询的阈值(单位:秒)
log_binmaster-bin启用二进制日志功能,主从复制时必须开启
server_id10实例 ID,用于主从复制标识(每个实例唯一)
binlog_formatROWbinlog 格式,推荐使用 ROW
gtid_modeON启用 GTID 模式,方便主从同步管理
enforce-gtid-consistencytrue强制 GTID 一致性,GTID 模式下建议启用
sql_modeNO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONSQL 模式,控制语法与行为兼容性
max_connections1000最大并发连接数
max_connect_errors1000最大连接失败次数
wait_timeout30空闲连接超时时间(单位:秒)
innodb_log_file_size1500MInnoDB 重做日志文件大小
sync_binlog1每次事务提交都同步写 binlog,提升数据安全性

初始化数据库

# 创建数据目录和日志文件
cd /data/app/mysql
mkdir -p data log
touch log/mysql_error.log

# 初始化数据库
cd bin
./mysqld --defaults-file=/data/app/mysql/my.cnf --initialize --user=test --basedir=/data/app/mysql/ --datadir=/data/app/mysql/data/

注意:初始化成功后,log/mysql_error.log 中会包含 root 用户的临时密码。

配置启动脚本并设置环境变量

# 回到主目录
cd /data/app/mysql

# 复制默认启动脚本并重命名
cp support-files/mysql.server ./mysqld.sh

###################################
# 修改启动脚本内容(可根据需求调整basedir、datadir、conf等)
 46 basedir=/data/app/mysql/
 47 datadir=/data/app/mysql/data/
 206   conf=/data/app/mysql/my.cnf
###################################


# 添加 MySQL bin 路径至环境变量
echo 'export PATH=/data/app/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

启动 MySQL 服务并测试连接

# 启动 MySQL
./mysqld.sh start

# 查看运行状态
./mysqld.sh status
ps -ef | grep mysql
netstat -nltp | grep 3306

# 登录测试(使用初始化生成的密码或修改后的密码)
mysql -u root -p

或:

# 若你已设置新密码:
mysql -u root -p'test123456.'

常用操作总结

# 停止 MySQL 服务
./mysqld.sh stop

# 重启 MySQL 服务
./mysqld.sh restart

# 查看 MySQL 日志
cat /data/app/mysql/log/mysql_error.log

注意事项

  • 非 root 用户安装需保证目录权限正确
  • --initialize 只运行一次,否则会清空已有数据;
  • my.cnf 配置文件中路径需确保存在;
  • 若启动失败,优先查看 mysql_error.log
  • mysqld.sh 脚本可考虑写入 systemd 或 crontab 启动;

结语

通过以上步骤,我们成功使用普通用户 test 完成了 MySQL 5.7.34 的部署。这种方式不仅提升了安全性,也为后续自动化部署和多用户运维打下了基础。

到此这篇关于CentOS7系统下部署MySQL 5.7.34服务全过程的文章就介绍到这了,更多相关MySQL 5.7.34部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Linux中将用户添加到特定组的四种方法

    在Linux中将用户添加到特定组的四种方法

    本文详细介绍了在Linux系统中将用户添加到特定组的四种方法:使用`usermod`命令、`gpasswd`命令、Shell脚本以及手动编辑`/etc/group`文件,通过这些方法,可以方便地管理用户的主要组和次要组,实现用户权限的灵活配置,需要的朋友可以参考下
    2025-02-02
  • linux nohup及tail-f用法

    linux nohup及tail-f用法

    这篇文章给大家分享了linux nohup及tail-f用法相关内容,有兴趣的朋友可以参考学习下。
    2018-07-07
  • CentOS系统下Apache配置多域名或多端口映射的方法

    CentOS系统下Apache配置多域名或多端口映射的方法

    我们大多情况是一台服务器一个IP,这样配置起来很简单,但是如何想多域名多端口映射的话就没那么简单了,下面这篇文章主要介绍了CentOS系统下Apache配置多域名或多端口映射的方法,需要的朋友可以参考学习,下面来一起看看吧。
    2016-12-12
  • 详解如何实现Linux服务Crash后自动重启

    详解如何实现Linux服务Crash后自动重启

    近期碰到了一个 Linux Systemd 服务 Crash, Crash 后需要人工介入重启. 那么, 有没有办法如何实现 Linux 服务 Crash 后自动重启,下面就来和大家分享一下
    2023-08-08
  • Linux mmap内存映射机制:从底层原理、API 到实战开发(图文附代码)

    Linux mmap内存映射机制:从底层原理、API 到实战开发(图文附代码)

    本文全面解析Linux mmap内存映射机制,涵盖核心原理、API参数详解、MAP_SHARED/MAP_PRIVATE 区别、三大实战案例(文件写入/读取/模拟 malloc),以及避坑指南、性能对比与未来趋势,所有代码可直接运行,适合系统开发者进阶
    2026-04-04
  • 检查Linux中磁盘使用情况的四种方法

    检查Linux中磁盘使用情况的四种方法

    有时你需要下载一些重要文件或将一些照片传输到你的Linux系统,但面临磁盘空间不足的问题,你前往你的文件管理器删除你不再需要的大文件,但你不知道其中哪些占用了你大部分的磁盘空间,在本文中,我们将展示一些简单的方法来检查Linux中磁盘使用情况
    2025-06-06
  • linux 定时休眠的实现思路

    linux 定时休眠的实现思路

    这篇文章主要介绍了linux 定时休眠的实现思路,休眠的类型有三种类型,文章对每种类型介绍的都很详细,需要的朋友可以参考下
    2018-07-07
  • 详解Linux服务器快速安装PostgreSQL15及pgvector向量插件

    详解Linux服务器快速安装PostgreSQL15及pgvector向量插件

    这篇文章主要介绍了Linux服务器快速安装PostgreSQL15以及pgvector向量插件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • Centos6安装中文字体的方法

    Centos6安装中文字体的方法

    这篇文章主要介绍了Centos6安装中文字体的方法,本文给大家介绍的非常详细具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • RHCE桥接,免密登录和修改端口号介绍

    RHCE桥接,免密登录和修改端口号介绍

    大家好,本篇文章主要讲的是RHCE桥接,免密登录和修改端口号介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论