老苏折腾过的项目,数据库主要是 MySQL,其次是 MongoDB 、PostgreSQL 和 SQLite,最近还用到了 Elasticsearch ,但是数据库管理软件 phpMyAdmin 只能管理 MySQL ,老苏一直在找一个全能的数据库管理器,似乎 Adminer 可以满足要求。
什么是 Adminer ?
Adminer(原 phpMinAdmin)是一个用 PHP 编写的全功能数据库管理工具。与 phpMyAdmin 相反,它由一个准备部署到目标服务器的文件组成。Adminer 可用于 MySQL、PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elasticsearch 和 MongoDB。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 adminer ,选择第一个 adminer,版本选择 latest。
端口
本地端口不冲突就行,不确定的话可以查一下
查看端口占用
netstat -tunlp | grep 端口号
1
2
本地端口 容器端口
8989 8080
运行
在浏览器中输入 http://群晖IP:8989 就能看到主界面
MySQL
先试的是群晖自带的 MariaDB 5,数据库用的是 librenms
因为我们都是按账号创建的,所以用户名和数据库名是相同的
登录成功之后进入管理界面
接着试了下 MariaDB 10,数据库用的是 nocodb
登录很顺利
PostgreSQL
老苏安装 adminer 的主要原因就是为了管理 PostgreSQL,之前有两个项目安装了 docker 版的 PostgreSQL
日程安排工具Calendso
多合一的家庭助理Homechart
进入管理界面
默认是 显示结构,改为 选择数据
MongoDB
接下来尝试了 MongoDB,之前好几个项目都用到了,最近的是下面👇这个:
交互式在线辅导工具Nettu Meet
但是这次没有成功,显示 没有扩展
老苏研究了半天,才发现这样一段描述
原来开箱即用的只有下面👇这些,其他的都得自己安装 PHP 扩展
MySQL
PostgreSQL
SQLite
SimpleDB
Elasticsearch
安装扩展
通过 SSH 客户端以 root 身份进入容器
以 root 身份进入容器
docker exec -it --user root adminer1 /bin/sh
1
2
依次执行下面的命令
安装比较花时间,需要耐心
安装编译环境
apk add autoconf gcc g++ make libffi-dev openssl-dev
安装 mongo 驱动
pecl install mongodb
添加 mongo 配置
echo "extension=mongodb.so" > /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini
1
2
3
4
5
6
7
8
如果中间出现错误
就再执行一次
编译成功之后还需要修改配置,再重启一次容器就可以了
这次很顺利的进入到了管理界面
Elasticsearch
Nettu Meet 还用到了 Elasticsearch ,正好又是开箱即用的,所以也一并看看,但是 Adminer默认不支持访问没有密码的数据库
环境
停止容器,添加环境变量
可变 值
ADMINER_PLUGINS 插件名称
在这里 值 我们输入 login-password-less
如果直接启动,日志中会有报错
这是因为 login-password-less 插件需要参数才能正常工作,所以不适用上面的方法,将 ADMINER_PLUGINS 值设为空,然后启动
通过 SSH 客户端以 root 身份进入容器
以 root 身份进入容器
docker exec -it --user root adminer1 /bin/sh
1
2
依次执行下面的命令
进入目录
cd plugins-enabled/
创建文件
vi login-password-less.php
1
2
3
4
5
login-password-less.php 文件内容如下
<?php
require_once('plugins/login-password-less.php');
/** Set allowed password
* @param string result of password_hash
*/
return new AdminerLoginPasswordLess(
$password_hash = password_hash('nopassword', PASSWORD_DEFAULT)
);
1
2
3
4
5
6
7
8
9
在密码中输入 nopassword
登录 成功之后的管理界面
主题
前面的截图看起来比较丑陋,但实际上 Adminer 是支持主题的
通过 SSH 客户端以 root 身份进入容器
以 root 身份进入容器
docker exec -it --user root adminer1 /bin/sh
1
2
依次执行下面的命令
下载 css 文件
curl -O https://raw.githubusercontent.com/Niyko/Hydra-Dark-Theme-for-Adminer/master/adminer.css
镜像站点
curl -O https://raw.fastgit.org/Niyko/Hydra-Dark-Theme-for-Adminer/master/adminer.css
1
2
3
4
5
刷新一下页面,有没有觉得档次立马提升了几个层次?
进管理界面
小结
Adminer 是 phpMyAdmin 的最佳替代品之一。它不仅体积更小,而且使用起来也更加快捷。
功能虽然老苏没涉及,但是跨过了登录的难关,又是中文界面,用起来还是很容易的,有问题可以提出来一起研究。
参考文档
vrana/adminer: Database management in a single PHP file
地址:https://github.com/vrana/adminer
Adminer - Database management in a single PHP file
地址:https://www.adminer.org/
finwo/docker-adminer: Dockerized adminer db manager - docker-adminer - Codeberg.org
地址:https://codeberg.org/finwo/docker-adminer
How to Use Adminer to Manage Databases Easily with a Single PHP File
地址:https://kinsta.com/blog/adminer/
————————————————
原文链接:https://blog.csdn.net/wbsu2004/article/details/121949994