Docker安装phpmyadmin

我们在云服务器上的MySQL数据库在暴露端口和开启远程连接的情况下,是非常不安全的,昨天我的一台服务器就遭到了勒索病毒的攻击,让我支付0.06比特币赎回我的数据。还好那个库中没有重要数据,只是一个弃用了半年的数据库,密码我自己都忘记了,还好通过手段找回了密码,登上去之后就傻眼了。那么如果我们不想开启远程登录还想操作数据库,怎么办?怎么办?用phpmyadmin就可以解决了,不过phpmyadmin也有一定的风险,下面看下怎么玩。

使用Docker发布phpmyadmin并且连接已经存在的MySQL容器

  1. 首先下载phpmyadmin的docker镜像

    1
    2
    3
    4
    5
    6
    7
    # 先查询镜像仓库里有哪些镜像
    docker search phpmyadmin

    # 拉取star最多的镜像or拉取你想用的镜像
    docker pull docker.io/phpmyadmin/phpmyadmin

    拉取镜像需要一段时间,这个要看服务器的带宽网速了
  2. 启动镜像,连接到已存在的MySQL容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 启动镜像
    docker run --name myadmin -p 80:80 -d --link mysql-db:db docker.io/phpmyadmin/phpmyadmin

    # 修改容器配置文件
    ## 将配置文件复制到宿主机中
    docker cp myadmin:/etc/phpmyadmin/config.inc.php .

    ## 修改配置文件信息(这里修改的db就是在启动的时候--link后面指定的别名)
    $cfg['Servers'][$i]['host'] = 'localhost' ——> $cfg['Servers'][$i]['host'] = 'db'

    ## 将修改后的配置文件复制回容器中
    docker cp ./config.inc.php myadmin:/etc/phpmyadmin/

    # 重启phpmyadmin容器
  3. 此处就可以连接了,当然你也可以修改配置文件限制连接的用户,然后在MySQL中给连接用户授权

使用docker-compose创建

  1. 安装docker-compose,这里就不赘述了,回头专门用篇文章来解释

  2. 编写docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    version: "2"
    services:
    mysql:
    image: hub.c.163.com/library/mysql
    container_name: test-mysql
    restart: always
    ports:
    - "3306:3306"
    environment:
    MYSQL_USER: "root"
    MYSQL_PASSWORD: "root"
    MYSQL_ROOT_PASSWORD: "root"
    networks:
    - net-mysql

    phpmyadmin:
    image: docker.io/phpmyadmin/phpmyadmin
    container_name: test-myadmin
    ports:
    - "80:80"
    environment:
    MYSQL_USER: "root"
    MYSQL_PASSWORD: "root"
    MYSQL_ROOT_PASSWORD: "root"
    networks:
    - net-mysql

    networks:
    net-mysql:
  3. 发布容器

    1
    2
    # 使用命令发布容器
    docker-compose up -d
  4. 然后就可以使用了,不需要修改任何配置文件