Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1480975
  • 博文数量: 187
  • 博客积分: 10375
  • 博客等级: 上将
  • 技术积分: 3127
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-07 10:58
文章分类

全部博文(187)

文章存档

2013年(1)

2012年(8)

2011年(28)

2010年(36)

2009年(47)

2008年(67)

我的朋友

分类: Mysql/postgreSQL

2009-08-06 09:21:35

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

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

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 identified by 'xxx';

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

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

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

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

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

阅读(1539) | 评论(0) | 转发(0) |
0

上一篇:Linux服务器关闭SeLinux

下一篇:好热的天

给主人留下些什么吧!~~