【保姆级教程】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 status3306/tcp相关规则即生效。
五、第四步:配置云服务器安全组(云服务器必做)
若服务器是阿里云、腾讯云、华为云等云服务器,仅配置本地防火墙不够,需在云平台安全组中开放 3306 端口(云安全组是外网访问的第一道防线)。
以阿里云为例(其他云平台逻辑一致)
- 登录阿里云控制台,进入「云服务器 ECS」,找到目标 Debian 服务器。
- 点击「安全组」,选择服务器绑定的安全组,点击「配置规则」→「入方向规则」→「添加规则」。
- 按以下参数配置:
- 规则方向:入方向
- 授权策略:允许
- 协议类型: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 示例)
- 打开 Navicat,点击左上角「连接」→ 选择「MySQL」(MariaDB 兼容 MySQL 协议)。
- 在「新建连接」窗口填写以下信息:
- 连接名:自定义(如“Debian-MariaDB”)
- 主机:服务器公网 IP(服务器终端执行
curl ifconfig.me查询) - 端口:3306
- 用户名:第二步创建的远程账号(如
win_dbuser) - 密码:对应账号的密码(如
DB@Win2025!)
- 点击「测试连接」,弹出「连接成功」提示即配置完成。
- 双击左侧连接列表中的目标连接,即可开始管理数据库(执行 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 + 专用账号 + 最小权限」的组合,最大限度降低安全风险。如果在操作过程中遇到问题,可对照常见问题排查步骤逐一解决,或留言交流。
浙公网安备 33010602011771号