在一台 4核8G 的服务器上安装 MySQL 是完全可行的,而且这种配置对于中小型应用或开发环境来说已经相当不错。以下是详细的安装步骤(以 MySQL 8.0 为例,操作系统为 CentOS 7/8 或 Ubuntu 20.04+)。
✅ 一、准备工作
1. 系统要求检查
- CPU:4核
- 内存:8GB
- 磁盘:建议至少 20GB 可用空间(SSD 更佳)
- 操作系统:推荐使用 CentOS 7+/8+ 或 Ubuntu 20.04+
4核8G 足以运行 MySQL 8.0,但需合理配置
my.cnf避免内存溢出。
✅ 二、安装 MySQL(以 Ubuntu 20.04 为例)
方法一:Ubuntu 安装 MySQL 8.0
# 1. 更新系统包
sudo apt update
# 2. 安装 MySQL 服务器
sudo apt install mysql-server -y
# 3. 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
# 4. 运行安全配置脚本(设置 root 密码、删除匿名用户等)
sudo mysql_secure_installation
执行
mysql_secure_installation时:
- 建议设置强密码
- 删除匿名用户
- 禁止 root 远程登录(除非需要)
- 删除测试数据库
- 重载权限表
方法二:CentOS 7/8 安装 MySQL 8.0
# 1. 添加 MySQL 官方 Yum 仓库
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 2. 安装 MySQL 服务器
sudo yum install mysql-server -y
# 3. 启动并开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 4. 查看临时 root 密码(MySQL 8.0 首次启动会生成)
sudo grep 'temporary password' /var/log/mysqld.log
# 5. 运行安全配置
sudo mysql_secure_installation
注意:首次登录使用临时密码,之后会强制修改。
✅ 三、配置优化(适用于 4核8G)
编辑 MySQL 配置文件,优化性能和内存使用。
Ubuntu 路径:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
CentOS 路径:
sudo vim /etc/my.cnf
推荐配置(适用于 8G 内存):
[mysqld]
# 基础设置
port = 3306
bind-address = 0.0.0.0 # 允许远程连接(注意安全)
user = mysql
# 缓冲与缓存
key_buffer_size = 256M
max_allowed_packet = 64M
table_open_cache = 2048
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 4M
tmp_table_size = 256M
max_heap_table_size = 256M
# InnoDB 设置(重点)
innodb_buffer_pool_size = 4G # 推荐为物理内存的 50%~70%
innodb_log_file_size = 512M # 日志文件大小,影响恢复时间
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1 # 安全模式,生产环境建议 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
# 连接相关
max_connections = 200 # 根据业务调整
thread_cache_size = 16
query_cache_type = 0 # MySQL 8.0 已移除查询缓存
query_cache_size = 0
# 日志
log-error = /var/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 跳过主机名解析(提升连接速度)
skip-name-resolve
修改后重启 MySQL:
sudo systemctl restart mysql # Ubuntu # 或 sudo systemctl restart mysqld # CentOS
✅ 四、防火墙设置(如需远程访问)
# Ubuntu (ufw)
sudo ufw allow 3306
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
⚠️ 注意:开放 3306 端口有安全风险,建议:
- 使用 SSH 隧道
- 限制 IP 访问(如只允许特定 IP)
- 使用强密码 + 用户权限控制
✅ 五、创建用户并授权(示例)
-- 登录 MySQL
sudo mysql -u root -p
-- 创建新用户(示例)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
-- 授权(示例:授予所有权限,生产环境应最小权限)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
✅ 六、监控与维护建议
-
使用
mysqltuner.pl工具分析性能建议:wget http://mysqltuner.pl perl mysqltuner.pl -
定期备份(使用
mysqldump或xtrabackup) -
监控慢查询日志
-
使用
htop、iotop观察系统资源
✅ 总结
| 项目 | 推荐值 |
|---|---|
| 服务器配置 | 4核8G |
| MySQL 版本 | 8.0 |
innodb_buffer_pool_size |
4G |
max_connections |
200 |
| 是否开启远程 | 按需,注意安全 |
| 存储引擎 | InnoDB(默认) |
如你有具体用途(如 WordPress、Java 应用、高并发等),可进一步调优配置。需要我帮你生成 my.cnf 模板或监控脚本吗?
ECLOUD博客