给现有用户授权会提示“您不被允许用授权创建用户”,即使该用户已经存在。

3

我以root用户身份登录,刚刚重新安装了mysql服务器。当我执行SELECT * FROM mysql.user;命令时,并没有看到login_manager用户。现在,我执行了CREATE USER 'login_manager'@'localhost' IDENTIFIED BY 'login_manager';命令并检查用户是否已创建,发现该用户已被创建。

GRANT INSERT
    ON clients
    TO login_manager;

在这里,client是一个表格,给我返回了标题中的错误。在创建用户之后执行FLUSH PRIVILEGES;也没有帮助。在创建用户之前,我已经刷新了权限。我查阅了资料,通常情况下,在授权语句中尝试创建用户时会出现此错误,但我并没有这样做。

我知道这很长,但这里是root拥有的授权信息:

'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION'

and

'GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION'

并且

'GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION'
1个回答

2

您的login_manager用户有一个Host条目,可能是localhost%

因此,您的GRANT技术上不是针对该用户,而是针对没有Host条目的login_manager - 因此mysql知道它必须先创建没有Host的用户。

假设您在创建用户时使用了localhost,请使用以下内容进行授权:

GRANT INSERT
ON clients
TO 'login_manager'@'localhost';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接