Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > MySQL 5.7.34部署

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

作者: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

注意事项

结语

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

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

您可能感兴趣的文章:
阅读全文