MySql教程

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

本文主要是介绍【Docker】— MySQL服务安装和基本配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

更新日志:

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

说明:

  • 本文地址
    • 《【Docker】— MySQL服务安装和基本配置》https://blog.csdn.net/maixiaochai/article/details/118754644
  • 关于 MaiXiaochai
    • CSDN:https://blog.csdn.net/maixiaochai
    • GitHub:https://github.com/MaiXiaochai

1. 目录准备
  •   mkdir -p \
      /data/dockerData/mysql/logs \
      /data/dockerData/mysql/data \
      /data/dockerData/mysql/conf
    
  • 三个目录依次是日志、数据和配置文件目录

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.
这篇关于【Docker】— MySQL服务安装和基本配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!