加油
努力

在阿里云2核4G的ECS上手动安装MySQL需要注意什么?

在阿里云2核4G的ECS上手动安装MySQL时,虽然配置尚可,但资源有限,需特别注意性能、安全和稳定性。以下是关键注意事项:


一、系统准备与环境优化

  1. 选择合适的操作系统

    • 推荐使用 CentOS 7/8、Ubuntu 20.04 LTS 等长期支持版本。
    • 确保系统更新到最新补丁:
      sudo yum update    # CentOS
      sudo apt update && sudo apt upgrade  # Ubuntu
  2. 关闭防火墙或开放3306端口

    • 若启用防火墙(firewalld/ufw),需放行 MySQL 默认端口:
      sudo firewall-cmd --permanent --add-port=3306/tcp
      sudo firewall-cmd --reload
    • 或直接通过阿里云安全组规则添加入方向规则:允许 TCP 3306(建议限制源IP,避免公网暴露)。
  3. 禁用SELinux(可选)

    • SELinux 可能干扰 MySQL 启动:
      sudo setenforce 0
      sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

二、MySQL 安装方式选择

推荐使用官方 Yum/Apt 源安装,避免编译复杂性:

方法1:使用官方 MySQL Yum Repo(CentOS)

# 下载并安装 MySQL Yum 源
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

# 安装 MySQL Server
sudo yum install mysql-community-server

# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

方法2:Debian/Ubuntu 使用 APT

wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
sudo apt update
sudo apt install mysql-server

三、初始化与安全配置

  1. 获取临时密码并登录

    • 安装后首次启动会生成临时密码:
      sudo grep 'temporary password' /var/log/mysqld.log
    • 登录并修改密码:
      mysql -u root -p
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword!';
  2. 运行安全脚本(强烈推荐)

    sudo mysql_secure_installation
    • 删除匿名用户
    • 禁止 root 远程登录(除非必要)
    • 删除测试数据库
    • 重载权限表

四、性能调优(针对 2核4G)

默认配置对 4G 内存偏高,需调整 my.cnf 配置文件(通常位于 /etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf):

[mysqld]
# 基础设置
port = 3306
socket = /var/lib/mysql/mysql.sock
datadir = /var/lib/mysql
skip-name-resolve
max_connections = 150          # 根据应用需求调整,避免过高

# 内存相关(关键!)
innodb_buffer_pool_size = 1G   # 总内存的 50%~70%,不要超过 2G
innodb_log_file_size = 256M    # 提高事务日志大小
key_buffer_size = 64M          # MyISAM 表使用,若不用可更小
sort_buffer_size = 2M
join_buffer_size = 2M
tmp_table_size = 64M
max_heap_table_size = 64M

# 日志与安全
log-error = /var/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2

# 绑定地址(重要!)
bind-address = 127.0.0.1        # 仅本地访问,提升安全性
# bind-address = 0.0.0.0        # 如需远程访问,请配合安全组和用户权限控制

✅ 修改 innodb_buffer_pool_size 是最重要的优化项。

⚠️ 修改 innodb_log_file_size 后需先停止 MySQL,删除旧日志文件再重启。


五、安全建议

  1. 禁止 root 远程登录

    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
    FLUSH PRIVILEGES;
  2. 创建专用用户并授权

    CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPassword!';
    GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'appuser'@'%';
    FLUSH PRIVILEGES;
  3. 定期备份

    • 使用 mysqldump 或物理备份工具(如 Percona XtraBackup)。
    • 示例:
      mysqldump -u root -p --all-databases > backup.sql
  4. 监控资源使用

    • 使用 top, htop, free -h 监控 CPU 和内存。
    • MySQL 内部命令:
      SHOW PROCESSLIST;
      SHOW STATUS LIKE 'Threads_connected';

六、其他注意事项

  • 磁盘空间:确保系统盘有足够空间(至少 10GB 可用),建议挂载数据盘存放数据。
  • 时区设置:确认系统与 MySQL 时区一致:
    SET GLOBAL time_zone = '+8:00';
  • 自动启动:确保 MySQL 加入开机自启:
    sudo systemctl enable mysqld

总结

项目 建议
内存分配 innodb_buffer_pool_size = 1G
安全性 关闭远程 root、使用安全组限制 IP
性能 调整连接数、日志、排序缓冲
备份 定期备份,防止数据丢失
监控 观察连接数、慢查询日志

通过合理配置,2核4G 的 ECS 完全可以稳定运行轻量级 MySQL 应用(如博客、中小后台系统)。若负载较高,建议后续升级配置或使用阿里云 RDS 托管服务。

云服务器