代码改变世界

【保姆级教程】Debian 服务器 MariaDB/Mysql 配置 Windows 远程连接全流程 - 指南

2026-01-23 12:40  tlnshuju  阅读(1)  评论(0)    收藏  举报

在实际开发和运维中,我们常需要在 Windows 端远程管理服务器上的 MariaDB 数据库。本文将详细记录从账号创建、数据库配置、防火墙开放到云安全组设置的完整流程,确保新手也能轻松上手。

一、前置说明

  • 服务器环境:Debian/Ubuntu 系统(已安装 MariaDB,未安装可参考文末拓展)。
  • 本地环境:Windows 10/11 系统,已安装数据库客户端(本文以 Navicat 为例)。
  • 核心目标:实现 Windows 端通过图形化工具远程连接服务器 MariaDB,兼顾可用性与基础安全性。

二、第一步:创建 MariaDB 远程访问专用账号

遵循“最小权限原则”创建专用账号,避免直接使用 root 账号远程连接,降低安全风险。

1. 本地登录 MariaDB 控制台

Debian 系统中,MariaDB 默认对 root 账号启用 unix_socket 认证,无需密码即可本地登录:

sudo mysql -u root

2. 创建远程账号并授权

根据实际需求选择以下两种方案,推荐生产环境使用方案 1,测试环境可临时使用方案 2。

方案 1:仅允许指定 Windows IP 访问(最安全)

假设你的 Windows 公网 IP 为 113.57.xxx.xxx(百度“IP”即可查询),创建账号 win_dbuser,密码 DB@Win2025!(强密码规范:大小写+数字+特殊字符):

-- 创建远程连接用户
-- 说明:'win_dbuser' 是用户名,可替换为你自定义的账号(如 'my_user')
-- '113.57.xxx.xxx' 是允许连接的Windows公网IP,必须替换为你的实际公网IP
-- 'DB@Win2025!' 是用户密码,可替换为你的自定义密码(建议包含大小写、数字和特殊字符)
CREATE USER 'win_dbuser'@'113.57.xxx.xxx' IDENTIFIED BY 'DB@Win2025!';
-- 授予用户对目标数据库的全部权限
-- 说明:'my_business.*' 表示对 my_business 数据库的所有表生效,需替换为你的实际数据库名(如 'my_db.*')
-- 后面的 'win_dbuser'@'113.57.xxx.xxx' 需与上面创建的用户名和IP保持一致
GRANT ALL PRIVILEGES ON my_business.* TO 'win_dbuser'@'113.57.xxx.xxx';
-- 刷新权限表
-- 作用:使上面的用户创建和权限授予配置立即生效,无需重启数据库服务
FLUSH PRIVILEGES;
-- 验证用户是否创建成功(可选执行)
-- 作用:查询 mysql 系统库中的 user 表,确认目标用户是否已正确创建
-- 其中 'win_dbuser' 需替换为你实际创建的用户名
SELECT user, host FROM mysql.user WHERE user = 'win_dbuser';
-- 退出数据库控制台
-- 作用:执行后会退出当前的MySQL命令行界面
exit;
方案 2:允许所有 IP 访问(测试用,生产禁用)

仅用于临时调试,开放所有 IP 连接存在安全风险:

-- 创建允许任意IP连接的用户
-- 说明:'test_dbuser' 是用户名,可替换为你自定义的账号(如 'dev_user')
-- '@'%'' 表示允许所有IP地址连接(% 是通配符,代表任意IP)
-- 'Test@2025!' 是用户密码,可替换为你的自定义密码(建议包含大小写、数字和特殊字符以提高安全性)
CREATE USER 'test_dbuser'@'%' IDENTIFIED BY 'Test@2025!';
-- 授予用户对指定数据库的全部权限
-- 说明:'my_business.*' 表示对 my_business 数据库中的所有表生效,需替换为你的实际数据库名(如 'project_db.*')
-- 后面的 'test_dbuser'@'%' 需与上面创建的用户名和IP范围保持一致(如果用户名修改了,这里也要同步修改)
GRANT ALL PRIVILEGES ON my_business.* TO 'test_dbuser'@'%';
-- 刷新权限表
-- 作用:使上述用户创建和权限授予的配置立即生效,无需重启数据库服务
FLUSH PRIVILEGES;
-- 退出数据库控制台
-- 作用:执行后会退出当前的MySQL命令行界面
exit;

三、第二步:配置 MariaDB 允许远程连接

默认情况下,MariaDB 仅监听本地 127.0.0.1 地址,需修改配置解除本地绑定限制。

1. 编辑 MariaDB 配置文件

Debian 系统中,MariaDB 核心配置文件路径为 /etc/mysql/mariadb.conf.d/50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

2. 修改 bind-address 配置

找到 bind-address = 127.0.0.1 这一行,按以下方式修改:

# 注释掉原配置,允许所有 IP 连接
# bind-address = 127.0.0.1
# 或直接设置为 0.0.0.0(明确允许所有 IP 监听)
bind-address = 0.0.0.0

3. 保存配置并重启 MariaDB

  • Ctrl + O 保存文件,按 Ctrl + X 退出编辑器。
  • 重启 MariaDB 使配置生效:
    sudo systemctl restart mariadb

4. 验证端口监听状态

确认 MariaDB 已监听 0.0.0.0:3306 端口(允许远程连接):

sudo netstat -tulpn | grep 3306

若输出类似 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1234/mariadbd,说明配置成功。

四、第三步:开放 Debian 服务器防火墙(ufw)

Debian 系统默认未安装 ufw 防火墙,需先安装并配置,开放 3306 端口(MariaDB 默认端口)。

1. 安装 ufw 防火墙

sudo apt update && sudo apt install -y ufw

2. 开放目标端口

根据账号授权方案选择对应配置,确保防火墙规则与账号权限匹配。

方案 1:仅允许指定 Windows IP 访问
# 替换为你的 Windows 公网 IP
sudo ufw allow from 113.57.xxx.xxx to any port 3306 proto tcp
方案 2:允许所有 IP 访问(测试用)
sudo ufw allow 3306/tcp

3. 启用防火墙并验证

  • 首次启用防火墙需先允许 SSH 连接(22 端口),避免远程登录断开:
    sudo ufw allow ssh
    sudo ufw enable  # 输入 y 确认启用
  • 查看防火墙规则,确认 3306 端口已开放:
    sudo ufw status
    输出中显示 3306/tcp 相关规则即生效。

五、第四步:配置云服务器安全组(云服务器必做)

若服务器是阿里云、腾讯云、华为云等云服务器,仅配置本地防火墙不够,需在云平台安全组中开放 3306 端口(云安全组是外网访问的第一道防线)。

以阿里云为例(其他云平台逻辑一致)

  1. 登录阿里云控制台,进入「云服务器 ECS」,找到目标 Debian 服务器。
  2. 点击「安全组」,选择服务器绑定的安全组,点击「配置规则」→「入方向规则」→「添加规则」。
  3. 按以下参数配置:
    • 规则方向:入方向
    • 授权策略:允许
    • 协议类型:TCP
    • 端口范围:3306/3306
    • 授权对象:方案 1 填 Windows 公网 IP(如 113.57.xxx.xxx/32),方案 2 填 0.0.0.0/0(所有 IP)
    • 描述:MariaDB 远程访问
  4. 点击「确定」,规则立即生效。

腾讯云/华为云差异点

  • 腾讯云:控制台 → 云服务器 CVM → 安全组 → 入站规则 → 添加。
  • 华为云:控制台 → 弹性云服务器 ECS → 安全组 → 入方向规则 → 添加。
    核心参数与阿里云一致,重点是「TCP 3306 端口 + 正确授权对象」。

六、第五步:Windows 客户端连接 MariaDB(Navicat 示例)

  1. 打开 Navicat,点击左上角「连接」→ 选择「MySQL」(MariaDB 兼容 MySQL 协议)。
  2. 在「新建连接」窗口填写以下信息:
    • 连接名:自定义(如“Debian-MariaDB”)
    • 主机:服务器公网 IP(服务器终端执行 curl ifconfig.me 查询)
    • 端口:3306
    • 用户名:第二步创建的远程账号(如 win_dbuser
    • 密码:对应账号的密码(如 DB@Win2025!
  3. 点击「测试连接」,弹出「连接成功」提示即配置完成。
  4. 双击左侧连接列表中的目标连接,即可开始管理数据库(执行 SQL、创建表、备份数据等)。

七、常见问题排查

1. 连接超时(错误码 10060/10061)

  • 检查云安全组是否添加 3306 入方向规则。
  • 确认 MariaDB 配置的 bind-address 已修改为 0.0.0.0 并重启服务。
  • Windows 端打开 CMD,执行 telnet 服务器IP 3306,验证端口是否可达。

2. 权限拒绝(错误码 1045)

  • 确认账号的 host 字段与 Windows IP 匹配(或为 %)。
  • 检查密码是否输入错误,可重新执行 FLUSH PRIVILEGES 刷新权限。

3. MariaDB 服务未启动

执行 sudo systemctl start mariadb 启动服务,执行 sudo systemctl enable mariadb 设置开机自启。

八、拓展:Debian 安装 MariaDB(若未安装)

若服务器未安装 MariaDB,执行以下命令快速安装:

sudo apt update && sudo apt install -y mariadb-server mariadb-client
sudo systemctl enable --now mariadb
# 安全加固(设置 root 密码、删除匿名用户等)
sudo mysql_secure_installation

总结

本文通过「账号创建 → 数据库配置 → 防火墙开放 → 安全组设置 → 客户端连接」五个核心步骤,完成了 Windows 远程连接 Debian 服务器 MariaDB 的全流程配置。生产环境建议优先采用「指定 IP + 专用账号 + 最小权限」的组合,最大限度降低安全风险。如果在操作过程中遇到问题,可对照常见问题排查步骤逐一解决,或留言交流。