Docker-安装MySQL8.x,挂载本地数据目录和配置文件(命令详解)

1.拉取镜像

  • 搜索镜像、拉取镜像

$ docker search mysql
$ docker pull mysql

2.创建本地目录

  • 创建本地目录、创建本地配置文件
  • 注:路径都是绝对路径,换成你自己的即可

$ mkdir /wyj/mysql8 && \
 touch /wyj/mysql8/my.cnf

3.编辑配置文件

  • vim /wyj/mysql8/my.cnf
  • 复制下面的内容到 /wyj/mysql8/my.cnf
  • 注:路径都是绝对路径,换成你自己的即可

[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600

4.运行容器(注意对应本地路径不要错)

  • 运行容器,映射端口为3306,(注意对应本地路径不要错)
  • 注:路径都是绝对路径,换成你自己的即可

$ docker run \
  -d \
  -p 3306:3306 \
  -v /wyj/mysql8/data:/var/lib/mysql \
  -v /wyj/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf \
  -e MYSQL_ROOT_PASSWORD=1234qwer \
  --restart=always \
  --privileged=true \
  --name mysql8 \
  mysql
  
#列出当前所有正在运行的container
$ docker ps 

#备用参数
#许多配置选项可以作为标志传递给mysqld. 无需cnf灵活地自定义。默认编码和排序规则更改为使用 UTF-8 ( utf8mb4)
 --character-set-server=utf8mb4 
 --collation-server=utf8mb4_unicode_ci

5.常用命令

  • 常用命令

$ docker ps :列出当前所有正在运行的container

$ docker ps -a :列出所有的container(包含历史,即运行过的container)

$ docker kill id    : 杀死容器

$ docker stop id    : 停止容器

$ docker start id   : 启动容器

$ docker restart id : 重启容器

$ docker rmi -f  <image ID>: 删除一个或多个镜像 image

$ docker rm -f  id   :  删除指定 镜像 image

$ docker rm -f <container...>   :  删除一个或多个container

$ docker rm  -f `docker ps -a -q`   : 删除所有的container

$ docker rm `docker ps -f "status=exited" -q`  : 删除停止的容器

$ docker kill`docker ps -a -q` :停止所有container

$ docker exec -it ng /bin/bash  :进入容器

$ docker cp ng:/etc/nginx/nginx.conf /data/nginx.conf   :拷贝容器内文件到外部

6.环境变量说明

  • 启动mysql镜像时,您可以通过在docker run命令行中传递一个或多个环境变量来调整 MySQL 实例的配置。请注意,如果您使用已包含数据库的数据目录启动容器,则以下任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时将始终保持不变。
  • MYSQL_ROOT_PASSWORD(必选)
    此变量是必需的,并指定将为 MySQLroot超级用户帐户设置的密码。在上面的例子中,它被设置为my-secret-pw。
  • MYSQL_DATABASE
    此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于GRANT ALL)。
  • MYSQL_USER, MYSQL_PASSWORD
    这些变量是可选的,用于创建新用户和设置该用户的密码。该用户将被授予MYSQL_DATABASE变量指定的数据库的超级用户权限(见上文)。要创建用户,这两个变量都是必需的。
    请注意,无需使用此机制来创建超级用户超级用户,默认情况下会使用MYSQL_ROOT_PASSWORD变量指定的密码创建该用户。
  • MYSQL_ALLOW_EMPTY_PASSWORD
    这是一个可选变量。设置为非空值,例如yes,以允许使用 root 用户的空白密码启动容器。注意:yes除非您真的知道自己在做什么,否则不建议将此变量设置为,因为这将使您的 MySQL 实例完全不受保护,从而允许任何人获得完全的超级用户访问权限。
  • MYSQL_RANDOM_ROOT_PASSWORD
    这是一个可选变量。设置为非空值,例如yes,为 root 用户生成一个随机初始密码(使用pwgen)。生成的 root 密码将打印到 stdout ( GENERATED ROOT PASSWORD: …)。
  • MYSQL_ONETIME_PASSWORD
    初始化完成后将root(不是MYSQL_USER! 中指定的用户)用户设置为过期,强制在首次登录时更改密码。任何非空值都将激活此设置。注意:此功能仅在 MySQL 5.6+ 上受支持。在 MySQL 5.5 上使用此选项将在初始化期间引发适当的错误。
  • MYSQL_INITDB_SKIP_TZINFO
    默认情况下,入口点脚本会自动加载CONVERT_TZ()函数所需的时区数据。如果不需要,任何非空值都会禁用时区加载。
  • 文件密码
    作为通过环境变量传递敏感信息的替代方法,_FILE可以将其附加到先前列出的环境变量中,从而导致初始化脚本从容器中存在的文件中加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker 机密中加载密码。例如:
  • $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag
    目前,这仅支持MYSQL_ROOT_PASSWORD,MYSQL_ROOT_HOST,MYSQL_DATABASE,MYSQL_USER,和MYSQL_PASSWORD。

  • 留白 —<老吉>
  • ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长毛山顶洞人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值