searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MySQL空密码问题浅析

2023-05-24 10:10:47
46
0

前言:

近期反馈有多次出现MySQL空密码问题,会导致用户无需密码就可直接访问数据。因安全无小事,对该问题进行了一定分析。

 

问题原因:

执行用户创建语句时不规范没有设置密码导致密码为空且MySQL版本过低。

 

问题分析:

1、创建用户语句不规范

    创建用户操作时使用grant创建,在MySQL 5.7.7版本之前,可以直接使用grant语法来创建用户和授权 // grant 权限 on 数据库对象 to 用户 ; 。但是因为命令缺少密码设置导致空密码情况,从而引发安全问题。

 

2、MySQL服务版本过低

    在MySQL 5.7.7版本之后,仍然可以使用grant语法来创建用户,但是为了限制创建用户引发的空密码问题,加入了 NO_AUTO_CREATE_USER 的sql模式。在grant语句中禁止创建空密码的账户,使用grant语法创建用户必须带上 identified by 密码,否则就被认为是非法语句,从而规避掉空密码情况的发生。

    在MySQL 8.0.11版本之后,官方遵循使用create user语法来创建用户,认为grant创建用户的语法无关紧要就将其删除了。既然grant语法创建用户都不允许了,那么NO_AUTO_CREATE_USER模式自然也就无效了,所以将该模式删除,以后也不再支持。

 

处理建议:

1、使用最新稳定版本MySQL服务使用,不仅可规避空密码问题,且对其他问题漏洞也有一定安全防护措施。

2、如必要使用低版本MySQL服务,则:

        ①添加密码设置后附权并创建。

        // grant 权限 on 数据库对象 to 用户 identified by 密码 with grant option;

        ②先创建用户再进行附权操作。

       // create user 用户 identified by 密码;

       // grant 权限 on 数据库对象 to 用户;

3、模式验证。

      // select@@sql_mode;

   

总结:

    对服务组件的部署、用户的创建保持警惕之心,恪尽安全防控之责。务必关注组件部署安全和弱密码问题,不要在研发测试环境、生产环境随意部署组件,遵守“组件安全风险规范”,安全无小事,平安靠大家!

0条评论
作者已关闭评论
l****l
1文章数
0粉丝数
l****l
1 文章 | 0 粉丝
l****l
1文章数
0粉丝数
l****l
1 文章 | 0 粉丝
原创

MySQL空密码问题浅析

2023-05-24 10:10:47
46
0

前言:

近期反馈有多次出现MySQL空密码问题,会导致用户无需密码就可直接访问数据。因安全无小事,对该问题进行了一定分析。

 

问题原因:

执行用户创建语句时不规范没有设置密码导致密码为空且MySQL版本过低。

 

问题分析:

1、创建用户语句不规范

    创建用户操作时使用grant创建,在MySQL 5.7.7版本之前,可以直接使用grant语法来创建用户和授权 // grant 权限 on 数据库对象 to 用户 ; 。但是因为命令缺少密码设置导致空密码情况,从而引发安全问题。

 

2、MySQL服务版本过低

    在MySQL 5.7.7版本之后,仍然可以使用grant语法来创建用户,但是为了限制创建用户引发的空密码问题,加入了 NO_AUTO_CREATE_USER 的sql模式。在grant语句中禁止创建空密码的账户,使用grant语法创建用户必须带上 identified by 密码,否则就被认为是非法语句,从而规避掉空密码情况的发生。

    在MySQL 8.0.11版本之后,官方遵循使用create user语法来创建用户,认为grant创建用户的语法无关紧要就将其删除了。既然grant语法创建用户都不允许了,那么NO_AUTO_CREATE_USER模式自然也就无效了,所以将该模式删除,以后也不再支持。

 

处理建议:

1、使用最新稳定版本MySQL服务使用,不仅可规避空密码问题,且对其他问题漏洞也有一定安全防护措施。

2、如必要使用低版本MySQL服务,则:

        ①添加密码设置后附权并创建。

        // grant 权限 on 数据库对象 to 用户 identified by 密码 with grant option;

        ②先创建用户再进行附权操作。

       // create user 用户 identified by 密码;

       // grant 权限 on 数据库对象 to 用户;

3、模式验证。

      // select@@sql_mode;

   

总结:

    对服务组件的部署、用户的创建保持警惕之心,恪尽安全防控之责。务必关注组件部署安全和弱密码问题,不要在研发测试环境、生产环境随意部署组件,遵守“组件安全风险规范”,安全无小事,平安靠大家!

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0