一尘不染

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

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如果用户不存在,则创建新用户。怎么了?


阅读 373

收藏
2020-05-17

共1个答案

一尘不染

我认为,如果用户不存在,则Grant用法会创建新用户。怎么了?

在以前的mysql版本中就是这种情况。如果您想以新方式进行操作,请参见此答案。如果您想修改系统设置以使其像以前一样工作,请继续阅读。但是,请注意,这是不推荐使用的行为,因为链接文档指出:

NO_AUTO_CREATE_USER将在以后的MySQL版本中删除,届时将始终启用它的效果(GRANT不会创建帐户)

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

NO_AUTO_CREATE_USER

除非另外指定了非空密码,否则要防止GRANT语句自动创建新用户。

设置选项:

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

2020-05-17