解决mysql中 you are not allowed to create user with grant 的问题

失败的代码:

 mysql> grant update on *.* to 'user1';
ERROR 1410 (42000): You are not allowed to create a user with GRANT

正确的代码 :
mysql> grant reload on *.* to 'user1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select  on db2.* to 'user1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

这是我的报错原因,没有加localhost (主机名)

其他情况:

这里说的 给远程主机授权,报这个错误,无权限的情况怎么处理:

http://t.csdn.cn/vydKv 

重点代码整理如下:


     修改root用户的 host 为可以访问所有主机(打造一个真正的超级管理员),然后更新权限为拥有所有的权限,这里是必须要更新的,要不然还会报错。

1.    

mysql> update mysql.user set host='%' where user='root' ;

    Query OK, 0 rows affected (0.00 sec)

    Rows matched: 1  Changed: 0  Warnings: 0

2. 
mysql> flush privileges ;  //刷新权限 不刷新直接操作后续代码。会报错,无权限。 

mysql> grant all privileges on *.* to 'root'@'%' ;  // 授予可管理所有数据库的所有表;

// 给其他用户授予权限
mysql>  grant select  on db2.* to 'user1'@'localhost' with grant option ;

//补充说明:

关于1: 

所有root用户连接中会有  ' mysql'  数据库 ,所以数据库.表名的 代码为 mysql.user 。

mysql 中的user 表,即用户表,存储着所有用户的相关信息。user表很多列,获取常用字段展示,如下图:

 

// 图片为 Navicat 软件

### 解决 MySQL ERROR 1410 (42000) 创建用户时权限不足的问题 #### 错误原因分析 在 MySQL 中遇到 `ERROR 1410 (42000): You are not allowed to create a user with GRANT` 的原因是当前执行此操作的账户缺乏足够的权限来创建新用户并授予其权限[^1]。 #### 验证现有权限 为了确认是否有权创建用户和分配权限,可以先查看当前用户的权限列表: ```sql SHOW GRANTS FOR CURRENT_USER; ``` 如果结果显示缺少必要的全局管理权限,则需要联系具有更高权限的管理员来进行下一步的操作。 #### 使用具备适当权限的账号登录 确保使用拥有足够权限(如 `CREATE USER`, `GRANT OPTION`)的超级用户或管理员身份连接到 MySQL 数据库服务器。通常情况下,默认安装后的 root 用户会自动获得这些特权。 #### 修改默认认证插件配置 对于 MySQL 8.0 版本及以上,默认的身份验证方式变更为 `caching_sha2_password` ,这可能导致某些客户端工具无法正常工作。可以通过修改 my.cnf 文件中的 `[mysqld]` 段落下的参数调整回旧版的安全算法: ```ini default_authentication_plugin=mysql_native_password ``` 重启服务使更改生效之后再尝试重新建立连接[^5]。 #### 正确命令格式示例 以下是正确创建用户并赋予特定数据库访问权限的例子: ```sql -- 创建新用户并指定密码 CREATE USER 'newuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; -- 授权该用户对某个具体数据库的所有操作权利 GRANT ALL PRIVILEGES ON databasename.* TO 'newuser'@'localhost'; ``` 注意,在这里并没有在一个单独的 SQL 语句里同时完成创建用户与授权的动作;而是分成了两个独立步骤处理。这样做不仅能够避免触发上述提到的那个错误提示,而且也更符合安全最佳实践的要求——即最小化每次变更所带来的影响范围[^2]。 #### 确认主机名一致性 另外需要注意的是,创建用户时所定义的主机地址应当与实际应用环境中用来发起请求的那一端相匹配。如果不一致的话可能会引起其他类型的权限验证失败问题。例如,如果是在本地测试环境内运行程序,则应该把 `'%'` 替换成 `'localhost'` 或者具体的 IP 地址[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值