共计 2101 个字符,预计需要花费 6 分钟才能阅读完成。
环境:我应用 3A 服务器搭建 centos7
简介
这里的实现思路是,先拉取完 MySQL 镜像之后,启动 MySQL 容器,而后将 MySQL 的配置文件拉取到本地,敞开之前启动的容器,从新应用挂载的形式启动。
第一步:拉取 mysql 镜像
docker pull mysql
第二步:在本地创立用于挂载的目录
这里是用来在本地创立一个 conf 文件,当前启动 docker 中的 mysql 时,就应用这个配置文件
// 用于挂载 mysql 数据文件 -p 指的是没有父级的时候,创立父级文件夹
sudo mkdir -p /apps/mysql/data
// 用于挂载 mysql 配置文件
sudo mkdir /apps/mysql/conf
// 下面的两个步骤,能够应用上面这个命令来执行
mkdir -p /apps/mysql/{conf,data}
// 批改 /my 目录拥有者
sudo chown root:docker $PWD/mysql
第三步:查看 mysql 配置文件的门路,复制配置文件到本地
这里是须要进入 docker 容器中,查看 容器中的配置文件门路,将配置文件复制到本地
启动一个测试的容器
docker run –name mysqltest \
-p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
-d mysql
拜访 mysql 容器
docker exec -it mysqltes /bin/sh
查找 Docker 内,MySQL 配置文件 my.cnf 的地位
mysql –help | grep my.cnf
显示如下, 意思是门路按优先排序,会是在以下门路里:
配置文件的门路不肯定都一样,有些博客介绍的地位是在 /etc/my.cnf。
而我这个零碎下面理论存在地位是在 /etc/mysql/my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
创立好本地的挂载数据门路后,咱们再将测试容器里 MySQL 的配置文件复制到该门路。日后需改配置,间接在挂载门路的配置文件上批改即可。
docker cp mysqltest:/etc/mysql/my.cnf /apps/mysql/conf
第四步:应用镜像创立容器
这里介绍两种挂载的形式,应用上面其中一种就好。
应用 -v 挂载形式
这里须要切换到 /apps/mysql 目录下
docker run –name mysql -p 3306:3306 -v $PWD/data:/var/lib/mysql -v $PWD/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql
命令解析:
–name:容器名
–p:映射宿主主机端口
-v:挂载宿主目录到容器目录
-e:设置环境变量,此处指定 root 明码
-d:后盾运行容器
应用 -mount 形式创立
这里应用的是说,将本地的配置文件提供给 docker 中的容器读取。
docker run –name wp-mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
–mount type=bind,src=/apps/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
–mount type=bind,src=/apps/mysql/data,dst=/var/lib/mysql \
–restart=on-failure:3 \
-d mysql
第五步:进入 docker 容器外部对 mysql 配置
这里是为了让 mysql 能够让内部拜访
进入 mysql 容器间接拜访 mysql 服务
docker exec -it mysql /bin/sh
连贯到 mysql
mysql -uroot -p
输出下面设置的明码 123456
第六步:设置 MySQL 能够内部拜访
创立一个账号,用来进行近程拜访;
{usernama} 是近程拜访登录的用户名,不倡议用 root;
{password} 是近程拜访的登录明码;
‘%’ 代表的是所有 IP,如果能够尽量设置指定 IP 或 IP 段
CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’;
赋予所有权限给之前创立的账号
GRANT ALL ON . TO ‘username’@’%’;
确认应用这里的明码登录此账号
ALTER USER ‘username’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
刷新权限
FLUSH PRIVILEGES;
残缺的命令为
创立一个账号 -admin,用来进行近程拜访;
CREATE USER ‘admin’@’%’ IDENTIFIED BY ‘123456’;
赋予所有权限给之前创立的账号:admin
GRANT ALL ON . TO ‘admin’@’%’;
确认应用明码 {123456} 登录此账号 {admin}
明码尽量简单,安全性更高。
ALTER USER ‘admin’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
刷新权限
FLUSH PRIVILEGES;
连贯胜利的图