在用户表中找不到任何匹配的行

时间:2013-07-11 15:12:09

标签: mysql

我正在尝试执行此查询 -

DROP DATABASE IF EXISTS `hotel`;

GRANT USAGE ON *.* TO 'user'@'localhost';
DROP USER 'user'@'localhost';

CREATE USER user@localhost IDENTIFIED BY 'user';

CREATE DATABASE `hotel`
    CHARACTER SET 'utf8'
    COLLATE 'utf8_general_ci';

GRANT USAGE ON *.* to 'user'@'localhost' identified by 'user';

但我总是得错误

GRANT USAGE ON *.* TO 'user'@'localhost' Error Code: 1133. Can't find any matching row in the user table    0.000 sec

我认为如果用户不存在,Grant usage会创建新用户。有什么问题?

5 个答案:

答案 0 :(得分:78)

我和

有同样的错误
grant all on newdb.* to newuser@localhost;

用'

标识的&#39解决
grant all on newdb.* to newuser@localhost  identified by 'password';

答案 1 :(得分:16)

  

我认为如果用户不存在,Grant使用会创建新用户。有什么问题?

在以前版本的mysql中就是这种情况。如果您想以新的方式进行,请参阅this answer。如果您想修改系统设置以使其按照以前的方式工作,请继续阅读。但请注意,这是一种弃用的行为,因为链接文档说明了

  

NO_AUTO_CREATE_USER将在未来的MySQL中删除       释放,此时将启用其效果       所有时间(GRANT不会创建帐户)

documentation,您可以设置一个选项,允许mysql创建用户(如果不存在)。

  

NO_AUTO_CREATE_USER

     

防止GRANT语句自动创建新用户if   否则它会这样做,除非非密码也是   指定。

设置选项:

  

您可以使用SET [GLOBAL | SESSION]在运行时更改SQL模式   sql_mode ='modes'语句用于设置sql_mode系统值。

答案 2 :(得分:6)

GRANT命令不再自动创建用户。

请勿更改NO_AUTO_CREATE_USER变量,而是首先使用CREATE USER命令创建用户,然后授予特权:

DROP USER IF EXISTS 'user'@'localhost';
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';

答案 3 :(得分:0)

尝试添加到脚本末尾:

FLUSH PRIVILEGES;

答案 4 :(得分:0)

从root用户运行:

grant all privileges on *.* to 'user'@'localhost' identified by '';

编辑

示例

mysql> grant all privileges on *.* to 'user'@'localhost' identified by 'user'; 

mysql> flush privileges;