写在最前

准备工作

  • 在 Ubuntu 上安装 docker。可参考官方文档:Install Docker Engine on Ubuntu

  • 如果遇到类似 “permission denied while trying to connect to the Docker daemon” 的报错,请参考:How to fix docker: Got permission denied issue

    • 我遇到的完整报错如下:
    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/json": dial unix /var/run/docker.sock: connect: permission denied
    

基于Docker 安装 Mysql

  • 相关命令如下。我是逐行执行的。有些涉及密码和路径的地方,请自行更换下。

  • 前面有 “mysql>” 标记的,表示需要进入到 mysql 对应的 container 内执行后面的命令。

# 创建挂载目录。路径要根据需要改一下。挂载后,对数据库的修改,就可以持久化了,重启docker,也不会丢失DB数据。
mkdir -p /home/kyo/docker_mount/mysql_data

# 按需移除既有的同名服务。如果用的其他名字,请对应修改。
docker stop mysql && docker remove mysql

# 运行 mysql docker。Mysql版本,请按需自行选择和修改。
docker run --name=mysql \
-p 127.0.0.1:3306:3306 \
--restart=unless-stopped \
--mount type=bind,src=/home/kyo/docker_mount/mysql_data,dst=/var/lib/mysql \
-d container-registry.oracle.com/mysql/community-server:8.0.33

# 获取一次性密码。可能要略微等一会儿,mysql启动,略微需要一点时间。
docker logs mysql 2>&1 | grep GENERATED

# 可能的输出:[Entrypoint] GENERATED ROOT PASSWORD: zh^zHe8ugW?:DT7J9_7_7,91@@M0LbaD

# 首次登陆 mysql container。有点像进入了另一个 Linux 服务器。
docker exec -it mysql mysql -uroot -p

# 更新 mysql 的root密码。$NEW_PWD 需要更改为你自己的密码。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PWD';

mysql_preview

基于 docker 安装 phpMyAdmin

  • 相关命令如下。我是逐行执行的。有些涉及密码和路径的地方,请自行更换下。

  • 前面有 “mysql>” 标记的,表示需要进入到 mysql 对应的 container 内执行后面的命令。

# 如果已经推出 mysql container,需要先登陆进去
docker exec -it mysql mysql -uroot -p

# 创建一个新的Mysql用户 phpmyadmin。
# phpmyadmin的SQL账户密码PHPMYADMIN_PASSWORD,改为你自己的密码
mysql> CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY $PHPMYADMIN_PASSWORD;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
mysql> CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY $PHPMYADMIN_PASSWORD;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;

# query sql user.
mysql> SELECT host, user FROM mysql.user;

# 根据需要,先移除可能的同名 container。
docker stop phpmyadmin && docker remove phpmyadmin

# 运行 phpmyadmin  container。此处设置的对外端口是 9090
docker run --name phpmyadmin \
-p 127.0.0.1:9090:80 \
-d --link mysql:db --restart=unless-stopped phpmyadmin:5.2
  • mysql 用户新增后的查询结果:

mysql_user

  • 如果你是在配置远端服务器,还需要配置下端口转发,才能直接从本地访问 phpMyAdmin 的前端界面。我是基于 VSCode 配置的,具体细节请参考:Remote Development using SSH

port_map

在浏览器中访问 phpMyAdmin

在浏览器中打开 http://localhost:9090/ 即可访问 phpMyAdmin。

phpmyadmin

phpmyadmin_2

我自己最喜欢的环节。前面铺垫准备了那么多,当真正看到网页时,才真正长舒一口气。Windows的成功,不是没有道理的。可视化的操作,要大大降低操作电脑的 “心智成本”。我现在也是,更多的是用 Windows 电脑 Remote SSH 的方式进行开发。开发体验,真的是要比 Linux 桌面系统上,好太多了。VSCode 的 remote ssh 模式,真的是一个神奇的创举;可能技术上不是特别难,但是真的很厉害,解决了我的大问题。我甚至还专门观察过,对服务器本身也没有增加太大的压力。

写到最后:为什么选择 phpMyAdmin?

我需要的,其实只是一个可视化的 Mysql 的管理软件。现在其实是有很多选择的。但是我还是喜欢用 phpmyadmin。其中一个主要原因是 “开源”。当然,大前提是 “够用”。另一个因素是:和历史的连接感。我在最开始接触 Mysql时,用的就是它。那应该是很多年以前的事了。现在在使用它时,其实还是有些生疏的,但是仔细停一会儿,总能找到熟悉的感觉。真的就像在和一个多年未见的老友聊天,又好像重温那个略显青涩却又踌躇满志的自己回忆。

其他参考文章