努力
加油

腾讯云轻量服务器Ubuntu系统如何正确安装MySQL 8.0?

在腾讯云轻量应用服务器(Lighthouse)上部署 Ubuntu 系统的 MySQL 8.0,其实并没有太多“黑科技”,核心难点在于版本源的选择和权限配置。很多新手直接 apt install mysql-server 装完发现连不上或者版本不对,通常是因为默认源的问题。

下面是一套经过验证的、干净且标准的安装流程。我会避开那些虚头巴脑的理论,直接给命令和关键避坑点。

第一步:确认系统环境

首先,登录你的腾讯云轻量服务器终端。建议先更新一下软件包索引,确保获取的是最新元数据。

sudo apt update
sudo apt upgrade -y

注意:轻量服务器内存通常较小(如 2G/4G),如果执行 upgrade 时提示磁盘空间不足或内存溢出,可以跳过这一步,直接进行后续操作。

第二步:安装 MySQL 8.0

这里有一个关键点:Ubuntu 的官方默认源中,MySQL 的版本取决于你的 Ubuntu 发行版代号。

  • Ubuntu 20.04 (Focal): 默认源通常包含 MySQL 8.0。
  • Ubuntu 22.04 (Jammy): 默认源也包含 MySQL 8.0。
  • Ubuntu 18.04: 默认源可能是 MySQL 5.7,需要额外添加源。

假设你使用的是主流的 20.04 或 22.04,可以直接通过 APT 安装。腾讯云镜像站同步了 Debian/Ubuntu 官方源,速度很快。

sudo apt install mysql-server -y

安装过程中,屏幕可能会短暂黑屏或滚动日志,这是正常的。安装完成后,MySQL 服务应该会自动启动。

验证安装是否成功:

systemctl status mysql

如果看到绿色的 active (running),说明服务已就绪。

第三步:安全初始化(重要)

MySQL 8.0 引入了更严格的安全机制。刚安装完时,root 用户默认使用 auth_socket 插件认证,这意味着只有本地 root 系统用户才能通过 socket 连接,无法从外部远程连接,也不适合常规开发调试。

我们需要运行安全脚本进行调整:

sudo mysql_secure_installation

执行此命令后,你会被问到一系列问题,以下是推荐选项:

  1. VALIDATE PASSWORD COMPONENT: 询问是否启用密码强度验证插件。
    • 选 Y(开启)。这能防止弱密码,对于云服务器来说更安全。
  2. Set root password?: 设置 root 用户的密码。
    • 选 Y,并输入一个强密码(大小写字母+数字+符号,至少8位)。
  3. Remove anonymous users?: 删除匿名用户?
    • 选 Y。
  4. Disallow root login remotely?: 禁止 root 远程登录?
    • 选 N(即允许远程登录)。
    • 解释:虽然生产环境建议禁止 root 远程,但作为开发者或初期搭建,为了方便管理(尤其是如果你打算用 Navicat/DBeaver 等工具连接),建议暂时允许。如果你非常注重安全,可以选 Y,然后手动创建一个有远程权限的非 root 用户。
  5. Remove test database and access to it?: 删除测试数据库?
    • 选 Y。
  6. Reload privilege tables now?: 重新加载权限表?
    • 选 Y。

第四步:配置远程访问(腾讯云轻量服务器特有)

很多用户在这里卡住:本地能连,网络连不上。这是因为 Ubuntu 默认绑定了 127.0.0.1,只监听本地回环地址。

  1. 修改 MySQL 配置文件

    编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:

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

    找到 bind-address 这一行:

    bind-address = 127.0.0.1

    将其修改为:

    bind-address = 0.0.0.0

    保存并退出(Ctrl+O, Enter, Ctrl+X)。

  2. 重启 MySQL 服务

    sudo systemctl restart mysql
  3. 配置腾讯云防火墙(轻量应用服务器控制台)

    仅仅修改 MySQL 配置是不够的,腾讯云轻量服务器的“防火墙”规则会拦截端口。

    • 登录 腾讯云轻量应用服务器控制台。
    • 点击左侧菜单的 防火墙。
    • 检查是否有规则放行 3306 端口。
    • 如果没有,点击 新建规则:
      • 方向:入方向
      • 协议:TCP
      • 端口范围:3306
      • 授权对象:0.0.0.0/0(或者指定你的 IP 段,更安全)
      • 策略:允许
    • 保存规则。
  4. 配置 MySQL 用户权限(可选但推荐)

    刚才我们在 mysql_secure_installation 中允许了 root 远程登录,但为了更规范的操作,你可以创建一个专门用于远程连接的普通用户:

    sudo mysql

    进入 MySQL 命令行后,执行以下 SQL(请将 your_password 替换为你的密码):

    -- 创建新用户
    CREATE USER 'dev_user'@'%' IDENTIFIED BY 'your_strong_password';
    
    -- 授予所有数据库的远程访问权限(根据实际需求调整库名)
    GRANT ALL PRIVILEGES ON *.* TO 'dev_user'@'%';
    
    -- 刷新权限
    FLUSH PRIVILEGES;
    
    -- 退出
    EXIT;

第五步:验证连接

现在,尝试在你的本地电脑上使用数据库客户端(如 DBeaver, Navicat, 或命令行)连接。

  • 主机 IP: 腾讯云轻量服务器的公网 IP
  • 端口: 3306
  • 用户名: root 或 dev_user
  • 密码: 你设置的密码

如果能连上,恭喜你,安装完成。

常见问题与避坑指南

  1. 内存不足导致 MySQL 启动失败
    腾讯云轻量服务器如果配置较低(如 1核 1G),MySQL 8.0 默认配置可能占用过多内存导致 OOM(Out of Memory)。如果发现服务启动失败,查看日志:

    sudo journalctl -xeu mysql

    如果是内存问题,你需要限制 MySQL 的缓冲池大小。编辑 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 下添加:

    innodb_buffer_pool_size = 128M

    然后重启服务。

  2. Navicat 连接报错 "Authentication plugin ‘caching_sha2_password’ cannot be loaded"
    这是 MySQL 8.0 的新特性,旧版客户端不支持。解决方法是将用户认证方式改回传统的 mysql_native_password:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
    FLUSH PRIVILEGES;
  3. 忘记 root 密码怎么办?
    不要慌,可以通过免密码模式重置:

    sudo systemctl stop mysql
    sudo mysqld_safe --skip-grant-tables &
    # 等待几秒后,无密码登录
    sudo mysql
    # 执行上述 ALTER USER 语句重置密码
    # 最后 kill 掉 mysqld_safe 进程,正常启动 mysql
    sudo systemctl start mysql

总结

在腾讯云轻量服务器上装 MySQL 8.0,核心就三步:APT 安装 -> 安全脚本初始化 -> 开放防火墙端口。只要注意 Ubuntu 版本对应的默认源,以及轻量服务器特有的防火墙规则,基本不会遇到大坑。对于生产环境,强烈建议使用云数据库 MySQL 版(TencentDB for MySQL),省心省力;但对于学习、测试或小项目,轻量服务器自建完全足够,成本极低。