首页 文章 文章详情

通过Docker安装基于web的轻量级数据库管理工具Adminer

来源:本站 {{likeCount}} {{commentCount}} 评论 2026-05-27 23:05:14

通过 Docker 安装 Adminer 是一个非常轻量且高效的选择,它能让你通过浏览器轻松管理 MySQL、MariaDB、PostgreSQL、SQLite 等多种主流数据库。

以下是两种最推荐的安装方式,你可以根据自己的需求选择:

方式一:单行命令一键启动(最快速)

如果你只是想快速体验,或者已经有一个正在运行的 MySQL 容器,可以直接使用 Docker 命令行一键部署:

docker run -d \
  --name adminer \
  -p 9999:8080 \
  --restart unless-stopped \
  adminer
  • -d:后台运行容器。
  • --name adminer:给容器起名为 adminer。
  • -p 9999:8080:将宿主机的 9999 端口映射到容器的 8080 端口(你可以把 9999 换成任意未被占用的端口)。
  • --restart unless-stopped:设置容器随 Docker 服务自动重启。
  • 启动成功后,直接在浏览器访问 http://localhost:9999 即可看到 Adminer 的登录界面。

方式二:使用 Docker Compose 部署(推荐)

如果你需要同时拉起 MySQL 和 Adminer,或者希望配置更规范、方便管理,推荐使用 Docker Compose。

  1. 新建一个文件夹,在里面创建一个名为 docker-compose.yml 的文件。
  2. 将以下内容复制进去:
version: "3"
services:
  mysql:
    image: mysql:8
    container_name: mysql-test
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456  # 设置你的MySQL root密码
      MYSQL_DATABASE: testdb       # 默认创建一个名为testdb的数据库
    ports:
      - "3306:3306"
    volumes:
      - ./mysql-data:/var/lib/mysql # 数据持久化,防止容器删除后数据丢失

  adminer:
    image: adminer
    container_name: adminer
    restart: always
    ports:
      - "8080:8080"
    depends_on:
      - mysql  # 确保mysql先启动
  1. 在该文件夹下打开终端,执行以下命令启动:
docker compose up -d

🚀 如何登录 Adminer 管理 MySQL

打开 Adminer 网页后,按照以下信息进行登录:

  • 系统(System):选择 MySQL
  • 服务器(Server)
    • 如果你是方式一(单独部署 Adminer),且 MySQL 也在本地 Docker 运行,这里填你的 本机局域网IP(如 172.17.0.1)或者直接填 host.docker.internal。如果 MySQL 是安装在本地非 Docker 环境,直接填 localhost
    • 如果你是方式二(Compose 统一部署),直接填配置文件里的服务名 mysql 即可。
  • 用户名(Username)root(或你在 MySQL 中创建的其他用户)
  • 密码(Password):你在 MySQL 配置中设置的密码(如上方示例中的 123456)。

💡 常见问题与避坑指南

  1. 端口冲突:如果你本地已经安装了 MySQL 或其他服务占用了 33068080 端口,记得在 docker rundocker-compose.ymlports 部分修改映射端口(例如把 "3306:3306" 改为 "3307:3306")。
  2. Apple Silicon (M1/M2/M3) 芯片:如果你使用的是 Mac 电脑且启动 MySQL 报错,可以在 docker-compose.yml 的 mysql 服务下增加一行平台指定:platform: linux/amd64
  3. 无法连接数据库:如果登录时提示“连接被拒绝”,通常是因为 Adminer 容器无法通过网络访问到 MySQL 容器。使用 Docker Compose 统一部署可以完美避开这个网络问题。


相关评论
发表
暂无相关评论...
{{item.userName}} {{item.dateDescription}}
{{item.likeCount}} 回复
{{item.content}}
{{child.userName}}@{{child.atUserName}} {{child.content}}
{{child.dateDescription}}
{{child.likeCount}} 回复