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自己的开发人员的观点问题还是系统的问题呢?
分享到:
相关推荐
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 ='...
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 ...
- 会话级别:执行 `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_...
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的配置文件...
如果你的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_...
- `NO_AUTO_CREATE_USER`:这个模式禁止在创建新用户时自动赋予权限,增加了安全性。 - `NO_ENGINE_SUBSTITUTION`:当请求的存储引擎不可用时,此模式不允许MySQL自动替换为其他引擎,而是抛出错误。 总结来说,...
解压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
系统环境 操作系统: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
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER explicit_defaults_for_timestamp=true skip-grant-tables ``` #### 四、注册MySQL服务 **4.1 注册MySQL服务** 在管理员命令提示符中输入`mysqld-...
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> set sql_mode='no_auto_create_user,no_engine_substitution'; 这样,load data 方法将可以正确地读取文件中的数据。 方法二:调整字符的长度 另一个解决方法是调整字符的长度。在某些情况下,load data ...
`NO_AUTO_CREATE_USER`防止通过GRANT命令无密码创建新用户。`ALLOW_INVALID_DATES`允许插入不符合标准的日期,但仅限于月和日在合理范围内。`ERROR_FOR_DIVISION_BY_ZERO`在除以零时引发错误,而不仅仅是警告。`HIGH...
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...
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...
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`或...
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'; ``` - 或者,对于已存在数据库,可以在该数据库上下文中...
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-...
- **SQL 模式的选取**:MySQL 提供了多种 SQL 模式供用户选择,如 ANSI_QUOTES、NO_AUTO_CREATE_USER 等。 - **标准 SQL 与 MySQL 的区别**:MySQL 对标准 SQL 进行了一定程度的扩展,例如支持全文搜索、空间数据...
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服务使更改生效。 其次,清空表数据通常有两种方式。第一...
添加一行"[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模式应...