Navicat报错:1045-Access denied for user root@localhost(using password:YES)怎么解决

Navicat报错:1045-Access denied for user root@localhost(using password:YES)怎么解决

前言

  • 数据库好久没用过了,某一天打开Navicat,结果连接时报错:1045-Access denied for user root@localhost(using password:YES),我一脸懵逼,也没动过什么啊。没办法,只有盘他。
  • 结果百度发现出现这种问题的还不少,但我搞了几天,看了很多解决办法也没解决我的问题,甚至问题更加严重了,很是苦恼。于是闲置了一个月,想想也不是办法,终于,在昨天解决了,耶,在此记录一下,希望能够帮助到一些CSDNer。
  • 看了很多方法,总结一下出现这种情况的原因;
  1. 有两个mysql,检查一下电脑是否有没有卸载干净的mysql
  2. root权限问题;

解决办法

解决办法就是重置root权限密码,但网上很多说在my.ini配置文件下加skip-grant-tables还是行不通,甚至找不到my.ini这个文件。为了大家不再踩我当初的雷,直接上教程。

1.删除mysql服务

  • 以管理员身份运行cmd,进入mysql的bin文件下,运行命令:
    sc delete MySql
    在这里插入图片描述
  • MySql必须和你的服务名称一致,可以在我的电脑-属性-服务中查看(我的是已经修改过后的,所以不一样)。删除mysql服务之后,在服务中就看不到了,如果还能看见,可以手动右击选择“停止”,服务就消失了。
    在这里插入图片描述

2.新建my.ini配置文件

  • 在mysql目录下,原来是没有my.ini这个配置文件的,其实,新版的mysql的my.ini配置文件已经迁移到默认C盘下的ProgramData中,这时我们可以选择把它复制到mysql根目录下,但要注意修改my.ini文件中的basedir 和 datadir改成自己正确的路径。
    在这里插入图片描述
    在这里插入图片描述
  • 如果没有这个配置文件也可以自己新建一个空白的my.ini,复制以下代码:
    当然其中的basedir 和 datadir也要相应改变
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\MySQL
datadir = D:\MySQL\data
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 16M
read_rnd_buffer_size = 16M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

3.重新生成data文件

  • 删除mysql下的data文件,如果有重要的数据表先备份好。在cmd中重新生成data文件,在data中输入:
    D:\MySql\bin>mysqld --initialize-insecure --user=mysql
    命令执行完毕会在mysql文件夹中生成新的data文件。
    在这里插入图片描述

4.重新安装mysql服务,同时绑定my.ini配置文件

在cmd中执行命令:
D:\MySql\bin>mysqld --install "MySql80" --defaults-file="d:/mysql/my.ini"
“MySql80”是服务名称,可以自己修改;”…\my.ini“是新建的配置文件的位置,也可以写成绝对路径”D:\MySql\my.ini“。
在这里插入图片描述
如果提示安装成功,这时打开电脑的”服务“窗口,可以找到新添加的MySql80服务:
在这里插入图片描述
启动mysql:在cmd中输入命令:D:\MySql\bin>net start mysql80,如果启动成功,如下:
在这里插入图片描述
如果启动不成功,可能是my.ini配置文件中的某些配置有问题。你可以修改ini文件内容,然后从头按步骤再试一遍。

5.重新设置密码

删除了data文件和服务之后,之前的密码就失效了,所以需要重新设置密码。在cmd中输入如下命令:D:\MySql\bin>mysql -u root -p这时密码为空,不用输入密码直接回车。
在这里插入图片描述

6.修改root用户密码

  • 在mysql8.0之前的版本,修改root密码的命令是:
    update mysql.user set authentication_string=password("你的密码") where user="root";
  • mysql8.0之后的版本,修改root密码的命令是:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    在这里插入图片描述
    接着退出mysql,用刚刚修改的密码重新登录,分别运行命令:mysql> exitmysql -u root -p如图:
    在这里插入图片描述
    好了,现在已经成功绑定my.ini文件了,再去打开Navicat就能成功连接了,yeah~开心
    在这里插入图片描述

后记

我的文章主要参考以下文章,非常感谢解决了我的问题,最后,希望这篇文章对大家有帮助~~

参考文章:安装之后没有my.ini配置文件怎么办

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页