zoukankan      html  css  js  c++  java
  • 【Docker】04 部署MySQL

    从官网上拉取最新MySQL镜像:

    docker pull mysql:latest

    创建并运行一个MySQL镜像的容器

    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

    即使该容器实例运行失败,也表示它是创建成功的,已经存在

    命令参数的解释?

    -itd
    -d: 后台运行容器,并返回容器ID
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    
    --name mysql-test
    设置该容器实例的名称标识
    
    -p 3306:3306 
    映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务
    
    -e MYSQL_ROOT_PASSWORD=123456 mysql
    设置 MySQL 服务 root 用户的密码。

    如果物理机的已经运行了本地安装的MySQL并占用了3306端口,应该更改为3307或者其他端口

    【如果这个容器异常无法使用,直接移除容器重新创建即可】

    移除容器实例:

    docker rm mysql-test

     

    修改端口设置并重新执行运行命令

    docker run -itd --name mysql-test -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql

    我们访问MySQL容器,需要先进入这个容器:

    docker exec -it 容器名称标识 bash

    这里刚刚进入MySQL容器马上就退出了

    再次启动就报错说容器没有运行

    百度得知容器实例是因为Linux内存导致的

    使用指令查看内存

    free -h

    算了玩不了。。。

    然后使用TOP命令查看Linux所有进程使用情况:

    发现本地安装的MYSQL服务内存占用高的离谱,于是立刻停止服务了

    重新创建运行容器实例,这回正常了:

    输入密码123456,访问成功:

    使用本机的SQLyog访问测试,记住是3307端口

    发现错误2003代码:

    很可能是因为防火墙没开放这个端口

    先退出容器:

    防火墙开放3307端口,重启之后再看看

    但是还是没有用,可能因为MYSQL8.021版本远程用户需要创建新用户才可以使用

    进入容器实例,进入MySQL:

    更改加密规则:

    ALTER USER 'root'@localhost IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

    创建一个远程用户:

    CREATE USER 'daizhizhou'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

    然后赋予完整权限:

    GRANT ALL PRIVILEGES ON *.* TO 'daizhizhou'@'%';

    最后刷新权限:

    flush privileges;

    使用远程账号访问还是不行,但是到这里我才明白是因为之前设置的端口号原因导致的:

    删除这个镜像应该使用这个端口配置,因为mysql默认3306端口,配置3307根本无法监听

    所以需要由MySQL镜像的3306配置实际端口的3307:

    docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

    但是又有新的问题:

    这个好解决,回到上面创建新的用户并赋予所有权限,然后刷新权限,访问即可

    终于反应过来那个配置的解释的话,这样的话就可以本机mysql和容器mysql共存了

  • 相关阅读:
    Android studio ButterKnife插件
    Android Studio Prettify 插件
    Android studio的主题颜色修改
    MeasureSpec 的三中类型
    android 加载远程Jar、APK
    android源码 键盘消息处理机制
    Android源码阅读笔记二 消息处理机制
    phpstrom 激活
    sublime vue 语法高亮插件安装
    mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”的处理方法
  • 原文地址:https://www.cnblogs.com/mindzone/p/13358144.html
Copyright © 2011-2022 走看看