在实际开发和运维中,我们常需要在 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 端口(云安全组是外网访问的第一道防线)。
以阿里云为例(其他云平台逻辑一致)
- 规则方向:入方向
- 授权策略:允许
- 协议类型:TCP
- 端口范围:3306/3306
- 授权对象:方案 1 填 Windows 公网 IP(如 113.57.xxx.xxx/32),方案 2 填 0.0.0.0/0(所有 IP)
- 描述:MariaDB 远程访问
腾讯云/华为云差异点
- 腾讯云:控制台 → 云服务器 CVM → 安全组 → 入站规则 → 添加。
- 华为云:控制台 → 弹性云服务器 ECS → 安全组 → 入方向规则 → 添加。
核心参数与阿里云一致,重点是「TCP 3306 端口 + 正确授权对象」。
六、第五步:Windows 客户端连接 MariaDB(Navicat 示例)
- 连接名:自定义(如“Debian-MariaDB”)
- 主机:服务器公网 IP(服务器终端执行 curl ifconfig.me 查询)
- 端口:3306
- 用户名:第二步创建的远程账号(如 win_dbuser)
- 密码:对应账号的密码(如 DB@Win2025!)
七、常见问题排查
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 + 专用账号 + 最小权限」的组合,最大限度降低安全风险。如果在操作过程中遇到问题,可对照常见问题排查步骤逐一解决,或留言交流。




