老蘇折騰過的項目,數(shù)據(jù)庫主要是 MySQL,其次是 MongoDB 、PostgreSQL 和 SQLite,最近還用到了 Elasticsearch ,但是數(shù)據(jù)庫管理軟件 phpMyAdmin 只能管理 MySQL ,老蘇一直在找一個全能的數(shù)據(jù)庫管理器,似乎 Adminer 可以滿足要求。
什么是 Adminer ?
Adminer(原 phpMinAdmin)是一個用 PHP 編寫的全功能數(shù)據(jù)庫管理工具。與 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,數(shù)據(jù)庫用的是 librenms
因為我們都是按賬號創(chuàng)建的,所以用戶名和數(shù)據(jù)庫名是相同的
登錄成功之后進入管理界面
接著試了下 MariaDB 10,數(shù)據(jù)庫用的是 nocodb
登錄很順利
PostgreSQL
老蘇安裝 adminer 的主要原因就是為了管理 PostgreSQL,之前有兩個項目安裝了 docker 版的 PostgreSQL
日程安排工具Calendso
多合一的家庭助理Homechart
進入管理界面
默認是 顯示結構,改為 選擇數(shù)據(jù)
MongoDB
接下來嘗試了 MongoDB,之前好幾個項目都用到了,最近的是下面??這個:
交互式在線輔導工具Nettu Meet
但是這次沒有成功,顯示 沒有擴展
老蘇研究了半天,才發(fā)現(xiàn)這樣一段描述
原來開箱即用的只有下面??這些,其他的都得自己安裝 PHP 擴展
MySQL
PostgreSQL
SQLite
SimpleDB
Elasticsearch
安裝擴展
通過 SSH 客戶端以 root 身份進入容器
以 root 身份進入容器
docker exec -it --user root adminer1 /bin/sh
1
2
依次執(zhí)行下面的命令
安裝比較花時間,需要耐心
安裝編譯環(huán)境
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
如果中間出現(xiàn)錯誤
就再執(zhí)行一次
編譯成功之后還需要修改配置,再重啟一次容器就可以了
這次很順利的進入到了管理界面
Elasticsearch
Nettu Meet 還用到了 Elasticsearch ,正好又是開箱即用的,所以也一并看看,但是 Adminer默認不支持訪問沒有密碼的數(shù)據(jù)庫
環(huán)境
停止容器,添加環(huán)境變量
可變 值
ADMINER_PLUGINS 插件名稱
在這里 值 我們輸入 login-password-less
如果直接啟動,日志中會有報錯
這是因為 login-password-less 插件需要參數(shù)才能正常工作,所以不適用上面的方法,將 ADMINER_PLUGINS 值設為空,然后啟動
通過 SSH 客戶端以 root 身份進入容器
以 root 身份進入容器
docker exec -it --user root adminer1 /bin/sh
1
2
依次執(zhí)行下面的命令
進入目錄
cd plugins-enabled/
創(chuàng)建文件
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
依次執(zhí)行下面的命令
下載 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