努力
加油

Ubuntu系统下阿里云轻量服务器安装MySQL的步骤是什么?

在阿里云轻量应用服务器(Simple Application Server)上部署 MySQL,核心难点不在于安装命令本身,而在于网络配置和防火墙策略。很多新手装完数据库发现本地连不上,90% 是因为没放行 3306 端口。

下面按生产环境可用的标准流程梳理一遍,涵盖从系统准备到远程连接验证的全过程。假设你使用的是 Ubuntu 20.04/22.04 LTS 版本(目前主流),通过 SSH 登录服务器后执行以下操作。

1. 系统更新与基础依赖

先确保系统包是最新的,避免安装过程中出现依赖冲突。

sudo apt update && sudo apt upgrade -y

2. 安装 MySQL

Ubuntu 官方源里的 MySQL 版本通常比较稳定。推荐使用 mysql-server 包。

sudo apt install mysql-server -y

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

systemctl status mysql

如果显示 active (running),说明服务正常。如果没有自动启动,手动启动并设置开机自启:

sudo systemctl start mysql
sudo systemctl enable mysql

3. 安全加固(关键步骤)

刚装好的 MySQL 默认只允许本地 root 用户登录,且密码强度策略可能未启用。建议运行安全脚本进行初始化配置。

sudo mysql_secure_installation

执行过程中会提示你配置几个选项,建议如下:

  • Validate Password Component: 选择 Y,启用密码强度校验(强烈建议开启,防止弱口令)。
  • Change the root password?: 如果你之前没设过或想重置,选 Y,然后设置一个强密码。
  • Remove anonymous users?: 选 Y。
  • Disallow root login remotely?: 注意! 这里默认是禁止远程 root 登录。但我们需要远程访问,所以稍后我们会创建一个新的管理员账号来远程登录,而不是直接开 root 的远程权限(出于安全考虑,不建议直接开放 root 远程)。
  • Remove test database?: 选 Y。
  • Reload privilege tables now?: 选 Y。

4. 创建远程访问用户

为了安全,不要直接用 root 远程连接。创建一个专用的管理用户,并授权其远程访问权限。

进入 MySQL 命令行:

sudo mysql

执行以下 SQL 语句(请替换为你的用户名和密码):

-- 创建新用户 'myuser',允许从任意主机 '%' 连接
CREATE USER 'myuser'@'%' IDENTIFIED BY 'YourStrongPassword123!';

-- 授予所有数据库的完全权限(生产环境建议最小权限原则,比如只给特定库)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

注意:如果你的 MySQL 版本较新(8.0+),认证插件可能是 caching_sha2_password。部分旧版客户端工具(如 Navicat 旧版本、某些 Python 库)可能不支持。如果遇到连接错误,可以将认证方式改回传统的 mysql_native_password:

ALTER USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword123!';
FLUSH PRIVILEGES;

5. 修改 MySQL 监听地址

默认情况下,MySQL 只监听 127.0.0.1(localhost)。要允许外部连接,必须修改绑定地址。

编辑配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 这一行,将其修改为:

bind-address = 0.0.0.0

保存并退出(Nano 编辑器按 Ctrl+O, Enter, Ctrl+X)。

重启 MySQL 服务使配置生效:

sudo systemctl restart mysql

6. 阿里云轻量服务器防火墙设置(最容易踩坑的一步)

即使 MySQL 监听了 0.0.0.0,如果云厂商的防火墙没开,外部依然无法访问。轻量应用服务器有独立的防火墙控制台,不是 iptables。

  1. 登录阿里云控制台,进入【轻量应用服务器】实例详情。
  2. 找到左侧菜单的 【防火墙】 或 【安全组】 标签页。
  3. 点击 【添加规则】。
  4. 填写规则:
    • 方向:入方向
    • 协议:TCP
    • 端口范围:3306
    • 授权对象:0.0.0.0/0(表示允许所有 IP,生产环境建议改为你的固定公网 IP,如 123.45.67.89/32)
    • 优先级:1
  5. 保存规则。

7. 验证连接

现在从你的本地电脑尝试连接。

使用命令行测试:

mysql -h <你的服务器公网IP> -P 3306 -u myuser -p

或者使用图形化工具(如 DBeaver, Navicat, HeidiSQL):

  • Host: 服务器公网 IP
  • Port: 3306
  • User: myuser
  • Password: 你设置的密码

如果能成功进入 MySQL 命令行或看到数据库列表,说明部署完成。

常见问题排查

  1. Connection refused (111):

    • 检查 MySQL 是否正在运行 (systemctl status mysql)。
    • 检查 /etc/mysql/mysql.conf.d/mysqld.cnf 中 bind-address 是否为 0.0.0.0。
    • 确认阿里云防火墙已放行 3306 端口。
  2. Authentication plugin ‘caching_sha2_password’:

    • 这是 MySQL 8.0 的新特性。解决方法是在上面第 5 步中,将用户的认证插件改为 mysql_native_password。
  3. 权限不足 (Access denied for user ‘root’@’…’):

    • 确保你没有试图用 root 远程登录,而是使用了新建的 myuser。
    • 确保执行了 FLUSH PRIVILEGES;。
  4. 性能瓶颈:

    • 轻量服务器的 CPU 和内存有限。如果是高并发场景,建议调整 MySQL 的 innodb_buffer_pool_size 等参数,或者直接使用阿里云 RDS 托管服务,让专业团队帮你做备份、监控和高可用。

这套流程覆盖了从安装到网络可达的核心环节,适合个人开发者和小微企业项目使用。