不得不抱怨Mysql的权限实在很二。我昨晚搞了半天都没有搞定我的MBP上的古怪问题:
我在机器上面的mysql在命令行下面用mysql -u root可以直接登上去,但是在django里面设置user = ‘root’, password=”却登不上去,而用有密码的用户可以登上去,告诉我access denied。
我尝试重置密码,用sql更新总是不管用,而且我发现更新结果实际上就在mysql.user表里面,直接更新表比使用命令还简单。
幸好 @nicholasdsj 同学指了一下问题,发现因为我的Terminal里面的mysql客户端即使-h登录进去它也默认使用socket连接,但是socket连接忽略了密码……我不知道这是否是我的机器的配置有问题,但是这个古怪的原因造成我使用mysql客户端尝试密码完全失效……实际上总是有密码。最后干脆执行sql清空一下密码:
update user set Password = '' where User = 'root' and Host = 'localhost';
而后python连接没有问题了,清净了。可是Terminal里面每次都需要输入-p参数然后回车进去了。