CentOS 7 MySQL 8 安装与配置指南

一、环境准备

  1. 系统更新
bash 复制代码
sudo yum update -y
sudo reboot  # 推荐重启以应用内核更新
  1. 安装依赖
bash 复制代码
sudo yum install -y wget curl vim net-tools epel-release

二、安装 MySQL 8

  1. 添加 MySQL 官方 YUM 仓库
bash 复制代码
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-11.noarch.rpm
sudo yum clean all && sudo yum makecache
  1. 安装 MySQL 8 服务器
bash 复制代码
sudo yum install -y mysql-community-server
  1. 启动 MySQL 并设置开机自启
bash 复制代码
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld  # 检查状态

三、安全配置

  1. 获取临时 root 密码
bash 复制代码
sudo grep 'temporary password' /var/log/mysqld.log

输出示例:

text 复制代码
2024-01-01T00:00:00.000000Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: AbCdEfGhIjK1!

2.运行安全配置向导

bash 复制代码
sudo mysql_secure_installation

按照提示操作:

  1. 输入临时密码
  2. 设置新 root 密码(需符合复杂度要求)
  3. 移除匿名用户(Y)
  4. 禁止 root 远程登录(Y)
  5. 删除测试数据库(Y)
  6. 重新加载权限表(Y)

四、优化配置

  1. 编辑 MySQL 配置文件
bash 复制代码
sudo vim /etc/my.cnf

推荐配置(8GB 内存服务器示例) :

bash 复制代码
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 性能优化
innodb_buffer_pool_size=4G            # 50%-70% 物理内存
innodb_log_file_size=1G              # 日志文件大小
innodb_flush_log_at_trx_commit=1      # 1=最安全,2=性能更好
innodb_flush_method=O_DIRECT
max_connections=500                  # 最大连接数
query_cache_type=0                   # MySQL 8 已移除查询缓存
skip_name_resolve=1                  # 禁用 DNS 解析
table_open_cache=4000                # 打开表缓存
slow_query_log=1                     # 启用慢查询日志
slow_query_log_file=/var/log/mysql-slow.log
long_query_time=2                    # 超过 2 秒记录为慢查询

# 大小写不敏感(可选)
lower_case_table_names=1             # 0=敏感,1=不敏感

[client]
default-character-set=utf8mb4
  1. 重启 MySQL 生效
bash 复制代码
sudo systemctl restart mysqld

五、数据库用户管理

1.新增数据库用户

bash 复制代码
-- 登录 MySQL
mysql -u root -p

-- 创建新用户(示例:用户 'appuser',密码 'Str0ngP@ssw0rd!')
CREATE USER 'appuser'@'%' IDENTIFIED BY 'Str0ngP@ssw0rd!';

-- 授予权限(按需调整)
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

2.授权用户远程访问

bash 复制代码
# 使用 root 登录 MySQL
mysql -u root -p

-- 检查当前 root 用户权限
SELECT Host, User FROM mysql.user WHERE User = 'root';

-- 修改现有root@localhost为root@%
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';

-- 刷新权限
FLUSH PRIVILEGES;

六、防火墙配置

bash 复制代码
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

七、数据目录权限检查

bash 复制代码
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 750 /var/lib/mysql

八、备份策略

  1. 定时全量备份(crontab)
bash 复制代码
sudo crontab -e

添加:

text 复制代码
0 3 * * * /usr/bin/mysqldump -u root -p'YourPassword' --all-databases | gzip > /backup/mysql_$(date +\%F).sql.gz
  1. 恢复数据库
bash 复制代码
gunzip < /backup/mysql_2025-01-01.sql.gz | mysql -u root -p

九、监控与日志

  1. 查看慢查询日志
bash 复制代码
sudo tail -f /var/log/mysql-slow.log
  1. 监控工具推荐
  • Prometheus + Grafana(可视化监控)
  • pt-query-digest(分析慢查询)
相关推荐
XLYcmy几秒前
信息检索报告数字经济赋能城市低碳治理的路径研究——基于“传统数据库 + 生成式人工智能”双轮驱动的检索实践 检索实施与结果分析 Web of Science
数据库·ai·llm·prompt·ssci·deepseek·wos
Decay__5 分钟前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
codigger1 小时前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
数据库·sql·mysql·程序员
麦壳饼1 小时前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb
Decay__10 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
java_logo10 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
凤凰院凶涛QAQ12 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
码农小河6612 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
张小姐的猫12 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节