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

这篇具有很好参考价值的文章主要介绍了虚拟机使用docker安装MySql出现的问题,Navicat连不上MySql。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

一、问题引入

二、问题分析 

三、问题解决 

​四、总结


一、问题引入

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

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

二、问题分析 

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

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

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

2. MySQL未远程授权

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

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

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

排错方法如下:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维


navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

结果这样:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

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

日志的报错信息如下:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

解决办法是:我的宿主机的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状态了,说明启动成功:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

下面是这篇博文地址:

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

修改为然后flush一下:

flush privileges;

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维 这是修改root密码的方法

下面是这篇博文地址:

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

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

 结果都是这个报错;

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

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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

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

修改之后结果是这样:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

最终使用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账号密码:

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

 

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

navicat连不上虚拟机中的mysql,谷粒商城,BUG集锦,Docker,docker,java,容器,mysql,运维

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

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';这条命令进行修改。文章来源地址https://www.toymoban.com/news/detail-728010.html

到了这里,关于虚拟机使用docker安装MySql出现的问题,Navicat连不上MySql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jar包部署到linux虚拟机的docker中之后连不上mysql

    跟着黑马学习docker的时候,将java项目部署到了docker中,运行访问报错,反馈连不上mysql。 概述: 在虚拟中中,我进入项目容器的内部,尝试ping mysql,发现ping不通, 然后查看其ip,发现不在同一个网段中,故基本可以锁定问题原因就是没有将项目跟mysql容器部署到同一个网络

    2024年01月21日
    浏览(26)
  • Docker安装mysql&&使用Navicat远程连接mysql容器&&mysql容器的持久化测试

    文章主人公:帅哥BUG😎  文章路人: 路人 🤨  路人 😛 目录 一.安装mysql并配置文件 1.下载相关镜像 2.在宿主机中创建相关目录,用于挂载容器的相关数据 3.conf目录 4.data目录(创建mysql5.7容器) 二.使用Navicat远程连接mysql容器 1.ip addr 获取ip 2.点击连接选择MySql 3.输入ip,密码

    2024年02月03日
    浏览(39)
  • Navicat连接不上虚拟机中linux的dockers创建的mysql

    说明: 这个问题可能只是我的个人问题,记录一下吧。当发现这个问题的时候,去网上搜素了一下,搜到的文章基本上都是通过在mysql中设置允许远程访问解决的,然后我也跟着尝试了一下,问题并没有解决。后面就乱七八糟的折腾了一天,最终通过在云服务器的安全组中开

    2024年01月17日
    浏览(50)
  • Navicat连接linux虚拟机上的MySQL可能遇到的问题以及如何排查

    很大一部分原因是因为网上找不到比内容较全的文章作为一个小白解决所面临的问题 关于Navicat连接Linux上的MySQL为什么出现以下报错 这个报错很有可能是你的linux的防火墙不允许你连接到MySQL服务器导致的具体怎么排查,后面会详细说明。 这个报错有可能是以下原因 1、MySQ

    2024年02月02日
    浏览(38)
  • 解决Navicat for MySQL激活时候出现“rsa public key not find”的问题

    场景:点击激活软件Navicat_Keygen_Patch,单击patch 按钮时报错rsa public key not find!!! 试了很多办法,包括断网重新安装,还是无济于事,最后看了一个帖子终于把问题解决了。 原因是:在点击patch按钮时没有生成破解版的RegPrivateKey.pem,及路径C:UsersDefaultAppDataLocalTemp下不存

    2024年04月16日
    浏览(19)
  • mysql Dbeaver连不上(连接数据库超时connect time out),但是navicat能连上

    mysql Dbeaver连不上,但是navicat能连上 现象:连接超时 方案1: 在dbeaver安装目录找到dbeaver.ini添加一行 若方案1改完连接报这个错时 修改连接方式为URL 并带上useUnicode=true参数

    2024年02月04日
    浏览(33)
  • 【MySql】Navicat 连接数据库出现1251 - Client does not support authentication protocol ...... 问题的解决方法

    Navicat 连接 mysql,连接时出现问题:1251 client does not support authentication protocol requested by server… 再次安装MySQL后,使用 Navicat 或者 MySQL yog都会出现上面这个异常。 其实这是一个简单的权限与安全问题,只需要在 MySQL Shell 中输入两行命令就可以解决问题啦。 1、以管理员身份运行

    2024年02月09日
    浏览(48)
  • Navicat使用HTTP通道服务器进行连接mysql数据库(超简单三分钟完成),centos安装nginx和php,docker安装nginx+php合并版

    因为数据库服务器在外网是不能直接连接访问的,但是可以访问网站,网站后台就能访问数据库,所以在此之前,访问数据库的数据是一件非常麻烦的事情,在平时和运维的交流中发现,他们会使用ssh通道进行连接访问数据库,之前并没在意这个东西,直到运维人员一直连不

    2024年02月10日
    浏览(55)
  • 使用Docker安装和部署Elasticsearch出现问题以及解决方案

    docker安装elasticsearch(最详细版)| Bright1668-CSDN es在Windows环境启动报错 | 你道本部院是个书生-CSDN 查看max_map_count的值 默认是 65530 。 重新设置max_map_count的值。 –name es:设置容器的名称为\\\"es\\\"。 -p 9200:9200 -p 9300:9300:这部分将主机的端口与容器的端口进行映射。 -e “discovery.ty

    2024年02月09日
    浏览(41)
  • MySQL:安装 MySQL、Navicat、使用 Navicat 连接 MySQL

    数据库 :DB (Database) 数据仓库,可以存储大量数据,是一个 软件 ,安装在操作系统(Windows, Linux, Mac 等)之上。 作用 :存储数据,管理数据。 数据库的 执行语句 :SQL。 数据库分类 :关系型数据库、非关系型数据库 关系型数据库 (SQL):通过表和表之间,行和列之间的关

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包