虚拟机使用docker安装MySql出现的问题,Navicat连不上MySql

news2024/11/18 3:28:23

文章目录

一、问题引入

二、问题分析 

三、问题解决 

​四、总结


一、问题引入

今天是学习谷粒商城的第一天,既然是第一天,肯定就是先对项目先有个基本的了解,比如是项目所用到的技术栈,项目整体的架构等,还对分布式的相关概念简单说了一下。

接下来来就是搭建环境了,与以往不同的是,先是从运维搭起,也就是先装虚拟机,然后在虚拟机上装相关软件,比如说Docker、Mysql、Redis。当然雷神他上课不是用到Vmware虚拟机,而是另外一个虚拟机平台,virtualBox,并且使用vagrant快速集成centos,然后使用windows的cmd进行操作。本来还想试一下的,可是因为要安装centos,下载的真的很慢,并且VMware+Xshell也挺好用的,我就在WMware上面另外又搭建了一台Linux系统。然后就是正式配环境了,使用Docker容器技术安装相关软件。

首先就是安装MySql,当我pull下来,然后run之后,并且ps了一下,发现MySql容器已经启动了,然后用Navicate连了一下,发现怎么也连不起来,报错如下:

二、问题分析 

说句实话,看到这个我的第一反应是,IP地址是不是写错了或者是虚拟机防火墙开着,不允许外界访问啥的,可是我看IP没错,防火墙也被我关了。是的,我比较菜,之后就想不到什么了,之后使用Docker的ps命令发现MySql已经restart了,所以是启动出了问题,我就开始怀疑是不是我那个run的那一长串是不是写错了,最开始,我在记事本上面手写了一遍,确实最开始的时候,我写的确实有问题,问题出在目录挂载那里,前面写错,没有以/开头,后面也写错了,先mysql,报错如下:

 看到最后我知道要使用绝对路径,改了之后确实也启动了,

随即我就使用navicat连,发现连不上,后面就一直restarting:

  后面我就傻不拉几的把容器删了重启,还以为自己的那个不对,还改成了和老师一样的写法,就是把我的那个开机自启(restart=always)去掉了,来来回回重复了好几遍,最后我把镜像都删了,重置,最后也是没能解决问题(确实这里是犯傻了,其实我最开始启动了,最开始UP了说明那一长串其实是没问题的,我还一直纠结这个),后面没办法了咯,只能在网上查了咯,搜索的关键字是:Navicat连不上虚拟机里面使用docker安装的MySql,看到的结果有下面这些:

1. MySQL服务是不是正常开启了

到Docker这里就是容器是否启动成功了呗,确实我的容器就没启动成功

2. MySQL未远程授权

确实这也是一个问题,当时根本没在乎这里,没这种意识

3. 虚拟机防火墙的问题,未开放端口啥的

我把防火墙关了,所以问题肯定不是在这

排错方法如下:


首先明确容器就启动失败,得先从容器这里入手:

后面我换了之前学Docker的时候成功的run命令:

结果这样:

我滴个妈呀,这到底咋回事呀,之前都好好的,现在就出一些问题呢,(ps:其实这里报错有显示my.cnf的事,我没太在意,最后问题确实也很这里有关系) 。

反正目前是启动都失败,还不要先管其它的,先把它正常启动再说,后面我找到了一篇博客,解决了我的问题:

他说既然你没启动,那就看容器的日志的报错信息(ps:确实这点我有问题,没有查看容器错误日志的这种意识)。

日志的报错信息如下:

解决办法是:我的宿主机的conf目录,下面得配置my.cnf文件,文件里面写东西,就是在conf目录下,创建一个my.cnf的文件,文件里面写下面这些:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8

也就是这篇博文:

(20条消息) docker的mysql容器exited(1)无法正常启动_敲着bug的小熊的博客-CSDN博客 

 重新启动容器,发现也一直是UP状态了,说明启动成功:

 启动是成功了,可是我的navacat依旧是连不上。

然后下面这篇博文就说,要改密码,反正他改了密码就行了:

(20条消息) docker安装mysql后Navicat链接不上的问题_小城南的博客-CSDN博客

后面我就使用exec命令进入到MySQL容器里面。(ps:这里我又傻了一下,进入到容器里面就这个use user了这个使用mysql命令了,其实还没有连接上MySql客户端呢,当然通过这个我也更加理解了一个Docker容器其实相当于就是一台虚拟机,在这里就是装有MySql的一台虚拟机,这里联想到挂载目录,其实也想得明白了,容器中的/var然后再/mysql,不就相当于一台Linux吗)。

好,接下来问题又来了,使用密码登录MySql客户端居然连不上了,这是我在以前从未出现过的问题,报错如下:

 我滴个妈,这又是咋回事呀,怎么我是设置了密码启动的,怎么还连接不上了,没办法咯,之前也没遇到过,继续百度咯,后面看到下面这篇博文:

说不需要使用密码,直接回车,然后改一下密码,然后再重新设置密码,最后重新启动MySql,最后再重新登录就行了。

下面是这篇博文地址:

(20条消息) 解决mysql:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO/YES)_刀光剑影aaa的博客-CSDN博客 最后我试了试,确实可以直接回车进行登录:

可能是博主多写了把,其实这里是没有password的,修改密码直接是:

update user set authentication_string = '123456' where user = 'root'

修改为然后flush一下:

flush privileges;

那到底怎样解决密码问题呢?后面我又看了另外的一篇博文:

 这是修改root密码的方法

下面是这篇博文地址:

(20条消息) MySQL修改root用户密码_mysql修改密码命令_折竹丶的博客-CSDN博客

这篇博文确实挺好的值得推荐,提供了修改root用户密码的方式,还提供了忘记密码和知道密码的两种方式修改密码的方法。

按照他的步骤我确实修改密码成功了,使用新密码登入客户端成功:

 好了,按照之前博文所说的,修改密码之后,应该navacat现在应该可以正常连接上了吧,结果却还是连接不上。

后来我又看到一篇博文说要改一下这个,如下图所示,这样改一下密码就行了:

 结果都是这个报错;

Operation ALTER USER failed for 'root'@'%'

然后我又继续查看博文,下面的博文解决了我的问题

这是博文地址:(20条消息) ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘_Mr.Java.的博客-CSDN博客

按照他之前所说的,我得先有'root'@'%'后面我使用下面这条语句将其修改成这个:

update user set host ='%' where user='root';

修改之后结果是这样:

 还是不行,所以我就只能按照他所说的还是不行的方法:

 先置密码为空,然后重新设置密码;

最终使用navicate连接成功!!!

后面我又测试了一下,将其将root用户的host修改为localhost,结果确实连不上,最后还是重新修改成%然后再使用上面两步重置密码解决。

三、问题解决 

 1. 首先解决MySql容器无法启动的问题:

在宿主机的conf目录下面配置这个:

​
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8

​

2. 客户端使用密码无法登录

使用下面方法重置root账号密码:

 

 3. 如果还有问题,试一下这个

 如果尝试这个的时候报了下面这个错:

Operation ALTER USER failed for 'root'@'%'

就先这样让'root'的host为'%':

update user set host ='%' where user='root';

重新尝试上面那个,如果还是有问题,直接下面这样:

 四、总结

1. 首先要有查看容器的日志的报错信息的意识,这一点我是没有意识的,后面是通过查看日志,才知道是my.cnf没有配置的问题,配置了MySql容器就可以正常启动了

2. 知道如果客户端使用密码登不进,尝试是否可以直接回车进去,进去之后修改密码

方法是

2.1 先切换到mysql数据库,将密码置为空

2.2 然后设置加密规则,重新设置密码,并进行授权

3. 要有navicat连不上MySql可能是root用户的host是localhost的缘故的这种意识,也就是是否支持远程连接,知道使用 update user set host ='%' where user='root';这条命令进行修改。

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

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

相关文章

操作系统闲谈09——内存管理算法

操作系统闲谈09——内存管理算法 Buddy伙伴系统 假设存在一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页…

华为OD机试真题B卷 JavaScript 实现【乱序整数序列两数之和绝对值最小】,附详细解题思路

一、题目描述 给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(|nums[x]nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。 每种…

Android 行业就业难! 我是否该负重前行~

不知从何时开始,互联网市场岗位开始以收缩趋势进行发展,使得不少互联网行业的从业者面临者工作难找的难题,对于我们开发人群来说很不友好。 以前可以靠着跳槽实现涨薪梦,而如今是能不动就不动,能稳住是最好。 为什么这…

Docker——安装MySQL

一、安装并拉取MySQL镜像 先把docker启动起来 systemctl restart docker systemctl status docker 安装MySQL docker search mysql拉取镜像, 如果拉取不成功或者显示超时,可以去配置加速镜像源。 二、查看本地镜像并启动MySQL 但是光有镜像没有把镜像…

Redis面试之数据类型及底层原理

废话不多说直接上类型 string(字符串) hash(哈希) list(列表) set(集合) zset(有序集合) stream(流) geospatial(地…

CRM软件有哪些?这9款值得推荐

业内有一句流传已久的话:你的左手不知道你的右手在做什么。同一个企业内部,不同部门之间往往存在信息不同步,数据不对称的情况,比如销售和营销部门关于某个市场活动所带来的效果产生分歧。CRM软件的存在就可以解决这类问题。 在正…

实验4 Cache性能分析【计算机系统结构】

实验4 Cache性能分析【计算机系统结构】 前言推荐实验四 Cache性能分析1 实验目的2 实验平台3 实验内容和步骤3.1 Cache容量对不命中率的影响3.2 相联度对不命中率的影响3.3 Cache块大小对不命中率的影响3.4 替换算法对不命中率的影响 4 实验总结与心得5 请思考 最后 前言 202…

8年测试工程师分享,我是怎么开展性能测试的(基础篇)

第一节 测试的一般步骤 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义(后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源)&…

足不出户怎么在家赚钱,暑假在家别闲着,给自己赚点生活费吧

在当今快节奏的现代生活中,人们面临着越来越大的竞争压力。为了过上舒适的生活、提前退休、创业或增加收入,许多人都希望能够在家中赚钱。那么,在家里如何可以找到赚钱的项目呢?本文将为您详细介绍一些方法。 一、在家工作有很多好…

《计算之魂》读书笔记——第2章,从递推到递归

我们人类的固有思维方式常常是出于直观的,由近及远、从少到多,这样的思维方式让我们很容易理解具体的事物,却也限制了我们的抽象思维,所以当我们理解远离我们生活经验的事物时,就容易出现障碍。我们人类这种自底向上、…

调用万维易源实现天气预测

作者介绍 房庚晨,男,西安工程大学电子信息学院,22级研究生 研究方向:机器视觉与人工智能 电子邮件:1292475736qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xff0…

easyui03(tree后台工作)

一.数据库脚本 create table TB_MODULE ( id NUMBER not null, pid NUMBER not null, text VARCHAR2(150) not null, iconcls VARCHAR2(100) not null, url VARCHAR2(100), sort NUMBER not null ) insert into TB_MODULE (id, pid, text, icon…

Android音视频开发实战01-环境搭建

一,FFmpeg介绍 FFmpeg 是一款流行的开源多媒体处理工具,它可以用于转换、编辑、录制和流式传输音视频文件。FFmpeg 具有广泛的应用场景,包括视频编解码、格式转换、裁剪、合并、滤镜等等。官网:https://ffmpeg.org/ FFmpeg 支持各种常见的音视频格式&a…

设置论文中的图、表的题注(小记)

参考b站:毕业论文图表如何自动编号/word图表自动编号/图表编号自动更新 其中,更新图表序号 视频使用ctrlp进入打印再退出,也可以使用altf9进行更新 设置论文中的图、表的题注 step1:设置章节1.1 章节设置字体样式,选择标题11.2 章…

中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮你的春夏秋冬

不要因为看到别人发光,就默认自己的暗淡。每个人都有自己的闪光时刻,或早或晚。只要努力奋进,你也会拥有。针对金融行业计划在职的人员来说,中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮了我们的春夏秋冬…

赋能全栈软件,开源软件协调,我对英特尔有了全新认知

文章目录 一、前言二、培养开源文化三、现场展区体验四、软硬协同分论坛,和社区开发者共建生态五、快来加入开源社区吧 一、前言 “开源赋能 普惠未来”,2023 年 6 月 11 日到 13 日,我有幸参加了 2023 开放原子全球开源峰会。 “赋能中国软…

数据结构算法刷题(28)回溯组合型和全排列

剪枝技巧: 思路:剪枝的特点是找特定长度的子集。首先确定大框架,当path的长度等于k的时候,就要更新答案并且return。然后在进行path的元素选择,这里采用倒叙,从i到d(dk-len(path))倒…

MySQL——视图(VIEW)详解

今天我们一起来学起视图(VIEW),那么视图是什么呢?视图有什么作用呢?视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图!带着问题一起来寻找答案吧~~~ 1. 常见的数据库…

【实验】语音识别

为学校数字信号处理实验总结和归纳; 语音识别 题目及相关要求在here. 数据预处理 大致步骤: 获取原始音频 检测 分帧 加窗 特征提取 端点检测 端点检测参数指标相对值初始短时能量高门限50初始短时能量低门限10初始短时过零率高门限10初始短时过零率低…

Web网页制作期末复习(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接

目录 HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 标题标签 段落、换行、水平线 图片 图片路径* 超链接 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾 HTML是一种标记语言,标…