阿里云轻量服务器是否支持远程mysql?

阿里云轻量应用服务器(Simple Application Server)默认不支持直接远程连接 MySQL 数据库。

这是出于安全考虑,轻量服务器的防火墙策略默认只开放了 Web 服务(80/443)、SSH(22)等基础端口,而数据库端口(如 MySQL 的 3306)在创建实例时通常处于关闭状态。此外,MySQL 默认配置也是只允许本地连接(localhost)。

若你需要从外部(如本地电脑、其他云服务器)连接轻量服务器上的 MySQL,必须按以下两个步骤进行配置:

1. 开放安全组/防火墙端口

你需要登录阿里云控制台,找到该轻量应用服务器的“防火墙”或“安全组”设置,手动放行 MySQL 端口。

  • 操作路径:控制台 -> 轻量应用服务器 -> 选择实例 -> 点击“防火墙”。
  • 添加规则
    • 方向:入方向
    • 协议类型:TCP
    • 端口范围3306(或其他你使用的端口)
    • 授权对象:建议填写你的本机公网 IP(例如 1.2.3.4/32),而不是 0.0.0.0/0,以减小被扫描攻击的风险。

2. 修改 MySQL 配置文件

即使防火墙已开放,如果 MySQL 服务端配置未允许远程访问,连接依然会失败。你需要进入服务器内部修改配置。

  • 登录服务器:通过 SSH 登录轻量服务器。
  • 编辑配置文件(以 Ubuntu/CentOS 为例):
    sudo vim /etc/mysql/my.cnf
    # 或者 CentOS 7+ 可能是 /etc/my.cnf
  • 修改 bind-address
    找到 bind-address = 127.0.0.1 这一行,将其注释掉(在前面加 #)或修改为 0.0.0.0

    # bind-address = 127.0.0.1
    bind-address = 0.0.0.0
  • 创建远程用户并授权(非常重要):
    登录 MySQL 命令行:

    mysql -u root -p

    执行以下 SQL 语句(将 'your_password' 替换为你的密码,'%' 代表允许任意 IP 访问,生产环境建议指定具体 IP):

    -- 创建允许远程登录的用户(MySQL 5.7+)
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password';
    
    -- 赋予权限(例如对 test_db 库的所有权限)
    GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%';
    FLUSH PRIVILEGES;
    EXIT;
  • 重启 MySQL 服务
    sudo systemctl restart mysql
    # 或
    sudo service mysqld restart

⚠️ 安全风险提示

由于轻量应用服务器通常没有企业级云防火墙的高级防护功能,直接暴露 3306 端口存在较高的安全风险(如暴力破解、勒索病毒)。请务必注意:

  1. 强密码:确保数据库密码足够复杂。
  2. 限制 IP:在安全组和 MySQL 用户授权中,尽量只允许受信任的特定 IP 地址访问,不要使用 0.0.0.0% 对所有开放。
  3. 替代方案:如果业务需要高安全性,建议购买阿里云 RDS(关系型数据库服务),它提供了更完善的白名单机制和自动备份功能;或者使用 SSH 隧道(SSH Tunneling)进行加密连接,这样无需在防火墙上开放 3306 端口。
未经允许不得转载:云计算 » 阿里云轻量服务器是否支持远程mysql?