码迷,mamicode.com
首页 > 数据库 > 详细

Mysql不需要身份验证便可远程连接故障

时间:2015-08-19 17:31:57      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:mysql;mysql验证

首先感谢在本次故障中阿铭对我的无私帮助,万分感谢!阿铭linux论坛:http://www.apelearn.com/study_v2/


问题描述:

司安全部门扫描到数据库安全隐患,数据库不需要经过身份验证就可直接远程连接。

处理步骤:

①:查看发现my.cf中开启了--skip-grant-table   #怀疑是之前的管理员忘记了root密码才这样弄的。

②:使用如下命令更改数据库密码并写入。如果你知道root密码可以省掉,因为我没有root密码所以就更改了一下。

       UPDATE user SET Password = password(‘123456‘) where user = ‘root‘; 

       FLUSH privileges;

③:停止数据库,将--skip-grant-table注释掉,并启动数据库。

④:使用如下命令登陆数据库,但是报错。

      mysql -uroot -p123456

      ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

⑤:使用mysql -uroot可以进入数据库,但是只能看到test这个数据,下图是我在加--skip-grant-table下查到的所有数据看。

+-----------------------+

| Database              |

+-----------------------+

| information_schema    |

| activemq              |

| bjsdzx_real           |

| emcc                  |

| estonerhr_cms         |

| estonerhr_oa          |

| logistic              |

| logistic_shortmessage |

| mysql                 |

| performance_schema    |

| test                  |

+-----------------------+

注:在加--skip-grant-table时使用命令 select host, user, password from mysql.user;得到如下信息。

+-----------------------+--------+-------------------------------------------+

| host                  | user   | password                                  |

+-----------------------+--------+-------------------------------------------+

| %                     | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| localhost.localdomain | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| 127.0.0.1             | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| ::1                   | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| localhost             |        |                                           |

| localhost.localdomain |        |                                           |

| %                     | server | *866D5A029D62EC05ACC4584CE50F1CD2F50E0E82 |

+-----------------------+--------+-------------------------------------------+

7 rows in set (0.00 sec)

解决步骤:铭哥给我的答案是,在mysql.user表里两个空用户,删除之后改密码然后授权就可以了。

①在开启--skip-grant-table参数的情况下启动数据库并使用如下命令删除mysql.user表里的空用户。

     mysql> delete from mysql.user where user=‘‘;

     Query OK, 2 rows affected (0.00 sec)

②使用如下命令查询mysql.user里面的内容,发现空用户已经被删除了。

     mysql> select host, user, password from user\G;

+-----------------------+--------+-------------------------------------------+

| host                  | user   | password                                  |

+-----------------------+--------+-------------------------------------------+

| %                     | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| localhost.localdomain | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| 127.0.0.1             | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| ::1                   | root   | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| %                     | server | *866D5A029D62EC05ACC4584CE50F1CD2F50E0E82 |

+-----------------------+--------+-------------------------------------------+

5 rows in set (0.00 sec)

③使用如下命令更改root密码为123456

    mysql> UPDATE mysql.user SET Password = password(‘123456‘) where user = ‘root‘; 

④使用如下命令授权root用户权限

    mysql> grant all on *.* to ‘root‘@‘%‘ identified by ‘123456‘;

⑤使用如下命令将内存信息写入文件

    mysql> flush privileges;

⑥退出登录,注释掉my.cf文件里的--skip-grant-table

⑦重启mysql服务。

验证:

①使用如下命令进入mysql

    mysql>mysql -uroot -p 123456;

②使用如下命令查询所有数据库,发现都能看得见了

mysql> show databases;

+-----------------------+

| Database              |

+-----------------------+

| information_schema    |

| activemq              |

| bjsdzx_real           |

| emcc                  |

| estonerhr_cms         |

| estonerhr_oa          |

| logistic              |

| logistic_shortmessage |

| mysql                 |

| performance_schema    |

| test                  |

+-----------------------+

11 rows in set (0.00 sec)

   

=============================至此结束,故障处理完毕===================


本文出自 “王小可的技术博客” 博客,请务必保留此出处http://wangxiaoke.blog.51cto.com/5150707/1685924

Mysql不需要身份验证便可远程连接故障

标签:mysql;mysql验证

原文地址:http://wangxiaoke.blog.51cto.com/5150707/1685924

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!