Docker安装Mysql

Docker安装

  1. 查看自己的linux的系统版本,检查系统是否满足安装要求 uname - r

    可选: 卸载旧版本sudo apt-get remove docker docker-engine docker.io containerd runc

  2. 安装 Docker CE curl -fsSl https://get.docker.com -o get-docker.sh

    此处的docker ce为社区版,如果是花钱购买,还有docker ee

  3. 通过docker-ce 安装docker sudo sh get-docker.sh

  4. 测试docker是否安装正常 docker -v

  5. 可能会出现的问题:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

    解决方法: 出现此错误是因为安装后,docker没有启动,需要使用systemctl start docker 来启动docker 6.如果使用docker pull命令拉取镜像过慢或者超时,需要配置镜像源,具体步骤如下

    1.使用docker info 观察是否有registry 开头的键值对,如果有使用vim /etc/docker/daemon.json来修改镜像源

    2.执行追加写入命令tee /etc/docker/daemon.json <<-'EOF'

    写入的内容:{

    "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]

    }

    以 EOF结尾结束追加内容

    3.重新加载配置 sudo systemctl daemon-reload

    4.重启docker服务 sudo systemctl restart docker

Docker安装Mysql

  1. 拉取mysql镜像 docker pull mysql
  2. 查看拉取成功的镜像 docker images
  3. 运行镜像:
sql 复制代码
 docker run -p 3306:3306 --name mysql --restart=always --privileged=true \ 
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/loacl/mysql/conf.d:/etc/mysql/conf.d\
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

--命令解释--
-p 3306:3306:指定宿主机端口与容器端口映射关系
 name mysql:创建的容器名称
 restart=always:总是跟随docker启动
 privileged=true:获取宿主机root权限,真实环境避免设置,防止容器逃逸越权
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,
-v /etc/localtime:/etc/localtime:ro:时钟同步,避免时区的问题,ro是只读的意思,
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
  1. 如果容器启动显示exit ,需要执行命令docker logs -f mysql来查看错误日志。

  2. 进入挂载数据卷的位置cd /usr/local/mysql,创建my.inf配置文件vim my.inf

    • my.inf写入内容:
    inf 复制代码
      [client]
      default-character-set=utf8mb4
     
      [mysql]
      default-character-set=utf8mb4
      
      [mysqld]
      
      # 设置东八区时区
      default-time_zone = '+8:00'
      
      # 设置密码验证规则,default_authentication_plugin参数已被废弃
      
      # 改为authentication_policy
      
      #default_authentication_plugin=mysql_native_password
      authentication_policy=mysql_native_password
      
      # 限制导入和导出的数据目录
      # 为空,不限制导入到处的数据目录;
      # 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
      # 为NULL,禁止导入与导出功能
      #secure_file_priv=/var/lib/mysql
      secure_file_priv=
      
      init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
      
      init_connect='SET NAMES utf8mb4'
      
      character-set-server=utf8mb4
      
      collation-server=utf8mb4_0900_ai_ci
      
      skip-character-set-client-handshake
      
      skip-name-resolve 
  3. 重启mysql容器,刷新配置 docker restart mysql

  4. 授权远程登录权限

    1. 进入容器内部 docker exec -it mysql /bin/bash
    2. 进入mysql mysql -u root -p
    3. 切换至mysql系统库 use mysql
    4. 查询远程登录root用户的权限 select user,host from user;
    5. 看是否出现%权限,如若都是localhost权限则是属于没有授权远程登录
    6. 授权ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '密码';因为mysql8.0版本默认是caching_sha2_password密码规则,不修改无法使用客户端连接,因为客户端通常使用的都是mysql_native_passwor。
    7. 刷新权限 FLUSH PRIVILEGES;
    8. 此时通过客户端就可以连接服务器上的mysql镜像了。

可能遇到的问题

  • 执行进入容器的命令无法退出容器,请使用组合键ctrl+p+q 或者exit。
  • 经过一系列操作发现自己还是无法再客户端连接mysql,请检查云服务器是否开放端口3306
  • 查看或监测容器镜像的命令,docker ps -a检查容器运行状态,启动镜像 docker start 镜像名称
  • 请在未使用root用户的前提下,遇到问题多使用su命令开头加待执行命令
相关推荐
天行健,君子而铎20 分钟前
知形-数据库风险监测系统:非侵入式、可溯源、差异化的数据库安全方案
网络·数据库·安全
这个DBA有点耶22 分钟前
分布式事务深度:TCC空回滚、悬挂与Saga补偿风暴的根因与解法
数据库·mysql·代码规范
执笔为剑22 分钟前
2.1.2-2、V8R3迁移到V8R6-迁移介绍
数据库
高频因子挖掘机24 分钟前
股票分红送转后价格“断层”:前复权、后复权和不复权该怎么选?
后端·github·api
一条泥憨鱼24 分钟前
【Redis | 黑马点评】短信登录功能 源码深度分析
java·redis·后端·session·黑马点评
威哥爱编程29 分钟前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·spring boot·后端
hiahiahia12332 分钟前
Message 和对话
服务器·前端·数据库
威哥爱编程34 分钟前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
java·spring boot·后端
小蒜学长34 分钟前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·uni-app·家政服务
又尔D.1 小时前
MySQL下载安装
数据库·mysql