目录

  1. MySQL 简介与版本选择
  2. 环境准备与依赖说明
  3. MySQL 安装流程(Windows/Linux/Mac)
  4. 核心配置详解(my.cnf/my.ini)
  5. 启动管理与服务优化
  6. 安全加固与权限管理
  7. 性能调优关键参数
  8. 远程访问配置及防火墙设置
  9. 常用管理命令与实战操作
  10. 备份恢复策略简介
  11. 附录:常见故障排查与日志分析

1. MySQL 简介与版本选择

  • MySQL 是全球使用最广泛的开源关系型数据库系统,支持 ACID 事务、高性能存储引擎(InnoDB)、复制和分区等
  • 版本推荐:
    • 5.7:成熟稳定,广泛兼容性
    • 8.0:最新特性,如更强的 JSON 支持、窗口函数、持久化内存优化,推荐新项目使用
  • 依据项目需求选择:企业级建议 8.0,轻量项目 5.7 亦可

2. 环境准备与依赖说明

  • 操作系统支持:Linux(CentOS、Ubuntu、Debian)、Windows Server、MacOS
  • 硬件推荐:至少 4 核 CPU,8G 以上内存,SSD 存储
  • 必备依赖:
    • Linux:libaiogcccmake(源码编译时)
    • Windows:Visual C++ Redistributable
  • 确认无端口冲突(默认3306)

3. MySQL 安装流程

3.1 Linux(二进制包安装示例)

# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.xx-linux-glibc2.12-x86_64.tar.xz

# 解压
tar -xf mysql-8.0.xx-linux-glibc2.12-x86_64.tar.xz -C /usr/local/

# 创建软链接
ln -s /usr/local/mysql-8.0.xx-linux-glibc2.12-x86_64 /usr/local/mysql

# 添加mysql用户
groupadd mysql
useradd -r -g mysql mysql

# 初始化数据库
cd /usr/local/mysql
mkdir mysql-files
chmod 750 mysql-files
bin/mysqld --initialize --user=mysql

# 设置权限
chown -R mysql:mysql /usr/local/mysql

# 启动服务
bin/mysqld_safe --user=mysql &

3.2 Windows(MSI安装)

  • 下载官方 MSI 安装包
  • 双击安装,选择安装路径及产品特性
  • 配置服务器类型(开发/生产)
  • 设置 root 用户密码及端口号
  • 完成安装,配置环境变量 %PATH% 添加 mysql\bin

4. 核心配置详解(my.cnf/my.ini)

典型配置文件位置:

  • Linux: /etc/my.cnf 或 /etc/mysql/my.cnf
  • Windows: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

关键参数详解:

[mysqld]

# 基础配置
port=3306
basedir=/usr/local/mysql
datadir=/var/lib/mysql

# 字符集设置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake

# 连接配置
max_connections=500
wait_timeout=28800
interactive_timeout=28800

# 日志配置
log_error=/var/log/mysql/error.log
slow_query_log=ON
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=2

# InnoDB 存储引擎配置
default_storage_engine=InnoDB
innodb_buffer_pool_size=4G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=1
innodb_file_per_table=ON

# 复制相关(如有需要)
server-id=1
log-bin=mysql-bin

# 其他优化
tmp_table_size=64M
max_heap_table_size=64M
table_open_cache=4000

5. 启动管理与服务优化

启动、停止、重启命令

  • Linux (systemd)
sudo systemctl start mysqld
sudo systemctl stop mysqld
sudo systemctl restart mysqld
  • Windows 服务
net start MySQL80
net stop MySQL80

查看运行状态与端口

ss -tnlp | grep 3306
mysqladmin -u root -p status

6. 安全加固与权限管理

  • 执行安全初始化:
sudo mysql_secure_installation
  • 配置强密码策略:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
SHOW VARIABLES LIKE 'validate_password%';
  • 创建普通用户并授予权限:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
  • 禁止 root 远程登录(编辑 my.cnf 加入):
[mysqld]
skip-networking=0
bind-address=127.0.0.1

7. 性能调优关键参数

  • innodb_buffer_pool_size:调节 InnoDB 缓冲池大小,建议占用物理内存 60%-80%
  • query_cache_size:MySQL 8.0 已移除,5.7 可适当配置
  • max_connections:根据并发需求调整,过高会占用大量内存
  • tmp_table_size 与 max_heap_table_size:临时表大小,避免写磁盘慢查询
  • 慢查询日志:定位性能瓶颈

8. 远程访问配置及防火墙设置

  • 修改 bind-address=0.0.0.0 允许远程连接
  • 授权远程访问用户:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • Linux 防火墙放行3306端口(以firewalld为例):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

9. 常用管理命令与实战操作

  • 登录数据库:
mysql -u root -p
  • 查看当前用户权限:
SHOW GRANTS FOR CURRENT_USER;
  • 查看服务器状态:
SHOW STATUS LIKE '%Threads%';
  • 显示当前连接:
SHOW PROCESSLIST;

10. 备份恢复策略简介

  • 逻辑备份:mysqldump
mysqldump -u root -p mydb > mydb_backup.sql
mysql -u root -p mydb < mydb_backup.sql
  • 物理备份:XtraBackupmysqlpump 等工具
  • 恢复测试确保数据安全

11. 附录:常见故障排查与日志分析

  • 查看错误日志:
tail -f /var/log/mysql/error.log
  • 常见错误码解读
  • 连接失败检查网络、防火墙、bind-address
  • 慢查询检查及优化

总结

本教程覆盖了 MySQL 安装、配置、性能调优、安全加固、远程访问和日常管理等关键内容,帮助你搭建稳定、高效的 MySQL 服务。


如果需要,我还可以帮你准备:

  • 深入的高可用集群架构(主从复制、组复制、ProxySQL)
  • MySQL 监控报警方案(使用 Prometheus + Grafana)
  • SQL 优化实战案例与索引设计详解