暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

强大的网页数据库管理工具Adminer

各种折腾 2021-12-15
2788

老苏折腾过的项目,数据库主要是 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 端口号

复制
本地端口容器端口
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

复制

依次执行下面的命令

安装比较花时间,需要耐心

# 安装编译环境
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

复制

如果中间出现错误

就再执行一次

编译成功之后还需要修改配置,再重启一次容器就可以了

这次很顺利的进入到了管理界面

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

复制

依次执行下面的命令

# 进入目录
cd plugins-enabled/

# 创建文件
vi login-password-less.php

复制

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)
);

复制

在密码中输入 nopassword

登录
成功之后的管理界面

主题

前面的截图看起来比较丑陋,但实际上 Adminer
是支持主题的

通过 SSH
客户端以 root
身份进入容器

# 以 root 身份进入容器
docker exec -it --user root adminer1 /bin/sh

复制

依次执行下面的命令

# 下载 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

复制

刷新一下页面,有没有觉得档次立马提升了几个层次?

进管理界面

小结

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/

文章转载自各种折腾,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论