• docker 中安装 MySQL 以及使用


    简介

    这里的实现思路是,先拉取完 MySQL 镜像之后,启动 MySQL 容器,然后将 MySQL 的配置文件拉取到本地,关闭之前启动的容器,重新使用挂载的方式启动。

    第一步: 拉取 mysql 镜像

    docker pull mysql

     第二步: 在本地创建用于挂载的目录

    这里是用来在本地创建一个 conf 文件,以后启动 docker 中的 mysql 时,就使用这个配置文件

    1. // 用于挂载mysql数据文件 -p 指的是没有父级的时候,创建父级文件夹
    2. sudo mkdir -p /apps/mysql/data
    3. // 用于挂载mysql配置文件
    4. sudo mkdir /apps/mysql/conf
    5. // 上面的两个步骤,可以使用下面这个命令来执行
    6. mkdir -p /apps/mysql/{conf,data}
    7. // 修改 /my 目录拥有者
    8. sudo chown root:docker $PWD/mysql

    第三步:查看 mysql 配置文件的路径,复制配置文件到本地

    这里是需要进入 docker 容器中,查看 容器中的配置文件路径,将配置文件复制到本地

    1. # 启动一个测试的容器
    2. docker run --name mysqltest \
    3. -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
    4. -d mysql
    5. # 访问 mysql 容器
    6. docker exec -it mysqltes /bin/sh
    7. # 查找Docker内,MySQL配置文件my.cnf的位置
    8. mysql --help | grep my.cnf
    9. # 显示如下,意思是路径按优先排序,会是在以下路径里:
    10. # 配置文件的路径不一定都一样,有些博客介绍的位置是在/etc/my.cnf。
    11. # 而我这个系统上面实际存在位置是在/etc/mysql/my.cnf
    12. order of preference, my.cnf, $MYSQL_TCP_PORT,
    13. /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

     创建好本地的挂载数据路径后,我们再将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可。

    docker cp mysqltest:/etc/mysql/my.cnf /apps/mysql/conf

    第四步: 使用镜像创建容器

    这里介绍两种挂载的方式,使用下面其中一种就好。

    使用 -v 挂载方式

    这里需要切换到 /apps/mysql 目录下

    docker run --name mysql -p 3306:3306 -v $PWD/data:/var/lib/mysql -v $PWD/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

    命令解析:

    • --name:容器名
    • --p:映射宿主主机端口
    • -v:挂载宿主目录到容器目录
    • -e:设置环境变量,此处指定root密码
    • -d:后台运行容器

     使用 -mount 方式创建

    这里使用的是说,将本地的配置文件提供给 docker 中的容器读取。

    1. docker run --name wp-mysql \
    2. -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
    3. --mount type=bind,src=/apps/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
    4. --mount type=bind,src=/apps/mysql/data,dst=/var/lib/mysql \
    5. --restart=on-failure:3 \
    6. -d mysql

    第五步: 进入docker 容器内部对 mysql 配置

    这里是为了让 mysql 可以让外部访问

    1. # 进入 mysql 容器直接访问 mysql 服务
    2. docker exec -it mysql /bin/sh
    3. # 连接到mysql
    4. mysql -uroot -p

    输入上面设置的密码 123456

     第六步:设置MySQL可以外部访问

    1. # 创建一个账号,用来进行远程访问;
    2. # {usernama} 是远程访问登录的用户名,不建议用 root;
    3. # {password} 是远程访问的登录密码;
    4. # '%'代表的是所有IP,如果可以尽量设置指定 IP 或 IP 段
    5. CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    6.  
    7. # 赋予所有权限给之前创建的账号
    8. GRANT ALL ON *.* TO 'username'@'%';
    9.  
    10. # 确认使用这里的密码登录此账号
    11. ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
    12.  
    13. # 刷新权限
    14. FLUSH PRIVILEGES;

    完整的命令为

    1. # 创建一个账号-admin,用来进行远程访问;
    2. CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
    3.  
    4. # 赋予所有权限给之前创建的账号:admin
    5. GRANT ALL ON *.* TO 'admin'@'%';
    6. # 确认使用密码{123456}登录此账号{admin}
    7. # 密码尽量复杂,安全性更高。
    8. ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    9. # 刷新权限
    10. FLUSH PRIVILEGES;

    连接成功的图

     

  • 相关阅读:
    设计模式:状态模式
    EasyExcel 复杂数据导出
    ES和kibana安装
    pcl--基于区域增长的点云分割
    【并发】Java并发线程池底层原理详解与源码分析(上)
    工程机械比例阀电流采集方案
    2022 WAIC 闭幕,融云提供分论坛元宇宙直播技术支持
    [图解]软件开发中的糊涂用语-04-为什么要追究糊涂用语
    基础知识-网络与服务器
    面向对象12:什么是多态
  • 原文地址:https://blog.csdn.net/qq_18948359/article/details/125486934