一下午过得很不开心,遇到一个相当的坑爹问题, 是关于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里面了。 再次感谢 长华,要没他,我估计今天要折腾疯狂了…
我曾经也遇到过这样的问题