[Mysql] NO_AUTO_CREATE_USER模式

本文探讨了Mysql NO_AUTO_CREATE_USER模式的含义及其对用户添加操作的影响,强调了在该模式下添加用户时必须提供密码,并通过实例展示了正确的密码设置方式。同时,文章还对比了不同操作系统环境下默认的用户密码设置行为。

Mysql的NO_AUTO_CREATE_USER模式 - 2007-10-14 16:49:02 

以前一直使用如下面的语句给mysql服务器添加用户: 

grant CREATE, DROP,INSERT, SELECT, DELETE, UPDATE,ALTER on xxx.* to xxx; 
grant CREATE, DROP,INSERT, SELECT, DELETE, UPDATE,ALTER on xxx.* to xxx@localhost; 
set password for xxx@'%' = password(xxx); 
set password for xxx@'localhost' = password(xxx); 
flush privileges; 

谁知道今天在另一个Mysql服务器上照葫芦画瓢出了问题,抱错说: 

ERROR 1133 (42000): Can't find any matching row in the user table 

Google了一下,原来Mysql还有一个模式控制这个,那就是NO_AUTO_CREATE_USER模式。 
也就是说,如果在mysql客户端中运行: 

mysql> set sql_mode = 'no_auto_create_user'; 

那么,上述的语句将不能成功,原因是没有提供用户密码,解决的办法是添加一个indentified 子句,例如: 

grant CREATE, DROP,INSERT, SELECT, DELETE, UPDATE,ALTER on xxx.* to xxx identified by 'xxx'; 

另外,要注意的是,空密码是不认的,例如: 

grant CREATE, DROP,INSERT, SELECT, DELETE, UPDATE,ALTER on xxx.* to xxx identified by ''; 就不行。 

关于服务器模式的详细文档见: 

http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html 

另外看了网上的讨论,仿佛linux下默认的都是可以直接添加密码为空的用户的,而windows版本都是不可以的,到底是Mysql自己的开发人员的观点问题还是系统的问题呢?

转载于:https://www.cnblogs.com/jQing/archive/2012/06/13/2548417.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值