Bootstrap

在 Docker 中运行 MySQL 并允许 root 用户进行远程访问

前言

这份文档将指导您在 Docker 容器中运行 MySQL,并配置允许 root 用户远程访问。以下是详细的步骤和参数解释:

步骤

步骤 1: 运行 MySQL 容器

使用以下命令在 Docker 中启动 MySQL 5.7.14 容器:

docker run -d --restart=always -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=my_password \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_HOST="%" \
-v $PWD/mysql-bin:/usr/local/mysql/data/mysql-bin \
-v $PWD/data:/var/lib/mysql \
-v $PWD/logs:/var/log/mysql \
-v $PWD/mysql.conf.d:/etc/mysql/mysql.conf.d \
mysql:5.7.14
步骤 2: 参数解释
  • -d: 以守护进程方式在后台运行容器。
  • --restart=always: 容器退出后会自动重启。
  • -p 3306:3306: 将容器的 MySQL 默认端口 3306 映射到主机的 3306 端口。
  • -e MYSQL_ROOT_PASSWORD=my_password: 设置 MySQL 的 root 用户密码(请更改为您的安全密码)。
  • -e TZ=Asia/Shanghai: 设置容器的时区为亚洲/上海时区。
  • -e MYSQL_ROOT_HOST="%": 允许 root 用户从任何主机(%)远程访问 MySQL。
  • -v $PWD/mysql-bin:/usr/local/mysql/data/mysql-bin: 将容器中 MySQL 的 binlog 存储到主机的 $PWD/mysql-bin 目录。
  • -v $PWD/data:/var/lib/mysql: 将 MySQL 数据目录挂载到主机的 $PWD/data 目录。
  • -v $PWD/logs:/var/log/mysql: 将 MySQL 的日志目录挂载到主机的 $PWD/logs 目录。
  • -v $PWD/mysql.conf.d:/etc/mysql/mysql.conf.d: 将 MySQL 的配置文件目录挂载到主机的 $PWD/mysql.conf.d 目录。
步骤 3: 连接到远程 MySQL 数据库

现在,root 用户可以通过远程连接到 MySQL 数据库。使用 MySQL 客户端或其他数据库工具,在远程机器上连接到 MySQL 服务器:

  • 主机: MySQL 服务器的 IP 地址或主机名
  • 端口: 默认的 MySQL 端口是 3306(根据映射)
  • 用户名: root
  • 密码: 在运行容器时设置的密码
  • 数据库: 远程数据库名称
自定义配置

若要进行自定义配置,请执行以下操作:

  1. 创建配置文件夹:

    mkdir mysql.conf.d
    
  2. 编辑配置文件 mysqld.cnf

    vim ./mysql.conf.d/mysqld.cnf
    
    [mysqld]
    pid-file = /var/run/mysqld/mysqld.pid
    socket = /var/run/mysqld/mysqld.sock
    datadir = /var/lib/mysql
    log-error = /var/log/mysql/error.log
    symbolic-links = 0
    lower_case_table_names = 1
    max_connections = 10000
    server-id = 1
    log-bin = /usr/local/mysql/data/mysql-bin
    expire_logs_days = 2
    

    修改以上参数以满足您的需求。

  3. 调整配置文件权限:

    chmod 640 mysqld.cnf
    
安全注意事项
  • 修改端口和密码: 在 docker run 命令中可以更改端口号、数据库名称或密码。
  • 加强安全措施: 允许 root 用户进行远程访问存在安全风险,应在生产环境中采取额外的安全措施。
停止和清理

停止 MySQL 容器,可使用以下命令:

docker stop CONTAINER_ID

删除 MySQL 容器,可使用以下命令:

docker rm CONTAINER_ID

总结

使用 Docker 命令运行 MySQL 并允许 root 用户进行远程访问,为开发和测试环境提供了灵活性。在生产环境中需加强安全措施以确保系统安全。

;