高级玩家必备 - 使用phpMyAdmin管理群晖中的数据库
mhr18 2025-03-14 18:51 41 浏览 0 评论
数据库,这个在我们工作中或日常生活随处可见的术语,对许多人来说依旧带着一层神秘的面纱。其实你正在浏览老宁的这篇文章,它就被保存在云端数据库中。
我们在使用群晖的 Container Manager 套件或 Docker 进行创建容器时,经常会遇到同时安装数据库容器的情况。隐隐中,我们可能认为不同的项目应该能够共享同一个数据库,但是由于缺少相关知识,又怕引起其他问题,就不了了之。
所以今天老宁将一步步带你认识群晖中的数据库,从更深层次教你使用群晖 phpMyAdmin 套件管理群晖中的数据库,以及多个项目如何共用一个数据库,让你在折腾群晖时更加顺畅。
数据库
什么是数据库?
数据库就像是一个大书架(表),你可以在上面整齐地摆放各种各样的书籍。每本书就像是一条数据记录,里面包含了很多信息,比如书名、作者、出版日期等。这些信息就像数据字段,它们告诉我们每本书的具体情况。
你可以想象,如果有很多这样的书架,每个书架上都有很多书,那么你需要一个系统的方法来找到你想要的那本书。这就是数据库的工作。它帮助你组织和分类所有的书籍,让你能够通过搜索书名或者作者等信息快速找到你需要的内容。
除了一些简单的,不需要使用数据库的应用程序外,大多数项目都需要使用数据库。比如前面介绍的兰空图床,它就用到了 MySQL 数据库。
当然数据库的种类也有很多,比如 MySQL、PostgreSQL、SQLite、Microsoft SQL Server、MariaDB、Redis、MongoDB 等等。
当我们在启动容器时,会拉取 image: postgres:15 这样的镜像,那就代表了该项目使用了 PostgreSQL 数据库。
群晖 MariaDB 套件
群晖上提供了 MariaDB 套件,可以方便用户一键安装 MariaDB 数据库服务(MariaDB 最初是作为 MySQL 的一个分支,它们两者之间的兼容性非常高)。
MariaDB 安装方法非常简单。在套件中心搜索 MariaDB,点击安装按钮后,再输入密码和端口(3306被服务端口占用了)等待安装完毕即可。
一般情况下数据库的最高权限是用户都是:root,它可以访问数据库的任何表,并对它们进行增加、删除、修改、查询操作。如果想要把 MariaDB 数据库服务映射到外网,需要开启 TCP/IP 连接,并在路由器开启端口映射
群晖 phpMyAdmin 套件
想要查看和管理数据库中的数据,除了通过专业且复杂的命令行操作,更直观、简单的方式就是借助各类图形化界面管理工具了。
在众多数据库中,MySQL 是应用最广泛的一种。为了让大家在使用 MySQL 时更加得心应手,我们主要介绍群晖 DSM 内置的图形化管理工具:phpMyAdmin 套件。
phpMyAdmin 是一个用 PHP 编写的免费且开源的 Web 应用,它通过一个清晰易用的网页界面,让我们能够轻松地对 MySQL 和 MariaDB 数据库进行管理。
在群晖中安装 phpMyAdmin 和其他套件一样,只需在套件中心搜索即可安装。phpMyAdmin 套件需要依赖 Web Station 和 PHP 8,所以它们会被同时安装。
安装完毕后,需要新增网页服务门户,设置类型为基于端口,并配置端口号。(只要没被占用的端口都行)
在内网中可以直接通过【http://群晖:9200】访问 phpMyAdmin 后台管理界面,如果需要在公网进行访问,那么则需要配置反向代理或端口映射。
管理 MariaDB
要对数据库进行管理,首先要登录到数据库。
在 phpMyAdmin 登录界面,输入用户名:root,密码为前面安装 MariaDB 设置的密码,就能登录到 MariaDB 服务。
登录成功后,在界面左侧可以看到 MariaDB 中所有的数据库。
右侧可以看到当前 MariaDB 的信息,包括类型、连接状态等信息。
如果要创建新的数据库,可以在数据库菜单中进行创建。
要对账户进行管理,可以在账户菜单新增账户或者对某账户授予特定的访问权限。
至于其他的操作,老宁就不展开细说了。
管理MySQL
现在我们学会了通过 phpMyAdmin 管理群晖自带的 MariaDB 数据库。如果想要使用 phpMyAdmin 管理其他地方的数据库,比如 Container Manager 中的数据库,又该如何操作呢?
接下来以老宁写的兰空图床的配套安装的数据库为例。如果不知道如何安装 MySQL 数据库,可以参考这篇文章
首先我们要了解群晖的 phpMyAdmin 和 MariaDB 套件其实是两个东西,并不是说 phpMyAdmin 安装完毕后就能直接找到 MariaDB 数据库直接对它进行管理。
最重要的是 Web Station 套件中的 web_packages文件夹,它会将 Web Station 中的配置文件全部放在里面。而 phpMyAdmin 想要连接到 MariaDB 数据库,就是因为在
synology_server_choice.json 文件中有相应的配置
当我们打开
synology_server_choice.json 文件后,就可以看到它是通过 Socket 方式进行连接的
这也就解释了前面在 MariaDB 套件中没有启用 TCP/IP 也能使用 phpMyAdmin 连接到 MariaDB 的原因,而使用 socket 连接数据库是不需要指定端口号的,所以在 MariaDB 中设置的端口号是为了使用 TCP/IP 连接。
根据前面的教程,我们在 Container Manager 中新建了一个 MySQL 数据库,端口为3306,网络模式为 bridge。
把
synology_server_choice.json 文件下载到本地电脑,在方括号中新增如下代码。
{
"verbose": "MySQL",
"auth_type": "cookie",
"host": "192.168.2.99",
"port": "3306",
"connect_type": "tcp",
"compress": false,
"AllowNoPassword": false
}
注意花括号之间需要用逗号隔开,host 为群晖的内网IP,port 为容器映射的端口号
保存并上传到群晖后,覆盖原有的
synology_server_choice.json 文件。重新打开 phpMyAdmin 登录界面就能看到有两个服务器,分别对应 MariaDB 套件和 Container Manager 中的 MySQL。
选择 MySQL 后,输入在创建容器时配置的 root 密码,可以看到名为 lsky 的数据库
每个数据库中都有许多的表,每个表中存储了大量的数据信息
共用数据库
最后来看看多个服务都需要数据库服务时,如何共用。
通过下面的 Docker 命令,我们知道这个镜像时需要用到数据库服务的。
原来在安装图床时,已经安装上启动了一个 MySQL 容器,再去重新安装一个 MySQL 是十分浪费性能的,所以直接共用原来的即可。
在配置容器时,我们只需要手动设置 DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD 为已安装的 MySQL 服务器,再输入一个数据库名 firefly。
这样 firefly_iii 就能自己在 MySQL 中新增一个名为 firefly 的数据库以供自己使用。
如果要使用 MariaDB ,要怎么操作呢?还记得前面说到的 TCP/IP 和 Socket 吗?要使用 TCP/IP 方式进行连接,就必须要在 MariaDB 界面中勾选启用。
在使用 Docker Compose 文件的复杂项目中,往往也会拉取数据库镜像,我们可以通过修改其配置文件来达到共用数据库服务的目的。不过这个操作更加复杂,由于文章篇幅限制,我们后面再说。
我是老宁
一个热爱技术的程序员和极客,群晖NAS深度玩家!
专注NAS相关技术分享,原创!干货!
觉得老宁的文章对你有帮助,记得点赞、收藏、加关注!
相关推荐
- 订单超时自动取消业务的 N 种实现方案,从原理到落地全解析
-
在分布式系统架构中,订单超时自动取消机制是保障业务一致性的关键组件。某电商平台曾因超时处理机制缺陷导致日均3000+订单库存锁定异常,直接损失超50万元/天。本文将从技术原理、实现细节、...
- 使用Spring Boot 3开发时,如何选择合适的分布式技术?
-
作为互联网大厂的后端开发人员,当你满怀期待地用上SpringBoot3,准备在项目中大显身手时,却发现一个棘手的问题摆在面前:面对众多分布式技术,究竟该如何选择,才能让SpringBoot...
- 数据库内存爆满怎么办?99%的程序员都踩过这个坑!
-
你的数据库是不是又双叒叕内存爆满了?!服务器监控一片红色警告,老板在群里@所有人,运维同事的电话打爆了手机...这种场景是不是特别熟悉?别慌!作为一个在数据库优化这条路上摸爬滚打了10年的老司机,今天...
- springboot利用Redisson 实现缓存与数据库双写不一致问题
-
使用了Redisson来操作Redis分布式锁,主要功能是从缓存和数据库中获取商品信息,以下是针对并发时更新缓存和数据库带来不一致问题的解决方案1.基于读写锁和删除缓存策略在并发更新场景下,...
- 外贸独立站数据库炸了?对象缓存让你起死回生
-
上周黑五,一个客户眼睁睁看着服务器CPU飙到100%——每次页面加载要查87次数据库。这让我想起2024年Pantheon的测试:Redis缓存能把WooCommerce查询速度提升20倍。跨境电商最...
- 手把手教你在 Spring Boot3 里纯编码实现自定义分布式锁
-
为什么要自己实现分布式锁?你是不是早就受够了引入各种第三方依赖时的繁琐?尤其是分布式锁这块,每次集成Redisson或者Zookeeper,都得额外维护一堆配置,有时候还会因为版本兼容问题头疼半...
- 如何设计一个支持百万级实时数据推送的WebSocket集群架构?
-
面试解答:要设计一个支持百万级实时数据推送的WebSocket集群架构,需从**连接管理、负载均衡、水平扩展、容灾恢复**四个维度切入:连接层设计-**长连接优化**:采用Netty或Und...
- Redis数据结构总结——面试最常问到的知识点
-
Redis作为主流的nosql存储,面试时经常会问到。其主要场景是用作缓存,分布式锁,分布式session,消息队列,发布订阅等等。其存储结构主要有String,List,Set,Hash,Sort...
- skynet服务的缺陷 lua死循环
-
服务端高级架构—云风的skynet这边有一个关于云风skynet的视频推荐给大家观看点击就可以观看了!skynet是一套多人在线游戏的轻量级服务端框架,使用C+Lua开发。skynet的显著优点是,...
- 七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得
-
前言我觉得有一个能够找一份大厂的offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司...
- mysql mogodb es redis数据库之间的区别
-
1.MySQL应用场景概念:关系型数据库,基于关系模型,使用表和行存储数据。优点:支持ACID事务,数据具有很高的一致性和完整性。缺点:垂直扩展能力有限,需要分库分表等方式扩展。对于复杂的查询和大量的...
- redis,memcached,nginx网络组件
-
1.理解阻塞io,非阻塞io,同步io,异步io的区别2.理解BIO和AIO的区别io多路复用只负责io检测,不负责io操作阻塞io中的write,能写多少是多少,只要写成功就返回,譬如准备写500字...
- SpringBoot+Vue+Redis实现验证码功能
-
一个小时只允许发三次验证码。一次验证码有效期二分钟。SpringBoot整合Redis...
- AWS MemoryDB 可观测最佳实践
-
AWSMemoryDB介绍AmazonMemoryDB是一种完全托管的、内存中数据存储服务,专为需要极低延迟和高吞吐量的应用程序而设计。它与Redis和Memcached相似,但具有更...
- 从0构建大型AI推荐系统:实时化引擎从工具到生态的演进
-
在AI浪潮席卷各行各业的今天,推荐系统正从幕后走向前台,成为用户体验的核心驱动力。本文将带你深入探索一个大型AI推荐系统从零起步的全过程,揭示实时化引擎如何从单一工具演进为复杂生态的关键路径。无论你是...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (73)
- redis 时间 (60)
- redis 删除 (69)
- redis内存 (64)
- redis并发 (53)
- redis 主从 (71)
- redis同步 (53)
- redis结构 (53)
- redis 订阅 (54)
- redis 登录 (62)
- redis 面试 (58)
- redis问题 (54)
- 阿里 redis (67)
- redis的缓存 (57)
- lua redis (59)
- redis 连接池 (64)