mysql用户创建错误42000

Posted

技术标签:

【中文标题】mysql用户创建错误42000【英文标题】:mysql user creation error 42000 【发布时间】:2018-10-11 14:38:32 【问题描述】:

我正在尝试创建一个具有所有权限的新用户,所以我在 mysql 中尝试了这段代码:

create user 'user'@'localhost' IDENTIFIED BY 'password'

我得到了这个错误

------------- 创建用户 'user'@'localhost' IDENTIFIED BY 'password'

错误 1227 (42000):访问被拒绝;你需要(至少一个) 此操作的 CREATE USER 权限

注意:我已经阅读了这个问题和答案(并尝试过):

    MySQL: ERROR 1227 (42000): Access denied - Cannot CREATE USER

【问题讨论】:

您可能需要成为 root 才能执行此操作。选择用户();查看您的登录身份,然后检查您对该用户的权限。 问题是什么?您是否想知道该错误的含义,或者为什么返回该错误?您想知道这是否是预期的行为吗?这是MySQL中的错误吗?这是否记录在 MySQL 参考手册中?您想知道如何创建用户吗? (目前,这更像是一份状态报告,而不是一个问题。) 如何创建具有所有权限的新用户 @flip im 以 root 身份登录 【参考方案1】:

查看您登录的用户:

SELECT USER();

要查看您登录的用户的权限:

SHOW GRANTS;

识别具有“CREATE USER”权限的用户:

SELECT u.user, u.host, u.create_user_priv FROM mysql.user u ORDER BY u.user, u.host ;

如果对mysql.usermysql.db 等进行了 DML 更改。表,然后我们可以发出这个语句让 MySQL 重新读取表以使这些更改生效:

FLUSH PRIVILEGES ;

要执行CREATE USER 语句,我们需要以具有CREATE USER 权限的用户身份登录。

或者(不太理想)以具有足够权限的用户身份登录,我们可以手动发出 DML INSERT 语句向mysql.user 表添加新行,然后运行FLUSH PRIVILEGES 语句。

或者(作为最后的手段),如果我们没有任何合适用户的登录凭据,我们可以使用 --skip-grant-tables 选项重新启动 MySQL,然后更改 mysql.user 表(使用 DML INSERT和/或 UPDATE 语句),然后再次重新启动 MySQL(这次没有 --skip-grant-tables 选项。)

【讨论】:

以上是关于mysql用户创建错误42000的主要内容,如果未能解决你的问题,请参考以下文章

mysql 建库报匿名用户权限错误

无法在 mysql 或通过 ssh 创建数据库

mysql.connector.errors.ProgrammingError: 1064 (42000): 尝试创建表时 SQL 语法有错误

查看mysql表结构和表创建语句的方法,建表42000错误解决办法

在ds窗口中导入MYSQL数据库时报error 1049 (42000):Unknown database ';'这个错误

错误 1044 (42000): 拒绝用户 ''@'localhost' 访问数据库 'db'