当前位置: 首页 > news >正文

在家也能安全连内网数据库:MariaDB监控与公网访问实战

前言

数据库出问题,往往不会挑时间。可能是周末在家收到告警,也可能是出差路上临时需要确认一条数据变更。服务异常已经发生,但数据库却只在公司内网里能访问,这时候排查效率很容易被网络边界卡住。

MariaDB作为常见的关系型数据库,适合部署在Debian这类稳定的Linux环境中。只要完成软件源配置、服务安装、安全初始化、用户权限和基础数据库操作,就能搭建出一套可用于开发测试或轻量业务的数据库服务。

但数据库能跑起来只是第一步。真正进入日常运维后,还需要知道它运行得怎么样:连接数是否异常、查询是否变慢、资源是否吃紧、服务状态是否稳定。这部分可以通过mysqld_exporter采集MariaDB指标,再交给Prometheus统一监控。

另一个现实需求是远程访问。多数公司或家庭服务器都没有公网IP,也不会直接把3306端口暴露出去。人在外面想连数据库,传统方式要么配置复杂,要么安全风险较高,并不适合随便操作。

本文将从Debian 12安装MariaDB开始,完成基础配置、数据库用户创建、mysqld_exporter部署和Prometheus接入。随后再通过 cpolar 配置TCP公网地址,让内网MariaDB在不改动路由器和公网IP条件的情况下,也能支持外部环境按需连接和验证。

1.配置前提条件

在正式开始安装和配置MariaDB之前,请确保您已做好以下准备工作,以保障后续操作顺利进行:

  • 一台运行Debian 12的操作系统环境:该服务器应已成功安装并正常启动,且能够稳定接入互联网,以便下载官方软件包及依赖项。
  • 具备管理员权限的用户账户:您需要拥有一个具有sudo权限的非root用户账户。
  • 可交互的命令行终端:无论是通过SSH远程连接,还是在物理机/虚拟机上本地登录,您都需要打开一个终端窗口,用于执行后续的命令行操作。
  • 一款熟悉的文本编辑器:在配置MariaDB的过程中,您可能需要编辑配置文件(如 /etc/mysql/mariadb.conf.d/50-server.cnf)。请确保系统中已安装并熟悉至少一种命令行文本编辑器,例如轻量级的nano、功能强大的vim,或其他您习惯使用的编辑工具。

小贴士:建议在操作前更新系统软件包列表(sudo apt update),以确保安装的是最新稳定版本的MariaDB,并减少潜在的兼容性问题。

完成以上准备后,您就已为MariaDB的安装、安全加固与初始化配置打下了坚实基础。

2.安装MariaDB

2.1系统升级

始终建议在安装之前安装最新的系统软件包以避免依赖性问题。运行以下命令:

sudoaptupdate&&sudoaptupgrade-y

2.2 安装所需的软件包

接下来,安装必要的软件包,如下所示:

sudoaptinstallcurlsoftware-properties-common dirmngr-y

2.3 添加MariaDB APT存储库

分别运行以下命令导入MariaDB签名密钥并添加MariaDB APT存储库:

curl-LsS-Ohttps://downloads.mariadb.com/MariaDB/mariadb_repo_setupsudobashmariadb_repo_setup --mariadb-server-version=10.6

2.4 在Debian上安装MariaDB

接下来,更新软件包并安装MariaDB服务器

sudoaptupdatesudoaptinstallmariadb-server mariadb-client

2.5 启动并启用MariaDB

现在运行以下命令来启动 MariaDB 并使其在系统重新启动时自动启动:

sudosystemctl start mariadbsudosystemctlenablemariadbsudosystemctl status mariadb

2.6 安全的MariaDB安装

成功安装MariaDB后,请按如下所示继续保护它:

2.7 检查MariaDB版本

要检查MariaDB版本,我们需要登录MariaDB,如下所示。如果您设置了root密码,请使用-p

mysql-uroot-p

然后运行以下MySQL命令来检查MariaDB版本:

SELECT VERSION();

2.8 MariaDB基本命令

MariaDB创建数据库:

CREATE DATABASE shan;

MariaDB添加用户并授予权限:

CREATEUSER'myuser'@'localhost'IDENTIFIED BY'mypassword';GRANT ALL PRIVILEGES ON *.* TO'myuser'@'localhost'IDENTIFIED BY'mypassword';GRANT ALL PRIVILEGES ON *.* TO'myuser'@'localhost';FLUSH privileges;SHOW GRANTS FOR'myuser'@'locahost';

创建表并添加数据MariaDB:
创建数据库后,您可以创建表并向其中添加数据。

CREATE TABLE shan(id INT, name VARCHAR(20), email VARCHAR(20));INSERT INTO shan(id,name,email)VALUES(01,"lorna","[email]");

MariaDB清理:
要完全删除MariaDB,请运行以下命令。

sudoaptpurge mariadb-serversudorm-rf/var/lib/mysql/

3.使用mysql_exporter监控MariaDB

3.1 为什么用mysqld_exporter监控MariaDB?

因为它是“用一套工具,监控两个世界”的典范。

  • 兼容性好:MariaDB ≈ MySQL协议
  • 功能全面:覆盖性能、连接、复制、资源等核心维度
  • 生态成熟:Prometheus + Grafana开箱即用
  • 官方认可:MariaDB社区明确推荐

因此,无需寻找“MariaDB Exporter”——直接使用mysqld_exporter就是最优解。

3.2 安装mysql_exporter

在prometheus的官网下载对应的mysql_exporter的linux版本:

下载完成后上传到/app目录下:

也可以使用这个命令一键安装(可自定义版本):

wgethttps://github.com/prometheus/mysqld_exporter/releases/download/v0.18.0/mysqld_exporter-0.18.0.linux-amd64.tar.gz

解压mysql_exporter压缩文件:

tar-zxvfmysqld_exporter-0.18.0.linux-amd64.tar.gz

修改mysql_exporter文件名:

mvmysqld_exporter-0.18.0.linux-amd64/ mysqld_exporter

3.3 启动mysql_exporter

创建mysql用户与权限,在MySQL数据库中创建一个专门用于监控的用户,并赋予其足够的权限来查询所需的信息:

GRANT REPLICATION CLIENT, PROCESS ON *.* TO'mysqld_exporter'@'localhost'identified by'12345678';GRANT SELECT ON performance_schema.* TO'mysqld_exporter'@'localhost';flush privileges;

创建一个文件,输入我们刚创建好的用户名及密码:

vilocalhost_db.cnf[client]user=exporterpassword=12345678

创建mysql_exporter服务:

vi/etc/systemd/system/mysqld_exporter.service[Unit]Description=exporterAfter=network.target[Service]Type=simpleUser=prometheusExecStart=/app/mysqld_exporter/mysqld_exporter --config.my-cnf=/app/mysqld_exporter/localhost_db.cnf --web.listen-address=:9105Restart=on-failure[Install]WantedBy=multi-user.target

添加prometheus用户,并修改对应权限:

sudouseradd--system--no-create-home--shell/sbin/nologin prometheussudochown-Rprometheus:prometheus /app/mysqld_exporter/sudochmod600/app/mysqld_exporter/localhost_db.cnf

启动服务并设置开机自启动:

sudosystemctl daemon-reloadsudosystemctl start mysqld_exportersudosystemctl status mysqld_exporter# 查看是否成功sudosystemctlenablemysqld_exporter# 设置开机自启(可选)

4.配置prometheus监控mysql_exporter

没有prometheus的小伙伴可以参考cpolar官网这篇文章:《监控不再局域网!Cpolar 让 Prometheus 走出内网限制!》

找到prometheus的配置文件,编辑添加如下内容:

viprometheus.yml
- targets:["ip:9105"]labels: app:"mysqld_exporter"

重启prometheus服务:

systemctl restart prometheus

使用浏览器Ip+9090打开promethues的页面:

我们可以看到成功的检测到了mysql_exporter服务啦!

现在,我们已经成功完成了MariaDB的安装,并通过mysqld_exporter与Prometheus构建了一套完整的数据库监控体系,能够实时掌握连接数、查询性能、主从状态等关键指标。然而,在实际工作中,我们常常面临一个现实需求:如何从外部网络(比如家里、出差途中)安全地连接到公司内网的MariaDB数据库?由于公司服务器通常部署在私有网络中,没有公网IP,且出于安全考虑,防火墙不会直接开放3306端口给互联网——这就导致传统的远程连接方式行不通。这时候,就轮到Cpolar闪亮登场了!借助Cpolar的内网穿透能力,我们可以在不改动现有网络架构、无需申请公网IP、不必开放防火墙端口的前提下,建立一条加密、可靠、带身份认证的隧道,将公司内网的MariaDB服务安全地映射到一个公网可访问的地址。这样一来,无论你身处何地,只要拥有授权,就能像访问本地服务一样,安全连接到公司的数据库——真正实现“内网数据库,远程随心连”。接下来,我们就来演示如何用Cpolar安全打通这条连接通道。

5.安装cpolar实现随时随地开发

5.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

5.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

6.配置公网地址

通过配置,你可以在本地WSL或Linux系统上运行SSH服务,并通过Cpolar将其映射到公网,从而实现从任意设备远程连接开发环境的目的。

  • 隧道名称:可自定义,本例使用了:MariaDB,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:3306
  • 端口类型:随机临时TCP端口
  • 地区:China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可。

  • tcp 表示使用的协议类型

  • 2.tcp.cpolar.top是Cpolar提供的域名

  • 15969是随机分配的公网端口号

通过Cpolar提供的公网地址和端口,MariaDB就可以从任意一台主机连接到啦!

mysql-h2.tcp.cpolar.top-P15969-uremote_user-p

7.保留固定TCP公网地址

使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化。

选择区域和描述:有一个下拉菜单,当前选择的是“China Top”。
右侧输入框,用于填写描述信息。
保留按钮:在右侧有一个橙色的“保留”按钮,点击该按钮可以保留所选的TCP地址。
列表中显示了一条已保留的TCP地址记录。

  • 地区:显示为“China Top”。

  • 地址:显示为“8.tcp.cpolar.top:11849”。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道mysql,点击右侧的编辑

修改隧道信息,将保留成功的TCP端口配置到隧道中。

  • 端口类型:选择固定TCP端口
  • 预留的TCP地址:填写保留成功的TCP地址

点击更新

创建完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址。

最后测试一下固定的地址是否好用,测试命令:

mysql-h8.tcp.cpolar.top-P11849-uremote_user-p

这样,我们成功打破了“没有公网IP就无法远程访问数据库”的固有认知。

总结

完成部署后,MariaDB就具备了基础的数据存储能力,mysqld_exporter则把数据库运行状态转换成Prometheus可以采集的指标。这样一来,数据库不再只是“能连上、能执行SQL”,而是可以被持续观察和分析。

这套监控链路适合用来查看连接状态、运行性能和基础健康情况。对于开发测试环境,它能帮助快速发现配置问题;对于轻量运维场景,它也能让数据库状态不再完全依赖人工登录检查。

配置 cpolar 后,MariaDB的3306端口可以通过TCP公网地址访问。随机TCP地址适合临时测试,固定TCP地址更适合长期远程连接,避免每次公网端口变化后都要重新修改客户端配置。

需要注意的是,数据库远程访问必须谨慎。即使使用内网穿透,也不建议用root账号直接远程连接,更不应给远程用户授予过大的权限。建议单独创建远程访问用户,只开放必要数据库和最小权限,并配合强密码、访问控制和审计习惯使用。

MariaDB负责业务数据,mysqld_exporter和Prometheus负责可观测性,cpolar负责打通远程连接入口。当这几部分组合起来以后,数据库就不只是内网里一台孤立的服务,而是一套可部署、可监控、可按需远程维护的数据库运维方案。

http://www.jsqmd.com/news/1145264/

相关文章:

  • AI核心组件:从感知到行动,打造超级智能体!
  • Vite原理与Webpack对比
  • 两年的AI说删就删!豆包千问集体下线智能体,大厂都在偷偷换赛道了
  • 茅台酱香酒旗舰店中的迎宾酒官方保真吗——渠道解析+鉴真指南
  • 量化派:构建物理AI通用技术底座,开启“卖能力”产业拐点
  • WebToEpub完整教程:三步将网页小说转换为电子书
  • Python正则表达式完整教程:从入门到实战,解决文本匹配所有难题
  • 看完Chronos后,这个0.3B的小模型居然超过π0.5六倍!
  • 2026最新企业低代码软件盘点:CRM、ERP、流程管理都能做
  • Vatee:把风控思路做到位——视角拆解与提示整理
  • 2026年7月中旬AI工具速报:ChatGPT推出项目模板,Claude上线批量处理,Gemini支持代码仓库分析
  • 计算机毕业设计之教材管理系统的设计与实现
  • 【2027最新】基于SpringBoot+Vue的高校实习管理系统管理系统源码+MyBatis+MySQL
  • Python正则如何处理带换行符的多行文本|解决匹配空白、提取失败问题
  • 郴州夜宵好去处实测测评|理性避坑选型指南
  • Carina:Java 写的自动化测试框架,把测试那几层全统一了
  • GHelper完整指南:用轻量级控制工具彻底解放华硕笔记本性能
  • 酒水品牌策划设计公司怎么选?从东莞视维(SIVIBRAND)的酒水案例看专业分工
  • 软考高级系统架构师之Spring AOP篇
  • Python开发中的项目结构:如何组织代码更清晰
  • 单目稠密SLAM多机协同系统:面向GPS拒止环境的鲁棒实时建图
  • 从 Spring Boot 到 NestJS:项目快速上手指南
  • 2026微信商城搭建有哪些平台
  • 计算机毕业设计之基于web的曙光社区生鲜团购平台
  • TRAE SOLO:任务原生执行器与智能工作流操作系统
  • X-Content-Type-Options 实战配置:Nginx/Apache/Express 3种服务器完整指南
  • Ubuntu service开机自启设置
  • 行业案例拆解:RFID技术在餐饮行业连锁品牌应用案例拆解!
  • linux代码同步git仓库
  • Salesforce 收购 Informatica,可信上下文成企业 AI 关键要素!