部署MySQL
本教程将指导您如何在Docker环境中部署MySQL数据库,并展示如何通过外部MySQL客户端与之交互。
步骤 1: 准备环境
首先,我们需要在本地环境中创建必要的文件夹结构来存储MySQL的配置、日志和数据。
# 在终端创建mysql文件夹及其子文件夹
mkdir -p mysql/{conf,logs,data}# 创建配置文件 my.cnf,内容在下文中
cd mysql/conf
vim my.cnf
步骤 2: 获取MySQL镜像
使用Docker搜索并拉取MySQL镜像:
# 搜索mysql镜像
docker search mysql# 拉取mysql 5.7版本的镜像
docker pull mysql:5.7
步骤 3: 部署MySQL容器
运行以下命令来创建并启动MySQL容器,同时设置端口映射和目录映射:
# 创建并启动mysql容器
docker run -id \
-p 3306:3306 \
--name=mysql57 \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='your_password' \
mysql:5.7
详解端口和目录映射:
$PWD
:当前工作目录,此变量会解析为所在目录的绝对路径。-p 3306:3306
:将容器的3306端口映射到宿主机的3306端口。-v
参数:用于目录映射,确保容器内部数据的持久化。$PWD/conf:/etc/mysql/conf.d
:映射conf
目录。$PWD/logs:/logs
:映射logs
目录。$PWD/data:/var/lib/mysql
:映射data
目录。
-e MYSQL_ROOT_PASSWORD
:设置MySQL的root用户密码。
步骤 4: 访问MySQL容器
使用Docker命令进入容器内部,并通过MySQL命令行工具进行操作:
# 登录MySQL容器
docker exec -it mysql57 bash# 连接MySQL数据库
mysql -uroot -p'your_password'
外部访问容器内的MySQL
由于容器内的网络服务默认与外部环境隔离,我们通过端口映射来实现外部访问。
- 宿主机和容器间的通信通过映射端口实现。
- 访问宿主机的3306端口即相当于访问容器内部的MySQL服务。
配置文件 my.cnf
在 conf
文件夹中创建 my.cnf
配置文件,内容如下:
[mysqld]sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'# skip-grant-tablesevent_scheduler = 1bind-address=0.0.0.0port=3306user=mysqlbasedir=/usr/local/mysqldatadir=/var/lib/mysqlsocket=/tmp/mysql.sockcharacter_set_server=utf8mb4collation-server=utf8mb4_unicode_ciexplicit_defaults_for_timestamp=truelower_case_table_names=1# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Settings user and group are ignored when systemd is used.# If you need to run mysqld under a different user or group,# customize your systemd unit file for mariadb according to the# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]log-error=/data/mysql/mysql.errpid-file=/data/mysql/mysql.pid## include all files from the config directory#!includedir /etc/my.cnf.d
确保配置文件中的路径和设置与您的环境相匹配。
有任何问题欢迎私信我或者加我的联系方式,我会很乐于交流!