Baron X头像
关注

MySQL 9.7.2 完整部署指南(自定义端口/数据目录)

所有命令均需以 rootsudo 权限执行。

摘要:本文以 MySQL 9.7.2 二进制包为例,完整演示在 Linux 上从零安装 MySQL 并启用随机端口的全过程。内容涵盖系统依赖安装、用户与目录创建、随机端口生成、/etc/my.cnf 配置、数据库初始化、Systemd 服务托管、root 密码修改、防火墙放行,以及 Spring Boot 连接适配,并附常用管理命令与端口验证方法,适合需要自定义端口部署 MySQL 的开发者参考。


前置准备

  • 已下载 mysql-9.7.2-linux-glibc2.28-x86_64.tar.xz
  • 具有 root 权限。

第 1 步:安装系统依赖

sudo yum install -y libaio numactl

第 2 步:创建 mysql 用户和组

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

第 3 步:解压安装包至目标目录

cd /tmp
sudo tar -xvf mysql-9.7.2-linux-glibc2.28-x86_64.tar.xz -C /opt/

第 4 步:创建数据、日志、binlog 目录并设置权限

sudo mkdir -p /opt/mysql/{data,binlog,log}
sudo chown -R mysql:mysql /opt/mysql

第 5 步:生成随机端口并写入配置文件

使用 Shell 生成一个 1024~65535 范围内的随机端口(避开常见服务端口),并存入变量:

# 生成随机端口(示例:使用 $RANDOM 取模)
RANDOM_PORT=$((RANDOM % 64512 + 1024))
echo "生成的随机端口为: $RANDOM_PORT"

注意:若端口已被占用,后续启动会失败,可重复执行生成新的随机端口。

第 6 步:创建 MySQL 配置文件 /etc/my.cnf

使用以下内容(已移除所有 MySQL 9.7 废弃参数),并将 port 替换为上一步生成的 $RANDOM_PORT

sudo vi /etc/my.cnf

粘贴以下配置,**手动将 port = 3306 改为 **port = 你的随机端口(或使用 sed 自动替换):

[mysqld]
# 基础设置
user = mysql
port = 你的随机端口          # 此处替换为实际端口号
basedir = /opt/mysql
datadir = /opt/mysql/data
socket = /tmp/mysql.sock
pid-file = /opt/mysql/mysqld.pid

# Binlog 设置
log-bin = /opt/mysql/binlog/mysql-bin
binlog_expire_logs_seconds = 2592000

# 日志设置
log-error = /opt/mysql/log/mysqld.log
slow-query-log = 1
slow-query-log-file = /opt/mysql/log/mysql-slow.log
long-query-time = 2

# 字符集与连接数
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
max_connections = 10000

# 自增ID配置
auto_increment_increment = 10
auto_increment_offset = 1

自动替换端口(可选):执行以下命令将 你的随机端口 替换为实际值:

sudo sed -i "s/你的随机端口/$RANDOM_PORT/" /etc/my.cnf

第 7 步:初始化数据库

sudo rm -rf /opt/mysql/data/*
sudo /opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

初始化成功后,获取临时密码:

sudo grep 'temporary password' /opt/mysql/log/mysqld.log

第 8 步:创建 Systemd 服务文件

sudo vi /etc/systemd/system/mysqld.service

内容如下(端口变量不影响服务文件,因为端口在配置文件中指定):

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=10000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false

第 9 步:启动服务并设置开机自启

sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld

第 10 步:修改 root 密码

登录时需指定端口(用 -P 参数):

/opt/mysql/bin/mysql -uroot -p -P $RANDOM_PORT

输入临时密码后,执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
EXIT;

第 11 步:(可选)防火墙开放随机端口

若系统防火墙启用,需开放该端口:

# firewalld
sudo firewall-cmd --permanent --add-port=$RANDOM_PORT/tcp
sudo firewall-cmd --reload
# 或 iptables
sudo iptables -I INPUT -p tcp --dport $RANDOM_PORT -j ACCEPT

第 12 步:Spring Boot 适配配置(使用随机端口)

在 Spring Boot 的 application.properties 中,JDBC URL 需显式指定端口:

spring.datasource.url=jdbc:mysql://你的服务器IP:${RANDOM_PORT}/你的数据库名?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.username=你的用户名
spring.datasource.password=你的密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

若使用 application.yml

spring:
  datasource:
    url: jdbc:mysql://你的服务器IP:${RANDOM_PORT}/你的数据库名?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
    username: 你的用户名
    password: 你的密码
    driver-class-name: com.mysql.cj.jdbc.Driver

注意:这里的 ${RANDOM_PORT} 是占位符,实际部署时需替换为第 5 步生成的具体端口号。您可以将端口写入环境变量或配置文件供 Spring Boot 读取。


管理命令(指定端口)

  • 登录 MySQL/opt/mysql/bin/mysql -uroot -p -P $RANDOM_PORT
  • 服务管理sudo systemctl start|stop|restart|status mysqld(端口不影响)

验证随机端口

sudo netstat -tlnp | grep mysqld

输出应显示监听在第 5 步生成的随机端口上。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/snowhite91/article/details/164209656

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--