一起学docker系列之九docker运行mysql 碰到的各种坑及解决方法

目录

  • 前言
  • 1 Docker 运行mysql命令
  • 2 坑一:无法读取/etc/mysql/conf.d目录的问题
  • 3 坑二:/tmp/ibnr0mis 文件无法创建/写入的问题
  • 4 坑三:Navicat 连接错误(1045-access denied)
  • 5 坑四:MySQL 登录失败问题
  • 结语

前言

在使用 Docker 容器化 MySQL 过程中,遇到一系列常见问题是正常现象。通过以下步骤,可以解决这些问题,并成功搭建运行 MySQL 容器。

1 Docker 运行mysql命令

首先,运行 MySQL 容器的命令如下,对其中的参数进行详细说明:

mysql容器启动

docker run \
--name mysql5.7 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d \
-v ~/volumes/mysql5.7/data:/var/lib/mysql \
-v ~/volumes/mysql5.7/conf:/etc/mysql \
-v ~/volumes/mysql5.7/log:/var/log \
--restart=always mysql:5.7
  • docker run: 启动一个新容器
  • --name mysql5.7: 指定容器的名称为 mysql5.7
  • -p 3306:3306: 将容器的 3306 端口映射到宿主机的 3306 端口,允许通过该端口访问 MySQL 服务
  • -e MYSQL_ROOT_PASSWORD=123456: 设置 MySQL root 用户的密码为 123456
  • -d: 在后台运行容器
  • -v ~/volumes/mysql5.7/data:/var/lib/mysql: 将宿主机的 ~/volumes/mysql5.7/data 目录挂载到容器内的 MySQL 数据目录
  • -v ~/volumes/mysql5.7/conf:/etc/mysql: 将宿主机的 ~/volumes/mysql5.7/conf 目录挂载到容器内的 MySQL 配置文件目录
  • -v ~/volumes/mysql5.7/log:/var/log: 将宿主机的 ~/volumes/mysql5.7/log 目录挂载到容器内的 MySQL 日志目录
  • --restart=always: 设置容器遇到错误时自动重启
  • mysql:5.7: 使用 MySQL 5.7 版本的 Docker 镜像

2 坑一:无法读取/etc/mysql/conf.d目录的问题

在这里插入图片描述

当运行 MySQL 容器时,报错指示无法读取目录 /etc/mysql/conf.d。can‘t read dir of /etc/mysql/conf.d 。这通常是因为 MySQL 容器默认仅寻找特定目录,但我们想要自定义配置目录。解决方法是通过挂载卷将我们的配置文件目录映射到容器内 MySQL 配置目录的路径上。

解决方法:

停止并移除容器

docker stop mysql5.7
docker rm mysql5.7

重新运行容器,并指定配置目录

docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d \
-v /home/dockerv/mysql/data:/var/lib/mysql \
-v /home/dockerv/mysql/conf:/etc/mysql/conf.d \
-v /home/dockerv/mysql/log:/var/log \
--restart=always mysql:5.7

3 坑二:/tmp/ibnr0mis 文件无法创建/写入的问题

can’t create/write to file ‘/tmp/ibnr0mis’,查看/tmp的权限,果然是没有些权限,此处不是宿主机的/tmp目录,而是docker容器的/tmp目录,将整个宿主机的整个docker目录设置为可读可写。MySQL 在容器内尝试在 /tmp 目录下创建文件时遇到权限问题。这可能是因为容器内部的 /tmp 目录权限受限。解决此问题需要更改宿主机 Docker 目录的权限。

在这里插入图片描述

解决方法:

停止并移除容器

docker stop mysql5.7
docker rm mysql5.7

更改宿主机 Docker 目录权限

`chmod 777 -R /lib/docker`  # 根据实际情况修改路径

4 坑三:Navicat 连接错误(1045-access denied)

mysql启动起来了,但是使用navicat连接报错,1045-access denied for user root@192…(using password:yes),尝试使用 Navicat 连接 MySQL 时遇到访问被拒绝的问题。这可能是由于 MySQL 服务器拒绝了 root 用户的连接请求,需要在 MySQL 中修改配置以允许远程访问。

在这里插入图片描述

解决方法:

进入 Docker 容器

docker exec -it mysql5.7 /bin/bash

编辑 MySQL 配置文件

cd /etc/mysql/conf.d
vim my.cnf

在 my.cnf 文件中添加或修改以下内容:

[mysqld]
bind-address=0.0.0.0

5 坑四:MySQL 登录失败问题

登录 MySQL 时出现访问被拒绝的错误,这可能是由于权限设置不当导致 MySQL 忽略配置文件。

在这里插入图片描述

解决方法:

修改配置文件权限

chmod 644 /etc/my.cnf

进入 MySQL

docker exec -it mysql5.7 mysql -uroot -p

重置 root 用户密码并刷新权限

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

在这里插入图片描述

结语

以上步骤详细解释了在使用 Docker 容器化 MySQL 过程中可能遇到的问题,并提供了解决方法。正确遵循这些步骤可以成功搭建 MySQL 容器,并解决连接和权限相关的常见问题。

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

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

相关文章

ros2文件package.xml与cmakelists.txt比较

每次在ros2里面添加文件以后,都要修改packages.xml,与cmakelists.txt文件。

Vue服务端渲染——同构渲染

Vue.js 可以用于构建客户端应用程序,组件的代码在浏览器中运行,并输出 DOM 元素。同时,Vue.js 还可以在 Node.js 环境中运行,它可以将同样的组件渲染为字符串并发送给浏览器。这实际上描述了 Vue.js 的两种渲染方式,即…

爬虫项目实战:利用基于selenium框架的爬虫模板爬取豆瓣电影Top250

👋 Hi, I’m 货又星👀 I’m interested in …🌱 I’m currently learning …💞 I’m looking to collaborate on …📫 How to reach me … README 目录(持续更新中) 各种错误处理、爬虫实战及模…

Lua实现面向对象三大特性

面向对象是基于table实现的 封装 :(冒号) 自动将调用该函数的对象作为第一个参数传入 --Object就是第一参数 function Object:new() self:代表默认传入的第一个参数 _index:当自己的变量中找不到时,会默认找原表中_index指向的内容 Obj…

AD9361快速开发指南

AD9361是ADI(Analog Devices)公司推出的一款全集成的RF收发器芯片,广泛应用于无线通信系统,包括基于FPGA和ARM处理器的数码电视,卫星通信,雷达通信,军事通信和工业控制等领域。AD9361提供了广泛…

Qt问题 QString 和 void* 相互转化

QString转为void*格式 //将路径QString转为void*格式QByteArray byteArray qstrFilePath.toUtf8();char* charArray byteArray.data();void* voidPath static_cast<void*>(charArray);void*转为QString格式 char* charPath static_cast<char*>(voidPath); QS…

从 RBAC 到 NGAC ,企业如何实现自动化权限管理?

随着各领域加快向数字化、移动化、互联网化的发展&#xff0c;企业信息环境变得庞大复杂&#xff0c;身份和权限管理面临巨大的挑战。为了满足身份管理法规要求并管理风险&#xff0c;企业必须清点、分析和管理用户的访问权限。如今&#xff0c;越来越多的员工采用移动设备进行…

杰发科技AC7801——Flash模拟EEP内存分布情况

简介 本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解 核心代码如下 #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */ #define TE…

音视频5、libavformat-2

4、封装 Muxers (封装器)以 AVPacket 的形式获取编码数据并将其写入到指定容器格式的文件或输出字节流中。 muxing过程中最重要的API函数有: avformat_write_header() 用于写入文件header; av_write_frame() / av_interleaved_write_frame() 用于写…

后端跟前端讨论:如何对比分析AB方案?

目录 一、结论 二、场景再现 1、方案说明 2、不同思维的碰撞&#xff08;重点&#xff09; &#xff08;1&#xff09;场景描述 &#xff08;2&#xff09;后端思维 &#xff08;3&#xff09;前端思维 3、我作为后端说一句 一、结论 不是在设置相同条件下进行对比。 …

Excel动态选择某一行/列的最后一个数据

选择列的最后一个数据&#xff1a; 以A列为例&#xff0c;使用&#xff1a; LOOKUP(1,0/(A:A<>""),A:A)选择行的最后一个数据&#xff1a; 以第3行为例&#xff0c;使用&#xff1a; LOOKUP(1,0/(3:3<>""),3:3)示例程序 列最后一个数据&a…

C++右值引用

文章目录 1.左值概念和右值概念1.1.赋值目的1.2.左值右值1.2.1.左值1.2.2.右值 2.左值引用和右值引用2.1.左值引用2.2.右值引用2.2.1.细化参数2.2.2.资源转移2.2.2.1.返回转移2.2.2.2.参数转移 3.万能引用和完美转发3.1.万能引用3.2.完美转发 4.关于const的补充5.类的新成员5.1…

【精选】框架初探篇之——MyBatis的CRUD及配置文件

MyBatis增删改查 MyBatis新增 新增用户 持久层接口添加方法 void add(User user);映射文件添加标签 <insert id"add" parameterType"com.mybatis.pojo.User">insert into user(username,sex,address) values(# {username},# {sex},# {address}) <…

华硕灵耀XPro(UX7602ZM)原装Win11系统恢复安装教程方法

华硕灵耀XPro(UX7602ZM)原装Win11系统恢复安装教程方法&#xff1a; 第一步&#xff1a;需要自备华硕6个底包工厂安装包&#xff08;EDN.KIT.OFS.SWP.HDI.TLK&#xff09;或者自己备份的iso/esd/wim等镜像恢复 支持系列&#xff1a; 灵耀系列原装系统 无畏系列原装系统 枪…

golang学习笔记——并发计算斐波纳契数

文章目录 按顺序计算斐波纳契数并发计算斐波纳契数使用两个无缓冲 channel 的程序的第二个版本 按顺序计算斐波纳契数 golang学习笔记——将 channel 用作通信机制 golang学习笔记——并发计算斐波纳契数 package mainimport ("fmt""math/rand""tim…

不单一的错误!如何修复Windows 10上“未安装音频输出设备”的错误

许多Windows 10用户,尤其是那些使用HP或Dell笔记本电脑和PC的用户,都会遇到一个错误,上面写着“未安装音频输出设备”。这意味着你无法收听计算机上的任何声音,这让你很难放松,也很难完成工作。 错误通常会在系统托盘中的音频控制旁边显示一个红十字符号。 在这篇文章中…

postgresql经常出现连接一会后服务器拒绝连接

本地连接远程Linux上PG数据库经常自动断开连接 原因&#xff1a;Linux设置的tcp的keepalive超时时间太长&#xff0c;如果网络状况不佳&#xff0c;可能会导致连接断掉。 [rootlocalhost ~]# sysctl -a | grep net.ipv4.tcp_keepalive sysctl: reading key "net.ipv6.con…

小程序中的大道理之三--对称性和耦合问题

再继续扒 继续 前一篇 的话题, 在那里, 提到了抽象, 耦合及 MVC, 现在继续探讨这些, 不过在此之前先说下第一篇里提到的对称性. 注: 以下讨论建立在前面的基础之上, 为控制篇幅起见, 这里将不再重复前面说到的部分, 如果您还没看过前两篇章, 阅读起来可能会有些困难. 这是第一…

壳牌——利用人工智能应对新能源转型

荷兰皇家壳牌(Shell)最初是一家卖贝壳的商店&#xff0c;截至 2018 年&#xff0c;它是全球收入排名第五的公司。它的业务范围涵盖从勘探和钻探到提炼和零售的整个燃料供应链。壳牌在石油、天然气、生物燃料、风能和太阳能等端到端燃料生产领域处于世界领先地位。 当前&#x…

【21年扬大真题】编写程序,去除掉字符串中所有的星号。

【21年扬大真题】 编写程序&#xff0c;去除掉字符串中所有的星号。 int main() {int i 0;int j 0;char arr[30] {0};char brr[30] {0};printf("请输入一个字符串:");gets(arr);for (i 0;i < 30;i){if (arr[i] ! *) {brr[j] arr[i];j;}}int tmp j;for (i …