关于mysql授权账号权限时的空密码坑爹问题

一下午过得很不开心,遇到一个相当的坑爹问题, 是关于mysql授权的问题….   真的是把我坑的死去活来的….    我都开始怀疑我以前的运维观了…   


原文链接是,http://xiaorui.cc/?p=1440


mysql是5.7的版本,这版本是支持json的,同事用这版本做过一定的测试。 随后我在这上面创建了几个库,并且做了权限的授予,但是发现密码总是不对,更甚至有时候是可以空密码进入的。 我当时以为是5.7本身的问题….    都要把mysql5.7骂道天了 。  

折腾了半天有各种的途径的update和insert账号密码,但还是不能用密码登录, 这时候,真的伤心欲绝,都没心情吃公司那下午茶水果了….    

这时候,我已经要疯狂了,立马把mysql5.7干掉,直接上手编译安装mysql5.6 ,但是一会又出现了这问题。 后来跟以前乐视的同事 徐长华(现在是在搜狐做dba工作) 聊了下,才解决这问题…. 

[ruifengyun@bj-buzz-dev01 ~]$ mysql -ubuzz -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘buzz’@'localhost’ (using password: NO)
[ruifengyun@bj-buzz-dev01 ~]$ mysql -ubuzz -p

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set password=password(’123123′) where user=’buzz’;
Query OK, 0 rows affected (0.02 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> SHOW GRANTS FOR buzz\G
*************************** 1. row ***************************
Grants for buzz@%: GRANT USAGE ON *.* TO ‘buzz’@'%’ IDENTIFIED BY PASSWORD ‘*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1′
*************************** 2. row ***************************
Grants for buzz@%: GRANT ALL PRIVILEGES ON buzz_master.* TO ‘buzz’@'%’
2 rows in set (0.00

mysql> select user,host,password from mysql.user order by user,host;
+————-+—————+——————————————-+
| user        | host          | password                                  |
+————-+—————+——————————————-+
|             | bj-buzz-dev01 |                                           |
|             | localhost     |                                           |
| buzz        | %             | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
| root        | 127.0.0.1     | *B335B8949A6AF011EA3D9F37F046C6E413BC23FB |
| root        | ::1           |                                           |
| root        | bj-buzz-dev01 |                                           |
| root        | localhost     | *B335B8949A6AF011EA3D9F37F046C6E413BC23FB |
| weixin_user | %             | *DF81D3DE3ABC1508BFB0F1D4DE9C2EECBAE43E4F |
| weixinuser  | %             | *DF81D3DE3ABC1508BFB0F1D4DE9C2EECBAE43E4F |
+————-+—————+——————————————-+
9 rows in set (0.00 sec)

解决方法,删除为空的用户授权:

mysql>
mysql>
mysql> drop user ”@’localhost’;
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> drop user ”@’bj-buzz-dev01′;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> select user,host,password from mysql.user order by user,host;
+————-+—————+——————————————-+
| user        | host          | password                                  |
+————-+—————+——————————————-+
| admin       | %             |                                           |
| buzz        | %             | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
| root        | 127.0.0.1     | *B335B8949A6AF011EA3D9F37F046C6E413BC23FB |
| root        | ::1           |                                           |
| root        | bj-buzz-dev01 |                                           |
| root        | localhost     | *B335B8949A6AF011EA3D9F37F046C6E413BC23FB |
| weixin_user | %             | *DF81D3DE3ABC1508BFB0F1D4DE9C2EECBAE43E4F |
| weixinuser  | %             | *DF81D3DE3ABC1508BFB0F1D4DE9C2EECBAE43E4F |
+————-+—————+——————————————-+
8 rows in set (0.00 sec)

现在好了,是因为有mysql库的user表有空值的情况…. 貌似mysql进行认证的时候,匹配都了空值,所以就直接能进入myql里面了。   再次感谢 长华,要没他,我估计今天要折腾疯狂了… 



1 Response

  1. 雨人 2015年5月15日 / 下午10:49

    我曾经也遇到过这样的问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">