Mysql 无法登陆 Error 1045

来源:互联网 发布:山西省软件开发企业 编辑:程序博客网 时间:2024/05/21 09:12

今天第一次装了Mysql 5.7.9,本来是一件及其简单的事情,却没想到掉进了坑里。

我的系统Mac OS,mysql 版本是

mysql  Ver 14.14 Distrib 5.7.9, for osx10.9 (x86_64) using  EditLine wrapper

这个问题和系统应该没有太大关系。
Mysql5.7.9在安装完成之后,会随机生成一串密码,
正常来说,用这串密码就可以登陆到mysql了,谁知道出了1045错误。
这个问题我在Linux上也遇到过,解决起来很简单,毕竟是Mac OS,和Linux有点区别,
于是乎我就百度啊,找来一个解决方案:
cd /usr/local/mysql/bin/
sudo su
./mysqld_safe --skip-grant-tables &  
接下来可以直接登陆mysql并且不需要密码
mysql -u root
use mysql;
接下来就是这次的坑所在了,非5.7版本的mysql是这样重设root密码的:
UPDATE user SET password=PASSWORD(’新密码’) WHERE User=’root’;
但是如果你是5.7,那么这条重设密码的命令会报错,内容是说没有password字段。
what?没有password字段?那密码存在哪里?
于是我查看了一下user表,发现有一个叫authentication_string的字段存着密码一样的东西,
于是上百度查了一下,果然如此,吐槽下百度上的相关资料真少,还是Google好。
所以对于5.7来说,正确的设置方法应该是:
UPDATE user SET authentication_string=PASSWORD(’新密码’) WHERE User=’root’;
FLUSH PRIVILEGES;
然后就是重启了。Mac OS没有service命令,百度上我也查不出怎么重启mysql服务,于是我就杀进程啦:
ps -ef|grep mysql
相关进程统统杀掉(一般是两个),然后再正常启动。启动成功后登陆mysql试试:
mysql -uroot -p
输入密码后成功登陆啦!于是想查查表,结果又报了一个错:

ERROR 1820 (HY000): You must reset your password using 

ALTER USER statement before executing this statement.

好吧,那我再重设一次密码好了:
SET PASSWORD = PASSWORD('新密码');
欧耶,mysql可以正常使用了!

PS:话说前面那个update密码如果直接用set password是不是可以呢?有兴趣的同学可以试一下。

0 0
原创粉丝点击