在云服务器(1核1G 内存)上安装 MySQL 是可以实现的,但需要注意资源限制问题。MySQL 在默认配置下可能对 1 核 1G 的机器来说稍显吃力,尤其是在并发访问较多时。但如果你只是用于学习、测试或者轻量级网站,是可以运行的。
下面是一个完整的安装和优化指南:
🧾 一、系统环境要求
- 操作系统:以 CentOS 7/8 或 Ubuntu 20.04+ 为例
- CPU:1 核
- 内存:1GB RAM
- 硬盘:至少 10GB 剩余空间
🛠️ 二、安装 MySQL(以 CentOS 为例)
1. 添加 MySQL 官方源(以 MySQL 8.0 为例)
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
注意:根据你的 CentOS 版本调整上面的 URL。
2. 安装 MySQL 服务
sudo yum install mysql-server
3. 启动 MySQL 并设置开机启动
sudo systemctl start mysqld
sudo systemctl enable mysqld
4. 获取初始密码并登录 MySQL
sudo grep 'temporary password' /var/log/mysqld.log
输出类似如下内容:
A temporary password is generated for root@localhost: abcdefg123!
使用这个密码登录 MySQL:
mysql -u root -p
然后修改密码(必须符合安全策略):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
⚙️ 三、优化 MySQL 配置(针对 1G 内存)
编辑 MySQL 配置文件:
sudo vi /etc/my.cnf
在 [mysqld] 段中添加或修改以下参数:
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
query_cache_type = 0
query_cache_size = 0
tmp_table_size = 16M
max_connections = 50
wait_timeout = 28800
interactive_timeout = 28800
这些配置是为了尽量减少内存占用,适用于小型站点或开发测试环境。
保存后重启 MySQL:
sudo systemctl restart mysqld
🔐 四、安全加固建议
- 运行安全初始化脚本
sudo mysql_secure_installation
按提示操作:删除匿名用户、禁止远程 root 登录、删除 test 数据库等。
- 创建普通用户而不是用 root
CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON yourdb.* TO 'youruser'@'%';
FLUSH PRIVILEGES;
- 防火墙开放 3306 端口(如需远程访问)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
📊 五、监控与性能建议
- 使用
htop、free -h、top监控内存使用情况。 - 如果经常出现 OOM(Out of Memory),可以考虑:
- 开启 Swap 分区(临时缓解)
- 升级服务器配置
- 改用 MariaDB(更轻量)
💡 六、Swap 分区设置(可选)
对于 1G 内存的服务器,开启 Swap 可以避免内存不足导致的崩溃。
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 设置 swappiness(推荐值 10)
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
✅ 总结
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | CentOS 7+/Ubuntu 20.04+ |
| MySQL 版本 | 8.0.x 或 5.7.x |
| 最大连接数 | 不超过 50 |
| InnoDB 缓冲池大小 | 128MB 左右 |
| 是否启用 Swap | 强烈建议 |
如果你只是用来做开发调试或个人博客数据库,1核1G 是可以胜任的,但要注意定期监控资源使用情况,避免因内存不足导致 MySQL 被 OOM Killer 杀掉。
需要我帮你写一个一键安装脚本吗?
云计算HECS