【Docker】— MySQL服务安装和基本配置

更新日志:

  • [2021-07-15]
    文章发布

说明:


1. 目录和端口准备
  • 目录
    •   mkdir -p \
        /data/dockerData/mysql/logs \
        /data/dockerData/mysql/data \
        /data/dockerData/mysql/conf
      
    • 三个目录依次是日志、数据和配置文件目录
  • 端口
    • 如果开了防火墙,需要在防火墙中添加对应的MySQL宿主机的端口,这里,以firewall为例
      • 添加端口,firewall-cmd --zone=public --add-port=2333/tcp --permanent
      • 重新加载端口规则,使得新的端口生效,firewall-cmd --reload

2. 配置文件准备
  • cd /data/dockerData/mysql/conf && vim my.cnf,填写以下内容后保存退出
  •   [mysqld]
      # 服务端字符集
      character-set-server=utf8
      # 日志超期时间,或者说是保存几天的日志
      expire_logs_days=7
      sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
      max_connections=50
      
      
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      datadir         = /var/lib/mysql
      
      # null 表示限制mysqld不允许导入|导出
      secure-file-priv= NULL
      
      # 禁用符号链接以防止各种安全风险
      symbolic-links=0
      
      # 自定义配置文件存放位置,其实这个没有用到,因为会报目录深度达到最大限制而取消的warning
      !includedir /etc/mysql/conf.d
      
      [client]
      # 客户端字符集
      default-character-set=utf8
    

3.启动MySQL服务
  •   docker run --restart=always \
      --network mysql_bridge \
      -p 3306:3306 \
       --name mysql \
      -v /data/dockerData/mysql/logs:/var/log/mysql \
      -v /data/dockerData/mysql/data:/var/lib/mysql \
      -v /data/dockerData/mysql/conf/my.cnf:/etc/mysql/my.cnf \
      -e MYSQL_ROOT_PASSWORD=maixiaochai \
      -d mysql:8.0.25
    
    • --restart:容器重启策略,always表示容器一停止就重启,还有以下几种策略
      • no,默认策略,在容器退出时不重启容器
      • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
      • on-failure:3,在容器非正常退出时重启容器,最多重启3次
      • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    • --network:使用特定的网桥,需要提前用docker network create mysql_bridge进行创建。也可以不使用次参数,这时候使用的是默认网桥
    • -p:绑定端口,宿主机端口:容器端口
    • --name:容器的新名字,起一个名字好辨别,命令上也操作简单
    • -v:(数据卷)目录映射,宿主机目录:容器目录,也可以映射文件-文件
    • -e:给容器传递的环境变量参数,这里设置了MySQL root用户的密码。不同容器的所需环境变量参数不同,注意看相关容器下的说明
    • -d,容器在后台运行
  • 查看容器运行状态
    • docker ps
      • 在这里插入图片描述
      • status这一列如果是up 后边跟时间,说明是正常运行的。如果是restarting(x)或者其它状态,说明容器运行是有问题的,需要对症下药了。

4. MySQL8.x的基本配置

不同版本MySQL的内部配置方法略有不同,需对症下药

  • docker exec -it mysql bash,以命令行方式与容器交互,可以理解为进入了容器的命令行
  • 登录MySQLmysql -u root -p,然后根据提示输入环境变量中设置的密码即可
    • MySQL8.0.25默认是支持root用户远程和本地登录的,所以,root用户的远程登录不用设置
  • 创建新库create database db_mxc;
  • 创建新用户create user spider@'%' identified with caching_sha2_password by 'maixiaochai' password expire never;
    • @'%':表示所有地址都能以该账户访问MySQL
    • with caching_sha2_password: 使用caching_sha2_password这种插件加密密码
      • 具体使用哪种插件加密密码,可以通过以下语句查看(同时也能查看到授权的host)
        • select user,host,authentication_string, plugin from mysql.user;
        • 在这里插入图片描述
    • password expire never,密码永不过期
  • 给用户授权 db_mxc库的权限,grant all on db_mxc.* to spider@'%';
    • 刷新权限,使得配置的权限生效,flush privileges;
  • 查看用户在特定host下的权限(被执行的授权语句)
    • show grants for spider@'%';
    • 在这里插入图片描述

The end.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值