免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1395 | 回复: 0
打印 上一主题 下一主题

GRANT和NO_AUTO_CREATE_USER [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:53 |只看该作者 |倒序浏览
授权命令GRANT 语句的语法如下:

GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION
 
其中IDENTIFIED BY是可选子句,用来于指定mysql用户的口令。
 
既然是可选子句,那就是可以没有的子句。问题来了:
 
要是没有指定IDENTIFIED BY,会怎么样?
 
答案是可能导致一个安全漏洞:如果user是指现有用户,那么没有任何影响;但如果user是指新用户,那么该用户将不被赋予口令,也就是说,这样的语句会创建一个口令为空,且已有数据库操作权限的mysql用户!
 
那么要如何避免这样的情况发生呢?
 
不用担心,mysql自身已经给出了解决方案。在关于mysql运行模式的文档里有这样一段:
 
NO_AUTO_CREATE_USER:
One of Server SQL Modes,to prevent the GRANT statement from automatically creating new users if it would otherwise do so, unless a nonempty password also is specified.
 
即在NO_AUTO_CREATE_USER运行模式下,mysql会阻止任何创建空密码的用户。所以只要将mysql发运行模式指定为NO_AUTO_CREATE_USER,即可解决此问题。
 
指定运行模式的方法也很简单:
 
You can set the default SQL mode by starting mysqld with the --sql-mode="modes" option, or by using sql-mode="modes" in my.cnf。
 
即在启动mysqld时,使用--sql-mode="modes"选项,或者直接将sql-mode="modes"写到my.cnf里。
 
 
 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP