MySQL、Navicat安装bug处理(未成功)

问题场景:

MySQL提前下载好了,从下载到安装,没有出现任何问题。
隔了几天再下载Navicat时无法连接MySQL,于是出现了以下报错。请添加图片描述这个错误的意思是你的MySQL密码不对(或许是被篡改了),也有可能是由于数据库的权限变更。
故做以下尝试:

第一次尝试:

第一步:找到MySQL的安装目录下的my.ini,在[mysqld]条目下加入skip-grant-tables,保存退出后重启MySQL。
在这里插入图片描述
第二步:
window+R cmd(以管理员的权限运行)
输入
net stop mysql
net start mysql
mysql -u root -p
在此 cmd会要求你输入密码,直接回车。因为在第一步时我们在[mysqld]条目下加入了skip-grant-tables,该命令作用是跳过授权表,也就是不需要密码登录授权就能进入mysql。
正常流程应该是:在回车后输入
set password for root@localhost = password(‘修改后的密码’);
修改完密码,回到Navicat里重新输入密码就连接好了
你以为这就完啦?没有,报错了……
新的报错信息:
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
报错1045 :拒绝用户访问root@localhost(使用密码了吗:没有)

我没有犹豫,火速进行了第二次尝试。

第二次尝试:

第一步:
window+R cmd(以管理员的权限运行)
e:
cd E:\mysq8.0.32\bin(此处为mysql的安装路劲,进入bin文件)
sc delete MySQL
net stop mysql(或者手动关掉mysql的服务——win10系统在右下角那个放大镜那儿搜索mysql,然后手动关闭mysql服务)
在这里插入图片描述第二步:
在mysql中找到my.ini配置文件
把里面的basedir 和 datadir检查一下,看是不是正确的路径。注意,basedir下一定是你现在的mysql安装路径,datadir下是mysql里的Data文件路径。
第三步:
重新生成Data文件,在cmd中输入:
mysqld --initialize-insecure --user=mysql
第四步:
重新安装mysql服务,同时绑定my.ini配置文件
mysqld --install “MySQL” --defaults-file=“G:\MySQL\mysql-8.0.22-winx64\my.ini”
注意:mysql是服务名称,可以修改,“…\my.ini” 是新建的配置文件的位置。
第五步:
net start MySQL
如果启动服务成功,直接进入Navicat连接MySQL,mysql会提示你密码已过期,请修改密码。
正常应该已经解决问题了的,可是
我启动服务失败了……
于是出现了第二个问题:解决mysql服务名无效
然后我突然想到一件事,我当时下载mysql的时候,我的mysql不是叫mysql80吗?
于是我将上述流程重新走了一遍,果然是mysql80的锅。但是并没有解决问题(忘了为什么,总之要进行第三次尝试)
在进行第一二次尝试时,花了一晚上的时间,主要是由于一直进行这两种尝试,希望能走通,解决当下问题。可惜没有。第二天早上,我进行了第三次尝试。

第三次尝试:

window+R cmd(以管理员的权限运行)
e:
cd E:\mysq8.0.32\bin(此处为mysql的安装路劲,进入bin文件)
mysqld --initialize --console(初始化mysql)
然后进入mysql的安装目录将data文件夹清空
然后win+r输入services.msc,回车找到mysql,关闭服务
运行成功后在点开data,找到后缀是err的文件
往下翻你会看见**root@loclhost:**的字眼,后面就是mysql初始化的随机密码,记住它。
接着继续在cmd里输入
net start mysql
mysql -uroot -p
回车之后又来到了输密码环节
不论我如何输入初始密码,还是在my.ini里[mysqld]条目下加入skip-grant-tables再回车,都会报错以下这个信息:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
(因为有别的博主在这里尝试了很多次后成功了,所以我也想试试,mysql花了我一早上教我做人。)
至此,我终于明白根本就不是密码的问题。
在这里插入图片描述
正常步骤是在输入密码后修改密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘想要修改的密码’;
我整理了一下心情,吃了个饭追了个番继续进行第四次尝试。

第四次尝试:

window+R cmd(以管理员的权限运行)
mysqld --remove mysql(移除mysql)
然后进入mysql安装目录清空data文件
e:
cd E:\mysq8.0.32\bin(此处为mysql的安装路劲,进入bin文件)
mysqld -install(注册服务)
mysqld --initialize(初始化mysql)
返回mysql安装目录,在data文件中找到以.err结尾的文件打开
找到在root@loclhost:之后的随机密码
mysql -u root -p
出现Enter password:输入随机密码即可
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘想要修改的密码’;(修改密码)
然而还是那个问题,在输入密码后依旧报错ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
至此,不仅没解决问题,反而还扯出了别的问题:
目前为止有两个报错信息。
两个报错信息
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)

第五次尝试:

我重新安装了MySQL。
第一步:找到MySQL安装目录,将其删除清空(因为我是直接下载的zip,所以直接将文件夹清空就OK了,但是如果下载的是.exe的话,需要到控制面板里去卸载)
第二步:进入官网(https://dev.mysql.com/downloads/mysql/),我是win系统,故选择window。我还是下载的zip。
解压后bin目录下新增my.ini文件(basedir为实际安装目录,datadir为存放mysql data的目录,需要自己新建)

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

window+R cmd(以管理员的权限运行)
e:
cd E:\mysq8.0.32\bin(此处为mysql的安装路劲,进入bin文件)
mysqld --initialize --console(初始化mysql,随机密码记好)
mysqld --install mysql(安装mysql服务并启动)
mysql -uroot -p
继续报错ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
当前命令行输入:mysqld --console(不关闭当前窗口)
新建cmd窗口,管理员权限,进入mysq bin目录下,输入命令行:mysql -uroot -p
重置mysql密码(123456替换想修改的密码):ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
退出后重新登录
退出:exit;
登录mysql:mysql -uroot -p123456
然鹅ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
我没再管,转身去重新配置环境变量
新增系统变量

变量名:MYSQL_HOME
变量值:mysql的安装目录(解压后目录)

新增path配置

编辑path
新增:%MYSQL_HOME%\bin

参考图例
在这里插入图片描述在这里插入图片描述然后我将前面的步骤又重复了一遍
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
在这里插入图片描述现在我正在进行第六次尝试,其实我很多时候都自以为我是控制情绪的一把好手,然而我还是高看了自己……我把mysql和Navicat全卸载了,打算直接从头开始,然先帝创业未半而中道崩殂……我等了半天mysql下载失败……可能是这两天的烦躁让我没崩住,轻轻锤了下电脑,舍友都被我吓了一跳。嗯……我花了两分钟冷静下来,继续寻求解决方法。
我发现自己不能像无头苍蝇一样疯狂乱撞,还是得继续找到其中的问题到底出自哪里。

于是我写下了这篇博客,于是我发现了一个之前从未思考过的问题。为什么我在[mysqld]条目下加入skip-grant-tables无效?既然不存在密码出错的问题,那到底是哪里出现了问题?

在这里插入图片描述

第六次尝试

在官网重新安装以及配置好环境然后如下图
在这里插入图片描述我打算用skip-grant-tables重新尝试一下
在这里插入图片描述还是报错ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
既然在my.ini里添加无用,那我便直接在cmd里添加
在这里插入图片描述如上图所示,继续报错ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
我另外新打开了一个cmd
在这里插入图片描述无用,仍旧报错。
于是我询问了c知道,它的回答如下:

如果在MySQL数据库中使用了"skip-grant-tables"选项,但是没有生效,可能有以下几个原因:
1、MySQL版本不支持"skip-grant-tables"选项。请确保您的MySQL版本支持该选项。
2、选项未正确启用。请检查MySQL配置文件中是否正确启用了该选项,并确保在MySQL服务启动之前修改了该文件。
3、MySQL服务未正确重启。在修改MySQL配置文件后,需要重启MySQL服务才能使更改生效。请确保已正确重启MySQL服务。
4、没有使用正确的命令启动MySQL服务。请确保使用了正确的命令启动MySQL服务,并且在命令中正确使用了"skip-grant-tables"选项。
如果您确定已正确执行上述步骤,但"skip-grant-tables"选项仍未生效,请尝试重新安装MySQL,并确保在安装过程中正确设置了该选项。非常感谢您的提问!我了解您的问题是关于MySQL数据库的 “skip-grant-tables” 参数是否可行的问题。
“skip-grant-tables” 是MySQL的一个启动参数,用于在不需要输入密码的情况下连接到MySQL服务器,以允许修改密码和其他敏感操作。但是,它的使用是不安全的,因为它绕过了MySQL的访问控制和权限系统,使任何人都可以轻易地访问和修改数据库。
因此,不建议在生产环境中使用 “skip-grant-tables” 参数。如果您需要修改MySQL密码或其他敏感操作,请考虑使用安全的方法,例如通过MySQL命令行界面或使用管理工具来执行这些操作。这可以保证您的数据的安全性和完整性,避免潜在的风险和损失。
希望我的回答能够帮助您!如果您还有任何问题或疑问,请随时回复我。

一条一条来看
1、MySQL版本不支持"skip-grant-tables"选项。请确保您的MySQL版本支持该选项。

在这里插入图片描述故1排除

2、选项未正确启用。请检查MySQL配置文件中是否正确启用了该选项,并确保在MySQL服务启动之前修改了该文件。

针对可能性2,我进行了如下步骤
第一步:停止mysql服务

第二步:在my.ini配置文件中重新加入skip-grant-tables

第三步:启动mysql服务

第四步:mysql -uroot -p 回车

结果如下图

在这里插入图片描述

3、MySQL服务未正确重启。在修改MySQL配置文件后,需要重启MySQL服务才能使更改生效。请确保已正确重启MySQL服务。

由于可能性3和可能性强调的都是正确重启mysql服务,我在可能性2上做了如下调整:
手动启动mysql服务器
结果如下

在这里插入图片描述

在这里插入图片描述

4、没有使用正确的命令启动MySQL服务。请确保使用了正确的命令启动MySQL服务,并且在命令中正确使用了"skip-grant-tables"选项。

针对可能性4,在可能性1、2、3的基础上我做了如下调整
手动启动服务器的页面的不关闭,在cmd中输入正确语句net start mysql ,确认启动无误后,再输入mysqld --skip-grant-tables
结果如下
在这里插入图片描述
担心mysqld --skip-grant-tables是错误语句,我特地问了c知道在cmd中skip-grant-tables选项的正确使用方法。
c知道的回答:

1、 在使用前备份所有数据。
2、停止 MySQL 服务。
3、在 MySQL 配置文件 my.cnf 中的 [mysqld] 部分添加一行 skip-grant-tables。
4、启动 MySQL 服务。
5、登录 MySQL,使用以下命令修改管理员密码:
UPDATE mysql.user SET authentication_string=PASSWORD(‘new_password’) WHERE User=‘root’;
6、 移除 my.cnf 文件中添加的 skip-grant-tables 行。
7、重启 MySQL 服务。

步骤一模一样,但有一处不同,我的配置文件名叫做my.ini,而c知道的是my.cnf。
于是我将my.ini重命名成my.cnf,然后重复以上步骤。
在这里插入图片描述

仍旧报错

我将希望放在c知道的这句话上

如果您确定已正确执行上述步骤,但"skip-grant-tables"选项仍未生效,请尝试重新安装MySQL,并确保在安装过程中正确设置了该选项。非常感谢您的提问!我了解您的问题是关于MySQL数据库的 “skip-grant-tables” 参数是否可行的问题。

在这里插入图片描述至此,关于我错误使用"skip-grant-tables" 选项的可能性全部磨灭。

讲个题外话
我先在cmd中输入mysql
在这里插入图片描述然后去问c知道
在这里插入图片描述多少有点恐怖……

第七次尝试(成功,但并未解决问题)

mysql安装成功

时隔一个月,我将mysql和Navicat全部卸载干净,然后跟着万里长江万里雪这位老哥安装mysql,目前为止已经将mysql安装成功了。以下是原文链接:
https://blog.csdn.net/fwdwqdwq/article/details/126113535
安装成功界面:
在这里插入图片描述
在这里插入图片描述

Navicat安装遇到问题,文件没有被指定在Windows上运行(未解决)

在这里插入图片描述为解决这个问题,我win+R,输入以下代码

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

之后出现了这样的界面
在这里插入图片描述

等停下后我重启了电脑,然后又重新下载,无用。怎么说呢,倘若前面是座山,我绕开它得了,我没有再管这个什么不能被运行,直接点击确定后继续下载。
在这里插入图片描述

navicat安装成功

下载完后打开Navicat,根据安装导航一直点击next,next,直至finish。
打开之后新建连接,输入密码,成功。
在这里插入图片描述结束了,但是问题并没得到解决。我也不知道是继续纠结这些bug呢还是就这样算了。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值