• Docker安装MySQL 8.0镜像,简易上手


    安装及启动docker


    1、安装docker 

    [root@docker]# yum install docker-ce docker-ce-cli containerd.io -y


    2、启动docker,并且设置docker开机启动

    1. [root@docker]# systemctl start docker      启动docker
    2. [root@docker]# systemctl enable docker     设置开机自启docker
    3. Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
    4.  
    5. [root@docker]# ps aux|grep docker          查看docker进程是否启动
    6. root       16210  0.4  2.0 1368904 79400 ?       Ssl  17:29   0:00 /usr/bin/dockerd-H fd:// --containerd=/run/containerd/containerd.sock
    7. root       16363  0.0  0.0  12348  1112 pts/0    S+   17:30   0:00 grep --color=auto docker

    3. 拉取镜像

    docker pull mysql
    

    如果要指定版本,在mysql后面加上:+版本号,例如:

    docker pull mysql:8.0

    查看mysql镜像

    1. docker images
    2. REPOSITORY TAG IMAGE ID CREATED SIZE
    3. mysql 8.0 3218b38490ce 10 months ago 516MB

    4. 配置 mysql 的配置信息

    • 创建数据目录和配置文件
      提前在宿主机,创建好放置mysql的配置文件的目录和数据目录,并且进行授予权限,避免挂载外部配置和数据时启动失败:
    mkdir -p /usr/local/docker/mydata/mysql/conf
    
    • 设置文件夹权限
    chmod -R 755  /usr/local/docker/mydata/mysql/
    
    • 创建my.cnf配置文件
    1. vim /usr/local/docker/mydata/mysql/conf/my.cnf
    2. [client]
    3. default-character-set=utf8
    4. [mysql]
    5. default-character-set=utf8
    6. [mysqld]
    7. init_connect='SET collation_connection = utf8_unicode_ci'
    8. init_connect='SET NAMES utf8'
    9. character-set-server=utf8
    10. collation-server=utf8_unicode_ci
    11. skip-character-set-client-handshake
    12. skip-name-resolve
    13. secure_file_priv=/var/lib/mysql

    提醒

    无论你是否使用我的配置,如果你的安装的是新版MySQL,务必要复制这一句:

    secure_file_priv=/var/lib/mysql
    

    第一次创建启动MySQL容器的时候,MySQL会访问/var/lib/mysql文件夹,如果没有权限就会导致无法启动,使用docker ps之后看不到mysql容器在运行,需要设置secure_file_priv的值指定为/var/lib/mysql,这样就有权限正常访问和读写/var/lib/mysql目录

    Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Suppliedvalue : /var/lib/mysql-files
    译文:无法访问–secure-file-priv的目录。请确保该目录存在并且可由MySQL服务器访问。提供的值:/var/lib/mysql文件

    secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
    secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
    secure_file_priv的值为空,表示不对mysqld 的导入|导出做限制

    5. 创建并启动MySQL容器命令

    1. sudo docker run -p 3306:3306 --name mysql \
    2. -v /usr/local/docker/mydata/mysql/log:/var/log/mysql \
    3. -v /usr/local/docker/mydata/mysql/data:/var/lib/mysql \
    4. -v /usr/local/docker/mydata/mysql/conf:/etc/mysql \
    5. -e MYSQL_ROOT_PASSWORD=root \
    6. -d mysql:8.0

    参数说明:

    1. -p 3306:3306:将容器的3306端口映射到主机的3306端口
    2. --name mysql:定义容器名称为mysql
    3. -v /mydata/mysql/log:/var/log/mysql :将MySQL的日志文件夹挂载到主机
    4. -v /mydata/mysql/data:/var/lib/mysql:将MySQL的数据文件夹挂载到主机
    5. -v /mydata/mysql/conf:/etc/mysql:将MySQL的配置文件夹挂载到主机
    6. -e MYSQL_ROOT_PASSWORD=root:初始化root用户密码 经过测试,貌似初始密码都是root,只能装好以后修改
    7. -d mysql:latest:选择MySQL版本为latest的镜像构建容器

    6. 查看正在运行的容器

    docker ps
    

    7. 进入到MySQL容器内部进行配置 进入命令

    docker exec -it mysql ./bin/bash
    

    8. 连接MySQL

    这里因为我们自己设置的MySQL默认密码为root所以p后面为root

    mysql -uroot -proot
    

    9. 更改MySQL密码

    1. use mysql

    修改访问主机以及密码等,设置为所有主机可访问

    注意:mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接

    1. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

    10. 测试链接

    测试前请保证关闭了防火墙,如果是云服务器记得在管理后台,开放3306规则;
    Linux关闭防火墙,命令如下:

    1. # 关闭
    2. systemctl stop firewalld
    3. # 禁止开机启动防火墙
    4. systemctl disable firewalld

    如果本篇文章对你有帮助的话,很高兴能够帮助上你。

    当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。

  • 相关阅读:
    java8 新特性2-接口中的默认方法和静态方法
    Plink常见命令 --bfile --freq--recode --make-bed
    Vue - 祖孙组件之间跨级传值($attrs、$listeners)
    c 语言中的数组和指针
    2022年Java秋招面试必看的 | 微服务面试题
    【mmsegmentation】
    自动控制原理8.2---常见非线性特性及其对系统运动的影响
    基于多设计模式下的同步&异步日志系统
    【JAVA学习笔记】63 -坦克大战1.3-敌方发射子弹,击中坦克消失并爆炸,敌人坦克随机移动,规定范围限制移动
    redis学习八spring.data.redis、连接、序列化、high/low api
  • 原文地址:https://blog.csdn.net/chenthe1/article/details/127737993