1. 运行容器,自动下载镜像
docker run --name MysqL -e MysqL_ROOT_PASSWORD=123456 -d MysqL
2. 创建主机挂载配置文件
mkdir -p ~/i/apps/MysqL/{conf,data}
3. 初始化配置文件
docker cp MysqL:/var/lib/MysqL ~/i/apps/MysqL/data
docker cp MysqL:/etc/MysqL/my.cnf ~/i/apps/MysqL/conf/my.cnf
4. 停止删除容器
docker rm -f MysqL
5. 生成启动文件 - start.sh
[root@wanfei ~]# cd ~/i/apps/MysqL/ $ cat <<EOF > start.sh #!/bin/bash HOST_NAME=MysqL.wanfei.xyz REdis_DIR=`pwd` docker stop MysqL docker rm MysqL docker run -d \\ --hostname \${HOST_NAME} \\ -p 3306:3306 \\ --name MysqL \\ --privileged=true \\ -v \${REdis_DIR}/conf/my.cnf:/etc/MysqL/my.cnf \\ -v \${REdis_DIR}/data/MysqL:/var/lib/MysqL \\ -e MysqL_ROOT_PASSWORD=123456 \\ MysqL EOF
参数说明
--hostname \${HOST_NAME}
: 设置访问的域名地址,${HOST_NAME}
是上面定义的MysqL.wanfei.xyz
这个地址-p 3306:3306
: 把容器内的3306
端口映射到宿主机3306
端口--privileged=true
: 给容器加上特定权限 。否则会chown: changing ownership of ‘/var/lib/MysqL/....‘: Permission denied
-v \${REdis_DIR}/conf/my.cnf:/etc/MysqL/my.cnf
:把宿主机配置好的my.cnf
放到容器内的这个位置中-v \${REdis_DIR}/data/MysqL:/var/lib/MysqL
:把MysqL持久化的数据在宿主机内显示,做数据备份-e MysqL_ROOT_PASSWORD=123456
: 指定数据库初始访问密码,第一次设置才有小,后面重启以修改的密码为准MysqL
:MysqL
镜像名,后面没有tag后,下载最新的tag,latest
6. 运行start.sh 启动MysqL
[root@wanfei MysqL]# sh start.sh MysqL MysqL f3d297633f4432495dc587d2860c212a371166897b6a380aceb0ebcdccc5dad8
7. 进入容器修改密码,开启远程连接
#进入容器 docker exec -it MysqL /bin/sh #进入MysqL(有可能上面密码设置无效) MysqL -u root -p #输入123456,如果失败,直接enter MysqL> use MysqL; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MysqL> select host,user,plugin from user; +-----------+------------------+-----------------------+ | host | user | plugin | +-----------+------------------+-----------------------+ | localhost | MysqL.infoschema | caching_sha2_password | | localhost | MysqL.session | caching_sha2_password | | localhost | MysqL.sys | caching_sha2_password | | localhost | root | caching_sha2_password | +-----------+------------------+-----------------------+ 4 rows in set (0.00 sec) #上面的root用户如果是localhost,只能localhost连接,不能远程连接,下面设置密码报错 MysqL> ALTER USER 'root'@'%' IDENTIFIED WITH MysqL_native_password BY 'xxxxxx'; ERROR 1396 (HY000): Operation ALTER USER Failed for 'root'@'%' #修改localhost为% MysqL> update user set host='%' where user='root'; Query OK, 1 row affected (0.14 sec) Rows matched: 1 Changed: 1 Warnings: 0 MysqL> select host,user,plugin from user; +-----------+------------------+-----------------------+ | host | user | plugin | +-----------+------------------+-----------------------+ | % | root | caching_sha2_password | | localhost | MysqL.infoschema | caching_sha2_password | | localhost | MysqL.session | caching_sha2_password | | localhost | MysqL.sys | caching_sha2_password | +-----------+------------------+-----------------------+ 4 rows in set (0.00 sec) MysqL> flush privileges; Query OK, 0 rows affected (0.01 sec) MysqL> ALTER USER 'root'@'%' IDENTIFIED WITH MysqL_native_password BY 'xxxxxx'; Query OK, 0 rows affected (0.02 sec) MysqL> flush privileges; Query OK, 0 rows affected (0.00 sec)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。