`
icess
  • 浏览: 251175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql的NO_AUTO_CREATE_USER模式

    博客分类:
  • Tips
阅读更多
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自己的开发人员的观点问题还是系统的问题呢?
分享到:
评论

相关推荐

    mysql 5.7数据库免安装版

    sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER #开启查询缓存 explicit_defaults_for_timestamp=true skip-grant-tables (3)生成data目录,DOS下mysqld --initialize-insecure --user=mysql (4)Service ...

    linux tomcat mysql jdk

    - 会话级别:执行 `SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';` - 全局级别:执行 `SET GLOBAL sql_...

    mysql遇到Expression.docx

    SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` 或者,为了永久生效,你需要修改MySQL的配置文件...

    使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: ”” for column ”createtime”的快速解决方法

    如果你的MySQL版本是5.7.9或更高,可能的设置是`sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"`。如果版本较低,可能的设置是`sql-mode="STRICT_...

    MySql版本问题sql_mode=only_full_group_by的完美解决方案

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 2、去掉ONLY_FULL_GROUP_BY,重新设置值。 set @@sql_mode ='...

    MySQL安全模式和非安全模式实验[参考].pdf

    - `NO_AUTO_CREATE_USER`:这个模式禁止在创建新用户时自动赋予权限,增加了安全性。 - `NO_ENGINE_SUBSTITUTION`:当请求的存储引擎不可用时,此模式不允许MySQL自动替换为其他引擎,而是抛出错误。 总结来说,...

    解析windows下使用命令的方式安装mysql5.7的方法

    解压zip压缩包,创建my.ini文件内容如下 ...sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPE

    中易广告联盟系统 V3.31

    系统环境 操作系统:Linux/Unix/NT;推荐使用Linux或Unix操作系统,版本不限 服务环境:Apaceh(IIS)+PHP5.0.x+GD+MySQL5.0.x+Zend Optimzer3.0.x;...sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    MySql 5.7.20安装_及生成data和my.ini文件以及配置说明

    sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER explicit_defaults_for_timestamp=true skip-grant-tables ``` #### 四、注册MySQL服务 **4.1 注册MySQL服务** 在管理员命令提示符中输入`mysqld-...

    Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

    SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` 这会去掉`ONLY_FULL_GROUP_BY`,但只对新创建的会话...

    MySQL里load data遇到的问题及解决方法

    mysql> set sql_mode='no_auto_create_user,no_engine_substitution'; 这样,load data 方法将可以正确地读取文件中的数据。 方法二:调整字符的长度 另一个解决方法是调整字符的长度。在某些情况下,load data ...

    mysql sql_mode= 的作用说明

    `NO_AUTO_CREATE_USER`防止通过GRANT命令无密码创建新用户。`ALLOW_INVALID_DATES`允许插入不符合标准的日期,但仅限于月和日在合理范围内。`ERROR_FOR_DIVISION_BY_ZERO`在除以零时引发错误,而不仅仅是警告。`HIGH...

    MySQL数据表合并去重的简单实现方法

    SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` 现在,可以创建临时表`tmp`: ```sql CREATE TABLE tmp...

    关于MySQL的sql_mode合理设置详解

    sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,PIPES_AS_CONCAT,ANSI_QUOTES' ``` 需要注意的是,MySQL...

    解决MySQL 5.7.9版本sql_mode=only_full_group_by问题

    SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` 永久修改则需要在MySQL配置文件(通常是`my.cnf`或...

    mysql不支持group by的解决方法小结

    SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` - 或者,对于已存在数据库,可以在该数据库上下文中...

    Linux mysql tar包部署

    sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER" character_set_server=utf8 lower_case_table_names=1 skip-name-...

    MySQL_5.5中文参考手册

    - **SQL 模式的选取**:MySQL 提供了多种 SQL 模式供用户选择,如 ANSI_QUOTES、NO_AUTO_CREATE_USER 等。 - **标准 SQL 与 MySQL 的区别**:MySQL 对标准 SQL 进行了一定程度的扩展,例如支持全文搜索、空间数据...

    MySQL使用中遇到的问题记录

    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ``` 之后重启MySQL服务使更改生效。 其次,清空表数据通常有两种方式。第一...

    MYSQL数据查询技巧.pdf

    添加一行"[mysqld]sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",这将禁用"only_full_group_by"模式。当然,修改SQL模式应...

Global site tag (gtag.js) - Google Analytics