努力
加油

在阿里云轻量服务器Ubuntu系统中如何配置MySQL环境?

在阿里云轻量应用服务器(Simple Application Server, SAS)上部署 Ubuntu 系统的 MySQL,流程其实非常标准化,但有几个“坑”是新手容易踩的。作为过来人,我直接给你一套最稳妥、最实用的操作指南,涵盖从安装到安全配置的全过程。

核心思路

  1. 系统更新:确保基础环境干净。
  2. 安装 MySQL:推荐使用官方源或 Ubuntu 默认源(8.0+ 版本)。
  3. 安全加固:这是最关键的一步,尤其是对于公网开放的轻量服务器。
  4. 远程连接测试:验证是否真的能连上。

第一步:登录与基础准备

通过 SSH 登录你的 Ubuntu 实例。建议直接使用 root 用户或者拥有 sudo 权限的用户操作。

# 更新软件包列表,防止后续安装出现依赖问题
sudo apt update && sudo apt upgrade -y

注意:轻量服务器的内存通常较小(如 1核1G/2G),如果内存低于 1GB,建议在安装前创建一个 Swap 分区,否则 MySQL 启动可能会因为 OOM(内存溢出)失败。
快速创建 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

第二步:安装 MySQL

Ubuntu 的软件源中通常包含较新的 MySQL 版本。我们使用 apt 安装,这样后续升级和管理更方便。

# 安装 mysql-server 及其依赖
sudo apt install mysql-server -y

安装完成后,MySQL 服务通常会自动启动。你可以检查状态:

sudo systemctl status mysql

如果显示 active (running),说明服务已就绪。如果没有,手动启动:

sudo systemctl start mysql
sudo systemctl enable mysql  # 设置开机自启

第三步:运行安全脚本(强烈建议)

MySQL 安装后默认配置并不适合生产环境,尤其是密码策略和匿名账户。运行内置的安全脚本来加固:

sudo mysql_secure_installation

执行过程中你会遇到几个选项,建议如下选择:

  1. VALIDATE PASSWORD COMPONENT(密码强度验证插件):
    • 问你是否启用?选 Y。
    • 级别选择?选 2(Strong,强制大小写、数字、特殊字符混合)。
  2. Change the root password?:
    • 如果你已经设置了强密码,可以选 N,但为了统一,建议重新设置一个高强度密码。
  3. Remove anonymous users?:
    • 选 Y,删除匿名用户。
  4. Disallow root login remotely?:
    • 重点! 这里选 Y。禁止 root 用户直接通过密码远程登录,这是安全底线。
  5. Remove test database and access to it?:
    • 选 Y,删除测试库。
  6. Reload privilege tables now?:
    • 选 Y,刷新权限。

第四步:配置允许远程访问

默认情况下,MySQL 只监听本地回环地址(127.0.0.1),外部无法连接。你需要修改配置文件。

  1. 编辑 MySQL 配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 找到 bind-address 这一行:

    bind-address = 127.0.0.1

    将其改为:

    bind-address = 0.0.0.0

    (注:0.0.0.0 表示监听所有网卡 IP)

  3. 保存并退出(Nano 编辑器:按 Ctrl+O 回车保存,Ctrl+X 退出)。

  4. 重启 MySQL 使配置生效:

    sudo systemctl restart mysql

第五步:创建专用数据库用户(最佳实践)

不要直接用 root 账号连接你的应用程序! 这是严重的安全风险。你应该创建一个具有特定权限的普通用户。

  1. 进入 MySQL 命令行:

    sudo mysql
  2. 执行以下 SQL 命令(替换为你自己的用户名和密码):

    -- 创建新用户,允许从任意主机连接(% 代表任意IP,生产环境建议指定具体IP)
    CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_strong_password';
    
    -- 创建数据库
    CREATE DATABASE your_database_name;
    
    -- 授权该用户对数据库的完全控制权
    GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'%';
    
    -- 刷新权限
    FLUSH PRIVILEGES;
    
    -- 退出
    EXIT;

第六步:配置阿里云防火墙与安全组

这一步很多人会忽略,导致前面都配好了却连不上。

  1. 登录阿里云控制台,找到你的轻量应用服务器。
  2. 进入 “防火墙” 或 “安全组” 设置页面。
  3. 添加入方向规则:
    • 协议:TCP
    • 端口范围:3306
    • 授权对象:建议填写你本地的公网 IP(更安全),或者 0.0.0.0/0(方便调试,但不推荐长期开放)。
    • 描述:MySQL Remote Access

第七步:验证连接

在你的本地电脑(Windows/Mac/Linux)上使用数据库管理工具(如 Navicat, DBeaver, MySQL Workbench)或命令行连接。

  • Host: 阿里云轻量服务器的公网 IP
  • Port: 3306
  • User: 你在第五步创建的 your_username
  • Password: 对应的密码

如果连接成功,恭喜你,环境搭建完毕。


常见问题排查(避坑指南)

  1. 连接超时(Timeout):

    • 90% 的原因是阿里云防火墙没开 3306 端口,或者云服务器内部防火墙(ufw)拦截了。
    • 检查内部防火墙:sudo ufw status。如果是 active,需要放行:sudo ufw allow 3306/tcp。
  2. Access denied for user ‘root’@’…’:

    • 这是因为你在第三步中禁用了 root 远程登录。请使用第五步创建的普通用户登录。
  3. Can’t connect to MySQL server on ‘xxx’ (111):

    • 确认 MySQL 服务正在运行:sudo systemctl status mysql。
    • 确认 mysqld.cnf 中的 bind-address 已修改为 0.0.0.0。
  4. 性能瓶颈:

    • 轻量服务器资源有限。如果网站流量稍大,建议调整 /etc/mysql/mysql.conf.d/mysqld.cnf 中的 innodb_buffer_pool_size。对于 1G 内存机器,设置为 128M 或 256M 即可;2G 内存可设为 512M。不要设太大,否则会导致系统 OOM。

按照这个流程走,基本不会出错。如果有其他具体问题,欢迎继续交流。