MySQL8.x使用GRANT为用户赋权时报错的解决

目录
  • MySQL8.x使用GRANT为用户赋权时报错
    • 问题描述
    • 原因分析
    • 解决方案
  • mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
  • 总结

MySQL8.x使用GRANT为用户赋权时报错

问题描述

在安装 MySQL 8.x 的过程中,往往需要为 MySQL 中的一些账户赋予远程访问的权限。

在 MySQL 5.x 的版本中的操作方式

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

在 MySQL 8.x 中版本中按照以上操作

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1

原因分析

通过官网文档的指引可以知道,新版本的 MySQL 8.x 版本已经将创建账户和赋权的方式分开导致以上的命令在 MySQL 8.x 上执行报语法错误。

解决方案

最终解决方案

# 创建账户
CREATE USER '用户名'@'访问主机' IDENTIFIED BY '密码';
# 为创建的账户赋权
GRANT '权限列表' ON '数据库' TO '用户名'@'访问主机';
GRANT ALL ON *.* TO 'root'@'%';
# 刷新
FLUSH PRIVILEGES;

mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'

查询mysql具体版本

SELECT @@VERSION

问题分析:

mysql版本8.0.13,在给新用户授权时,发生了变化:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by  'password' with grant option' at line 5, Time: 0.000000s

出错的语句:

grant all privileges on *.* to 'root'@'172.16.10.203' identified by  'password' with grant option

修正后的语句:分开三次执行

#创建账户
create user 'root'@'172.16.10.203' identified by  'password'
#赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant all privileges on *.* to 'root'@'172.16.10.203' with grant option
#改密码&授权超用户,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;

原因分析:

此版的的mysql版本把将创建账户和赋予权限分开了。

创建账户::create user ‘用户名'@‘访问主机' identified by ‘密码';
赋予权限:grant 权限列表 on 数据库 to ‘用户名'@‘访问主机' ;
with grant option这个选项表示该用户可以将自己拥有的权限授权给别人

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解mysql8.0创建用户授予权限报错解决方法

    问题一: 会报错的写法: GRANT ALL PRIVILEGES ON *.*  'root'@'%' identified by '123123' WITH GRANT OPTION; 以下是正确的写法: grant all privileges on *.* to 'root'@'%' ; 可见,在授权的语句中需要去掉 IDENTIFIED BY 'password'; 单独授予某种权限的写法: GRANT SELECT ON oilsystem.input TO 'u5'@'localh

  • MySQL在grant时报错ERROR 1064 (42000)的原因及解决方法

    网上查到的grant方式大多会报错,主要原因是MySQL版本8.0后不能再使用原来的方式 查询MySQL版本 SELECT version(); 在8.0版本下 grant all privileges on test.* to test@'%' identified by '123456'; 报错 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your

  • 解决mysql的赋权操作之GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION问题

    一种情况 mysql的赋权操作:GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION: mysql赋权操作: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; flush privileges;GRANT:赋权命令ALL PRIVILEGES:当前用户的所有权限ON:介

  • MySQL授权命令grant的使用方法小结

    MySQL授权命令grant的使用方法: 本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.*

  • Mysql8创建用户及赋权操作实战记录

    目录 1.进入mysql 2.创建用户 3.给用户赋权 4.查看用户权限 5.撤销用户权限 6.删除用户 7.查询所有用户及其权限 附:查看用户权限 总结 1.进入mysql mysql -uroot -p 2.创建用户 create user 'testuser1'@'%' identified by '123456'; 这里表示创建一个不限制ip登录的用户 testuser1 该用户的密码是 123456 %代表不限制ip登录 刷新权限,每一次权限更改后都刷新一下 flush privile

  • Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法

    添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER" PROFILE "DEFAULT" IDENTIFIED BY "TESTER" DEFAULT TABLESPACE "TESTDATA" TEMPORARY TABLESPACE "TESTTEMP" ACCOUNT UNLOCK; 赋权(说实话,这些权限是开发中使用的权限,如果用户生产环境,请自行对

  • MySQL 8.0.18给数据库添加用户和赋权问题

    1. 首选使用root用户登录数据库  mysql -uroot -p 2. 使用mysql 数据库 USE mysql; 3. 为mysql创建用户:dev 密码为:dev12345 CREATE USER dev IDENTIFIED BY 'dev12345'; 4. 查看下用户dev的权限 SELECT * FROM user WHERE user='dev' ; SHOW GRANTS FOR dev; 5. 给用户dev在数据库名为dev_db上赋EXECUTE(执行存储过程),IN

  • postgresql 赋权语句 grant的正确使用说明

    grant select on all tables in schema public to username; 此句是有效的复制语句 PG中有schema的概念, 以下的语句就是不行 网上得来终觉浅,错误比较多,还是要自己试试才行. 补充:postgresql关于访问视图需要的权限 某个用户访问一个视图,这个用户需要具备这个视图的schema的usage和这个视图本身的select权限,如果视图的基表来自其他schema,可能还需要其他schema的usage权限(根据postgresql改造

  • Spring Cloud下实现用户鉴权的方案

    目录 一.整体架构 二.实现步骤 三.其它问题 四.完整代码 Java下常用的安全框架主要有Spring Security和shiro,都可提供非常强大的功能,但学习成本较高.在微服务下鉴权多多少少都会对服务有一定的入侵性. 为了降低依赖,减少入侵,让鉴权功能相对应用服务透明,我们采用网关拦截资源请求的方式进行鉴权. 一.整体架构 用户鉴权模块位于API GateWay服务中,所有的API资源请求都需要从此通过. 做身份认证,通过则缓存用户权限数据,不通过返回401 做用户鉴权,比对当前访问资源

  • docker容器非root用户提权的问题解决

    目录 一.使用非root用户启动docker容器 二.验证非root用户启动容器的安全性 本系列之前的文章中使用root用户安装docker,并在root用户下启动docker守护进程,容器也是在root用户下启动运行的.那么问题就出现了:我们的容器服务进程都是root用户权限,使用数据卷的方式想挂载哪个目录就挂载那个目录:想修改挂载目录下的哪个文件,就修改哪个文件. 那么我们本文带大家使用非root用户来启动docker容器,是否就安全了呢? 我们先不说答案,让我们一起来通过实验,来解答我们的

  • Android扫描二维码时出现用户禁止权限报错问题解决办法

    Android扫描二维码时出现用户禁止权限报错问题解决办法 当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { mCameraManager.openDriver(); } catch (Exception e) { //当用户手动禁止摄像头权限时,防止系统崩溃 AlertDialog.Builder builder=new AlertDialog.B

  • Oracle用户被锁的原因及解决办法

    在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. 2.查看具体的被锁时间 SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE TEST 2009-03-1

  • Yii2针对游客、用户防范规则和限制的解决方法分析

    本文实例分析了Yii2针对游客.用户防范规则和限制的解决方法.分享给大家供大家参考,具体如下: 最近在用Yii2.0做项目,其中需要实现一个功能:没有登录不能访问部分页面,即游客身份访问限制.查了半天资料,终于找到答案.解决方法如下: 在access里,access即访问的意思,其中有个配置项: 'only'=>['login','about'] 这是什么意思呢,意思是仅仅在login.about两个action内起作用,即当action 是login.about时,会进入rules里做下一步验

随机推荐