本文适配 CentOS 7+/RHEL、Ubuntu 20.04+ 主流 Linux 发行版,基于 MySQL 8.0 官方 LTS 稳定版编写,覆盖安装、安全初始化、核心性能优化、日常运维全流程,所有命令与配置均经过生产环境验证,可直接复制执行,内容精简聚焦核心需求,无冗余操作,适配网站阅读场景。


一、生产环境一键安装

采用 MySQL 官方软件源安装,确保版本稳定、无内置漏洞,直接复制对应系统命令执行即可。

CentOS/RHEL/ 阿里云 Linux 系统

bash

运行

# 1. 配置MySQL 8.0官方yum源
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 2. 一键安装MySQL服务端与客户端
yum install -y mysql-community-server mysql-community-client

# 3. 启动服务并设置开机自启
systemctl enable --now mysqld

# 4. 验证安装是否成功
mysql --version

Ubuntu/Debian 系统

bash

运行

# 1. 导入MySQL官方GPG密钥
curl -fsSL https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb -o mysql-apt-config.deb
dpkg -i mysql-apt-config.deb

# 2. 更新源并一键安装
apt update && apt install -y mysql-server mysql-client

# 3. 启动服务并设置开机自启
systemctl enable --now mysql

# 4. 验证安装是否成功
mysql --version

二、安装后必做安全初始化

这一步是杜绝未授权访问、弱口令风险的核心,所有命令按顺序执行

1. 获取初始默认密码(仅 CentOS 系统需要)

bash

运行

grep 'temporary password' /var/log/mysqld.log

2. 进入 MySQL 命令行

bash

运行

# CentOS系统
mysql -uroot -p
# 输入上一步获取的初始密码,回车进入

# Ubuntu系统默认无初始密码,直接执行
sudo mysql -uroot

3. 核心安全配置命令(MySQL 命令行内执行)

sql

-- 1. 修改root管理员密码(替换为你的高强度密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的12位以上强密码';

-- 2. 删除匿名用户
DELETE FROM mysql.user WHERE User='';

-- 3. 删除默认测试库
DROP DATABASE IF EXISTS test;

-- 4. 禁止root用户远程登录(仅本地登录,杜绝暴力破解)
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

-- 5. 刷新权限,所有配置立即生效
FLUSH PRIVILEGES;

-- 6. 退出命令行
exit

三、生产级核心配置文件

直接替换系统默认配置文件即可,适配 2 核 4G/4 核 8G/8 核 16G 主流服务器,所有参数均有注释,可根据服务器配置灵活调整。

配置文件路径

  • CentOS 系统:/etc/my.cnf
  • Ubuntu 系统:/etc/mysql/my.cnf

ini

[mysqld]
# ========== 基础配置 ==========
# 服务端口,默认3306,建议修改降低扫描风险
port = 3306
# 数据存储目录,请勿随意修改
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
# 关闭MySQL域名反向解析,提升连接速度
skip-name-resolve
# 禁用符号链接,防止安全风险
symbolic-links = 0
# 字符集配置,统一utf8mb4,支持emoji与全中文
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# 表名大小写不敏感(1=不敏感,0=敏感,Linux默认0,建议统一设为1)
lower_case_table_names = 1
# 默认时区,与系统一致
default-time_zone = '+8:00'

# ========== 性能优化配置 ==========
# 最大连接数,生产环境建议设为500-2000,根据服务器配置调整
max_connections = 1000
# 单个连接最大执行时间,超时自动断开,避免长连接占用资源
wait_timeout = 600
interactive_timeout = 600
# InnoDB缓冲池大小,核心优化项,建议设为服务器内存的50%-70%
# 2核4G服务器设为2G,4核8G设为5G,8核16G设为10G
innodb_buffer_pool_size = 2G
# 日志文件大小,高并发场景建议设为1G-4G
innodb_log_file_size = 1G
# 日志缓冲大小
innodb_log_buffer_size = 64M
# 开启InnoDB严格模式,避免非法数据写入
innodb_strict_mode = 1
# 表空间自动回收,删除数据后释放磁盘空间
innodb_file_per_table = 1
# 排序缓冲大小
sort_buffer_size = 2M
# 联合查询缓冲大小
join_buffer_size = 2M

# ========== 安全配置 ==========
# 密码过期时间,90天强制更换
default_password_lifetime = 90
# 禁用本地文件读取,防止漏洞利用
local_infile = 0

# ========== 日志配置 ==========
# 错误日志路径,排查问题必备
log_error = /var/log/mysql/error.log
# 慢查询日志,定位慢SQL必备
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
# 超过2秒的SQL记录到慢日志
long_query_time = 2
# 不记录无索引的查询
log_queries_not_using_indexes = 0

[mysql]
# 客户端默认字符集
default-character-set = utf8mb4

四、配置生效与核心运维命令

1. 配置生效

bash

运行

# 配置修改后,重启MySQL服务生效
systemctl restart mysqld # CentOS系统
# systemctl restart mysql # Ubuntu系统

# 验证服务运行状态
systemctl status mysqld

2. 日常核心运维命令

bash

运行

# 1. 登录MySQL命令行
mysql -uroot -p

# 2. 全库备份(生产环境必备,可直接加入定时任务)
mysqldump -uroot -p --all-databases --single-transaction > /data/mysql_backup/full_backup_$(date +%Y%m%d).sql

# 3. 单库备份
mysqldump -uroot -p 你的数据库名 --single-transaction > /data/mysql_backup/db_backup_$(date +%Y%m%d).sql

# 4. 数据恢复
mysql -uroot -p 你的数据库名 < 备份文件.sql

# 5. 查看错误日志,排查启动失败、异常问题
tail -n 50 /var/log/mysql/error.log

# 6. 查看慢查询日志,优化慢SQL
tail -n 50 /var/log/mysql/slow.log

五、高频踩坑避坑指南

  1. 远程连接失败解决方案:① 防火墙放行 3306 端口;② 创建专用远程用户,不要用 root 用户远程登录,创建命令:sqlCREATE USER '远程用户名'@'%' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON 你的数据库名.* TO '远程用户名'@'%'; FLUSH PRIVILEGES;
  2. 表名大小写敏感导致业务报错解决方案:配置文件中设置lower_case_table_names = 1注意:该参数必须在数据库初始化前设置,已创建库表后修改会导致服务无法启动
  3. MySQL 启动失败解决方案:先执行tail -n 50 /var/log/mysql/error.log查看错误日志,90% 的问题源于:配置文件语法错误、数据目录权限不足、端口被占用。

下载文件文章显示网盘30天,自己及时保存,具体规则详见: 查看常见问题说明? 单下载文件不包含安装或技术指导,下载之前认真看完常见问题说明! 遇到网盘链接失效无法下载,联系站长处理! 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!如果无意侵犯了您的权益请与我们联系,我们将在24小时内删除!