Windows下MySql错误代码1045的解决方法

笔者有一段时间没有使用本机的mysql了,偶然今天因工作需要需要使用,使用root登录时,提示1045错误,root居然无法登录!在网上很多解决方法都是linux下的,如果你去找什么“/etc/mysql/debian.cnf“,会大失所望。

后来又搜索windows下的mysql 1045错误,找到了一个比较靠谱的。

原文网址是:http://www.th7.cn/db/mysql/201403/46981.shtml

不过也不是完全都能解决的。

具体解决步骤如下(亲测):

(1)停止mysql,在运行中搜 services.msc,(或者开始菜单->控制面板->管理工具->服务)打开服务管理,然后找到mysql服务,关闭他。

(2)打开命令行,转到mysql的bin目录下;如D:\Program Files\MySQL\MySQL Server 5.7\bin

输入:d: 回车 

输入  cd D:\Program Files\MySQL\MySQL Server 5.7\bin 回车

C:\Windows\System32>d:
D:\>cd D:\Program Files\MySQL\MySQL Server 5.7\bin
D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld-nt --skip-grant-tables
'mysqld-nt' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
</span><span style="color:#ff0000;">注意 mysqld-nt 中间应该有个空格!网上都是拷贝的稀烂的。</span><span style="color:#010101;">
D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld -nt --skip -grant -tables
2016-06-02T02:30:06.135093Z 0 [Warning] option 'new': boolean value 't' wasn't r
ecognized. Set to OFF.
2016-06-02T02:30:06.136093Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is
 deprecated. Please use --explicit_defaults_for_timestamp server option (see doc
umentation for more details).
2016-06-02T02:30:06.136093Z 0 [Note] mysqld (mysqld 5.7.3-m13) starting as proce
ss 4776 ..


 



注:skip-grant-tables参数用了之后,就可以跳过登录校验;

网上也有说可以修改my.ini中的设置的,不过我中感觉修改ini不太靠谱,万一不慎出现了1067就麻烦了。还是不用为好。

然后cmd就停在那里了,也不知道发生了什么。查看服务,发现mysql并没有启动。

(3)再打开一个命令行(因为刚才那个DOS窗口已经不能动了),同样转到mysql的bin目录下;

(4)按照网上所得直接运行mysql提示:

C:\Windows\System32>d:
D:\>cd D:\Program Files\MySQL\MySQL Server 5.7\bin
D:\Program Files\MySQL\MySQL Server 5.7\bin> mysql
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)


然后就不知道怎么处理这个ODBC了。不过我想,居然已经使用了“跳过登陆校验”,是否可以直接登陆呢?

于是尝试输入:mysql -u -root -p 在提示Enter password的时候直接 回车,居然可以登陆了!然后发现mysql也居然神奇的启动了。(后来发现前一个控制台也反应过来了,也可能是之前的启动了?不过还不清楚,总之是可以跑了)

D:\Program Files\MySQL\MySQL Server 5.7\bin> mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


(5)剩下的就是使用sql语句来改变root的密码了:

mysql> use mysql
Database changed
mysql> UPDATE user SET password=PASSWORD("123456") WHERE user="root";
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> mysql>FLUSH PRIVILEGES;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
>FLUSH PRIVILEGES' at line 1
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

 

大功告成,使用管理工具sqlyog登陆,发现可以了。

 

然而并没有结束,登陆后发现我的表怎么都没有了?但是去我设定的data目录去看,表还是存在的,为什么呢?

难不成是因为设了个密码就不复存在了?重启后再尝试还是一样。

 

而后我发现是因为自己最近装了一个WAMP5,里面居然自带的有mysql服务,将之关闭之后,再次登录mysql,发现原来的表回来了。

于是出现登录问题的原因找到了,电脑上存在了两个mysql,后面的一个mysql并没有进行设定,但端口还是3306,所以root是登录不上去的,导致原来的mysql被屏蔽了。







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值