Navicat报错:1045-Access denied for user root@localhost(using password:YES)怎么解决
文章目录
前言
- 数据库好久没用过了,某一天打开Navicat,结果连接时报错:1045-Access denied for user root@localhost(using password:YES),我一脸懵逼,也没动过什么啊。没办法,只有盘他。
- 结果百度发现出现这种问题的还不少,但我搞了几天,看了很多解决办法也没解决我的问题,甚至问题更加严重了,很是苦恼。于是闲置了一个月,想想也不是办法,终于,在昨天解决了,耶,在此记录一下,希望能够帮助到一些CSDNer。
- 看了很多方法,总结一下出现这种情况的原因;
- 有两个mysql,检查一下电脑是否有没有卸载干净的mysql
- 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> exit
;mysql -u root -p
如图:
好了,现在已经成功绑定my.ini文件了,再去打开Navicat就能成功连接了,yeah~开心
后记
我的文章主要参考以下文章,非常感谢解决了我的问题,最后,希望这篇文章对大家有帮助~~
参考文章:安装之后没有my.ini配置文件怎么办