目录
- MySQL 简介与版本选择
- 环境准备与依赖说明
- MySQL 安装流程(Windows/Linux/Mac)
- 核心配置详解(my.cnf/my.ini)
- 启动管理与服务优化
- 安全加固与权限管理
- 性能调优关键参数
- 远程访问配置及防火墙设置
- 常用管理命令与实战操作
- 备份恢复策略简介
- 附录:常见故障排查与日志分析
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:
libaio
、gcc
、cmake
(源码编译时) - Windows:Visual C++ Redistributable
- Linux:
- 确认无端口冲突(默认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
- 物理备份:
XtraBackup
、mysqlpump
等工具 - 恢复测试确保数据安全
11. 附录:常见故障排查与日志分析
- 查看错误日志:
tail -f /var/log/mysql/error.log
- 常见错误码解读
- 连接失败检查网络、防火墙、bind-address
- 慢查询检查及优化
总结
本教程覆盖了 MySQL 安装、配置、性能调优、安全加固、远程访问和日常管理等关键内容,帮助你搭建稳定、高效的 MySQL 服务。
如果需要,我还可以帮你准备:
- 深入的高可用集群架构(主从复制、组复制、ProxySQL)
- MySQL 监控报警方案(使用 Prometheus + Grafana)
- SQL 优化实战案例与索引设计详解
发表回复