前言
这份文档将指导您在 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
- 密码: 在运行容器时设置的密码
- 数据库: 远程数据库名称
自定义配置
若要进行自定义配置,请执行以下操作:
-
创建配置文件夹:
mkdir mysql.conf.d
-
编辑配置文件
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
修改以上参数以满足您的需求。
-
调整配置文件权限:
chmod 640 mysqld.cnf
安全注意事项
- 修改端口和密码: 在
docker run
命令中可以更改端口号、数据库名称或密码。 - 加强安全措施: 允许 root 用户进行远程访问存在安全风险,应在生产环境中采取额外的安全措施。
停止和清理
停止 MySQL 容器,可使用以下命令:
docker stop CONTAINER_ID
删除 MySQL 容器,可使用以下命令:
docker rm CONTAINER_ID
总结
使用 Docker 命令运行 MySQL 并允许 root 用户进行远程访问,为开发和测试环境提供了灵活性。在生产环境中需加强安全措施以确保系统安全。