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

Mysql 在用户表中找不到任何匹配行,mysql,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';

我正在尝试执行此查询-

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
我认为,若用户不存在,则授权使用将创建新用户。怎么了

我认为,若用户不存在,则授权使用将创建新用户。怎么了

在以前版本的mysql中就是这样。看看你是否想用新的方式做。如果您想修改您的系统设置,使其按以前的方式工作,请继续阅读。但是,请注意,这是一种不推荐的行为,正如链接文档所述

在将来的MySQL中不会删除任何自动创建用户 释放,此时将在启用其效果 GRANT不会一直创建帐户

从中,您可以设置一个选项,允许mysql创建不存在的用户

无自动创建用户

如果发生以下情况,请防止GRANT语句自动创建新用户 否则它会这样做,除非还需要一个非空密码 指定的

要设置选项,请执行以下操作:

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


我也犯了同样的错误

grant all on newdb.* to newuser@localhost;
用“标识人”解决:

grant all on newdb.* to newuser@localhost  identified by 'password';
该命令不再自动创建用户

不要更改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';

尝试在脚本末尾添加以下内容:

FLUSH PRIVILEGES;

单引号创建由“用户”标识的用户“用户”@“本地主机”;-?嗯,是的。它是单引号。运行SELECT@@GLOBAL.sql\u模式;检查是否不存在自动创建用户。如果存在,则创建一个没有自动创建用户的集合操作。e、 g.设置sql_模式='仅_完整_分组_依据,严格_转换_表格,_日期中没有_零,没有_零日期,错误_除以_零,没有_引擎_替换';奇怪的是,当我是rootI时,为什么我需要这个呢?我只是忘记了@localhost,这就是为什么我会出现这个错误。ospider,这是因为你识别了一个新用户,你授予了我为“debian sys maint”@“localhost”拒绝访问的特权,这阻止了我重新启动mysql服务