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

文章目录

  • 一、下载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://xiahunao.cn/news/3248948.html

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

相关文章

新版本cesium编译1.103之后的版本

cesium1.1之后的版本文件结构域1.1之前的版本有了很大的差别,源码也全部移到了packages目录中。有很多依赖包没有写在根目录的package.json文件中。npm i 后直接编译会保持。 cesium源码git https://github.com/CesiumGS/cesium 1、添加缺少的包,缺少的…

《昇思25天学习打卡营第25天|onereal》

初学入门/初学教程/08-模型训练.ipynb 模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 构建数据集 首先从数…

SSD实现

一、模型 此模型主要由基础网络组成,其后是几个多尺度特征块。基本网络用于从输入图像中提取特征,因此它可以使用深度卷积神经网络。 单发多框检测选用了在分类层之前截断的VGG,现在也常用ResNet替代;可以设计基础网络&#xff0c…

synchronized的实现原理和锁升级 面试重点

1.synchronized的实现原理 synchronized是Java 中的一个很重要的关键字,主要用来加锁,synchronized所添加的锁有以下几个特点。synchronized的使用方法比较简单,主要可以用来修饰方法和代码块。根据其锁定的对象不同,可以用来定义…

生命周期的妙用——Vue3

Vue3的生命周期 从Vue2到Vue3👾不只onMounted又见keep-alive主要属性被你包裹应用场景 ) 从Vue2到Vue3👾 Vue 3 保留了大多数 Vue 2 的生命周期钩子,同时引入了组合 API 中的生命周期钩子。以下是 Vue 3 中的生命周期钩子: 不…

数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(下:数据操作与查询)

文章目录 DML数据操作语言1、新增记录2、删除记录3、修改记录 DQL数据查询语言1、查询记录2、条件筛选3、排序4、函数5、分组条件6、嵌套7、模糊查询8、limit分页查询 集合操作union关键字和运算符in关键字any关键字some关键字all关键字 联合查询1、广义笛卡尔积2、等值连接3、…

HTML+JS+CSS计算练习

可填 题目数量 数字范围 计算符号 题目做完后会弹窗提示正确率、用时 效果图 源代码在图片后面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

【深度学习】inpaint图像中的alpha混合图的边缘处理

比如原图是&#xff1a; 红圈内就是文字水印&#xff0c;经过inpaint后得到图和原图混合&#xff0c;如何处理边界呢&#xff0c;这个代码可以干这事&#xff1a; 越是中心就直接用inpaint图&#xff0c;否则就用原图&#xff0c;这样进行alpha混合。 import numpy as np i…

js reduce 的别样用法

let mergedItems list.reduce((accumulator, currentItem) > {let existingItem accumulator.find((item) > item.manObject_name currentItem.manObject_name);if (existingItem) {existingItem.laborCostHand currentItem.laborCostHand; //劳务费existingItem.wor…

windows下使用make编译C/C++程序 gcc编译 MinGW编译器

文章目录 1、概要2、编译环境搭建3、创建工程目录结构4、 编写程序4.1 编写头文件4.2 编写源文件 5、编写makefile及相关文件5.1 编写清理编译生成文件的批处理文件&#xff0c;供makefile调用5.2 编写makefile文件 6、编译工程6.1 打开命令行6.2 使用make命令编译程序6.3 编译…

effective c++学习笔记1

Effective C 来源于阿西拜编程 《Effective C》2023&#xff08;上部完整版&#xff09; C进阶看这个_哔哩哔哩_bilibili 2024年7月15日 第一章 第1条 第7章&#xff0c;学完比较能够看懂&#xff0c;一般公司不推荐写模板&#xff08;调试麻烦&#xff0c;维护成本高&…

Anaconda创建新的环境一直报错

Anaconda创建新的环境一直报错 报错信息如下&#xff1a; CondaHTTPError: HTTP 404 NOT FOUND for url <https://pypi.tuna.tsinghua.edu.cn/simple/noarch/repodata.json> Elapsed: 00:01.358961The remote server could not find the noarch directory for the requ…

你的字典还是想改就改?试试Python MappingProxyType,让你的数据只读到底!

目录 1、初识MappingProxyType &#x1f50d; 1.1 MappingProxyType简介 1.2 不可变映射的优势 2、创建你的第一个MappingProxyType实例 &#x1f389; 2.1 使用dict创建MappingProxyType 2.2 获取MappingProxyType属性 3、探索MappingProxyType的方法和属性 &#x1f6…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路&#xff1a; 1、排版 (分析布局) 2、内容&#xff08;基础组件&#xff09; 3、美化&#xff08;属性方法&#xff09; 设计资源-svg图标 界面中展示图标 ->可以使用svg图标&#xff08;任意放大缩小不失真&#xff0c;可以改颜色&#xff09; 使用方式&a…

Linux内核分析:VFS和文件系统

文章目录 写在前面下载链接思维导图一些问题使用slab进行分配的优势和意义如何理解这段话&#xff1a;Linux 将新的文件系统通过一个称为“挂装”或“挂上”的操作将其挂装到某个目录上&#xff0c;从而让不同的文件系统结合成为一个整体。Linux 操作系统的一个重要特点是它支持…

apisix安装

安装依赖 如果当前系统没有安装 OpenResty&#xff0c;请使用以下命令来安装 OpenResty 和 APISIX 仓库&#xff1a; sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm如果已安装 OpenResty 的官方 RPM 仓库&#xff0c…

Clonezilla 备份还原过程推送日志到 syslog

Clonezilla 备份、还原过程中&#xff0c;系统的运行日志只能显示到客户端显示器上&#xff0c;如果出现错误&#xff0c;无法在服务端查询到对应的日志&#xff0c;一是故障判断不太方便&#xff1b;另一方面&#xff0c;实现日志推送&#xff0c;也可以将 Clonezilla 运行进度…

配置和保护SSH

使用SSH访问远程命令行 描述Secure Shell SSH&#xff08;Secure Shell&#xff09; 是一种网络协议&#xff0c;用于在不安全的网络上安全地进行系统管理和数据传输。它最初由 Tatu Ylnen 于1995年设计&#xff0c;并成为保护网络服务免受攻击的标准。SSH提供了多种功能&…

正则表达式(Ⅳ)——零宽断言

介绍 以……为开头/以……为结尾 正向表示匹配白名单 先行表示需要写在想要筛选的表达式之后 负向表示匹配黑名单 后行表示需要写在想要筛选的表达式之前 正向先行断言 这段比较复杂&#xff0c;我们拆开来看 \d(?PM) \d表示匹配数字&#xff0c;而且是匹配单个数字 表示…

【C++】C++ 职工信息管理系统(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…