Docker安装mysql详细教程, mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘(已解决)

news2024/11/15 6:43:53

文章目录

  • 一、下载MySQL的docker镜像
  • 二、启动MySQL容器
    • 2.1 命令
    • 2.2 报错mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
  • 三、进入mysql容器
  • 四、修改mysql默认配置
    • 4.1 查看mysql挂载的文件夹
    • 4.2 mysql配置
  • 五、补充

如果还没在虚拟机/服务器中安装docker,可以查阅相关文档 先安装docker。

一、下载MySQL的docker镜像

拉取镜像的命令为 docker pull 镜像名:tagdocker pull 镜像名,前者拉取指定版本的镜像、后者拉取最新版本的镜像。此处拉取mysql 5.7

docker pull mysql:5.7
  • 如果提示权限不足的话,需要使用管理员的方式执行:sudo docker pull mysql:5.7
  • 可通过docker images查看拉取成功的镜像。

二、启动MySQL容器

2.1 命令

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7
  • 参数说明
    • -p 3306:3306:将容器的3306端口映射到主机的3306端口。如果本地已安装mysql或其他应该占用了3306端口,可使用其他端口 -p port1:3306,保证port1端口未被占用即可
    • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
    • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
    • -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
    • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

或者直接在/mydata/mysql/conf/目录下新建my.cnf文件,执行如下命令:

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7

2.2 报错mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’ (Errcode: 2 - No such file or directory)

补充:在启动mysq容器、即执行docker run -p xxx时,docker ps看不到创建的mysql容器,使用docker logs mysql发现报错,mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)

原因:这意味着 MySQL 在启动时无法找到 /etc/mysql/conf.d/ 目录,mysql容器的/etc/mysql目录挂载到宿主机的 /mydata/mysql/conf目录,这通常是因为这个目录在你挂载的配置卷 /mydata/mysql/conf 中不存在或没有正确创建,导致容器创建失败。

解决方法

检查本地配置目录:检查宿主机的 /mydata/mysql/conf 目录中是否存在 conf.dmysql.conf.d 子目录,如果不存在,创建这个子目录。

# 创建子目录
mkdir -p /mydata/mysql/conf/conf.d
mkdir -p /mydata/mysql/conf/mysql.conf.d

此时,可以通过命令进入conf 检查是否已经存在子目录

cd /mydata/mysql/conf
ls

删除或重命名旧容器:

# 删除它,以释放容器名称(推荐)
docker rm mysql

# 重命名旧容器
docker rename mysql old_mysql

重启容器:

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7

此时,通过命令可以查看是否可以已经启动MySQL容器

docker ps

也可通过Navicat等工具远程连接mysql。

至此,mysql已安装成功,接下来我们来修改配置。

三、进入mysql容器

docker exec -it mysql /bin/bash

使用MySQL命令打开客户端:

mysql -uroot -p        
mysql -uroot -p密码 --default-character-set=utf8   

在这里插入图片描述

四、修改mysql默认配置

4.1 查看mysql挂载的文件夹

由于在创建实例的时候,已经将部分文件夹挂载到Linux宿主机目录下,所以当我们修改一些mysql的配置文件时,不需要再进入docker环境下,直接在Linux环境下操作即可。挂载的目录为:

cd /mydata/mysql

4.2 mysql配置

Linux 操作系统中 MySQL 的配置文件是 my.cnf,一般会放在 /etc/my.cnf 或 /etc/mysql/my.cnf 目录下。内容一般为:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

1)宿主机进入mysql的conf目录,新建my.conf文件,写入内容:

cd /mydata/mysql/conf
ls
vi my.cnf
# 在my.cnf中插入上述my.cnf内容,保存退出

#重启mysql
docker ps
docker restart mysql

2)进入mysql容器内部,查看文件是否配置成功

docker exec -it mysql /bin/bash
cd /etc/mysql
ls
cat my.cnf

在这里插入图片描述

五、补充

1)设置mysql每次开机随docker自启动

可以使用docker run命令时加上--restart选项,或者在容器创建后更改其重启策略

docker run -d --restart=always --name yourContainerName yourImage

这里的--restart=always选项确保无论退出代码是什么,只要Docker守护程序启动,容器都会自动重启。

如果容器已经运行,您可以使用docker update命令更改重启策略

docker update mysql-container --restart=always

2)如果想 设置docker服务开机自启动,可使用如下命令:

systemctl enable docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

41 QOS技术(服务质量)

1 QOS 产生背景 对于网络业务,影响服务质量的因素包括传输的带宽、传送的时延、数据的丢包率等。网络资源总是有限的,只要存在抢夺网络资源的情况,就会出现服务质量的要求网络总带宽固定的情况下,如果某类业务占用的带宽越多&am…

redis server response timeout(3000ms) occurred after 3 retry attempts异常分析

读取redis数据报超时错误: Redis server response timeout (3000 ms) occured after 3 retry attempts2024-07-18 17:07:57.124 ERROR [e8f07b0a671c08311dff589827897232] [http-nio-9528-exec-6] c.z.i.u.m.c.e.BaspUserExceptionHandler.exceptionHandler:83 - R…

【贪心算法】力扣1481.不同整数的最少数目

给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。 示例 1: 输入:arr [5,5,4], k 1 输出:1 解释:移除 1 个 4 ,数组中只剩下 5 一种整数。…

studio编译报错java.lang.NullPointerException

安卓studio编译报错,这个是一个新建的项目就报错,原因是 implementation androidx.appcompat:appcompat:1.7.0版本太高,修改后版本 implementation androidx.appcompat:appcompat:1.4.0, 编译又报错 18 issues were found wh…

数学基础【俗说矩阵】:矩阵相乘

矩阵乘法 矩阵乘法推导过程 一、两个线性方程复合代入 二、X1和X2合并同类项 三、复合后方程组结果 四、线性方程组矩阵表示 五、线性方程组矩阵映射表示 复合映射表示 六、矩阵乘法导出 矩阵乘法法则 1、规则一推导过程 左取行,右取列,对应相乘后…

maven内网依赖包编译报错问题的一种解决方法

背景 外网开发时可以连接互联网,所以编译没有什么问题,但是将数据库、代码、maven仓库全部拷贝到内网,搭建内网环境之后,编译失败。 此依赖包的依赖层级图 maven镜像库配置使用拷贝到内网的本地库,配置如下&#xff…

数据结构(Java):优先级队列(堆)堆的模拟实现

目录 1、优先级队列 1.1 概念 1.2 PriorityQueue底层结构 2、 堆 2.1 堆的概念 2.2 堆的存储结构 3、优先级队列(堆)的模拟实现 3.1 堆的创建 3.1.1 向下调整算法建完整堆 3.2 堆的插入 3.2.1 向上调整算法 3.3 堆的删除 3.4 堆排序 1、优先…

c语言题目之打印单身狗

文章目录 一、题目二、思路三、代码实现 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 二、思路 第一步 首先这里先了解两个有关于位操作符异或的知识点 ,异或操作符的规则是相同为0,相异为1 。 通过上面我们可以得…

AIGC前沿 | LivePortrait

0. 资源链接 论文超链接: LivePortrait 项目: https://github.com/KwaiVGI/LivePortrait 1. 背景动机 现有AIGC存在的问题 随着智能手机和其他录制设备的普及,人们越来越频繁地捕捉静态肖像来记录珍贵而美好的时刻,但这些静态图像缺乏动态表现力和实…

docker默认存储地址 var/lib/docker 满了,换个存储地址操作流程

1. 查看docker 存储地址 docker info如下 var/lib/docker2、查看内存大小 按需执行 df -h 找超过100M的大文件 find / -type f -size 100M -exec ls -lh {} \; df -Th /var/lib/docker 查找这个文件的容量 df -h 查找所有挂载点 du -hs /home/syy_temp/*1、df -h 2、sud…

数据结构(单链表算法题)

1.删除链表中等于给定值 val 的所有节点。 OJ链接 typedef struct ListNode ListNode;struct ListNode {int val;struct ListNode* next; };struct ListNode* removeElements(struct ListNode* head, int val) {//创建新链表ListNode* newhead, *newtail;newhead newtail N…

视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案

LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特,能够同时接入并处理多路设备的视频流,支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样,涵盖了视频直播监控、…

如何在Mac下修改VSCode侧边栏字体大小

在日常使用VSCode(Visual Studio Code)进行开发时,我们有时需要对IDE(集成开发环境)的界面进行一些个性化的调整,以提升我们的开发体验。 比如,有些用户可能会觉得VSCode的侧边栏字体大小不符…

国产麒麟、UOS在线打开pdf加盖印章

PageOffice支持两种电子印章方案,可实现对Word、Excel、PDF文档加盖PageOffice自带印章或ZoomSeal电子印章(全方位保护、防篡改、防伪造)。Word和Excel的盖章功能请参考:Word和Excel加盖印章和签字功能 (目前只支持win…

FastAPI 学习之路(五十九)封装统一的json返回处理工具

在本篇文章之前的接口,我们每个接口异常返回的数据格式都不一样,处理起来也没有那么方便,因此我们可以封装一个统一的json。 from fastapi import status from fastapi.responses import JSONResponse, Response from typing import Unionde…

[C/C++入门][进制原理]27、计算机种的进制

各种信息进入计算机,都要转换成“0”和“1”的二进制形式。 计算机 采用二进制的原因是: 物理上容易实现,可靠性高。(电子元件的通电和不通电就可以表示1和0,所以非常方便)运算简单,通用性强。…

【Git远程操作】理解分布式管理 | 创建远程仓库

目录 1.理解分布式管理 多人协作开发 2.创建远程仓库 2.1仓库名&路径 2.2初始化仓库&设置模板 1.理解分布式管理 目前我们学习的所有内容都是在本地来完成的。(add /commit /版本撤销回退/分支管理) Git是一个分布式 的版本控制系统。 分支…

最新开源的解析效果非常好的PDF解析工具MinerU (pdf2md pdf2json)

毫不夸张的说 PDF解析工具MinerU是照进RAG黑暗中的一道光——这是我对它的评价。我测过太多了文档解析工具! 最近在做文档解析的工作。看了很多的开源的文档解析的工具,版面分析的工具,其中包括paddelpaddel这样30kstar的明星工具。但是效果都…

Android SurfaceView 组件介绍,挖洞原理详解

文章目录 组件介绍基本概念关键特性使用场景 SurfaceHolder介绍主要功能使用示例 SurfaceView 挖洞原理工作机制 使用SurfaceView展示图片示例创建一个自定义的 SurfaceView类在 Activity 中使用 ImageSurfaceView注意事项效果展示 组件介绍 在 Android 开发中,Sur…

【20】读感 - 架构整洁之道(二)

概述 继上一篇文章讲了前两章的读感,已经归纳总结的重点,这章会继续跟进的看一下,深挖架构整洁之道。 编程范式 编程范式从早期到至今,提过哪些编程范式,结构化编程,面向对象编程,函数式编程…