验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

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

阅读:421 来源:乙速云 作者:代码code

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

      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这个选项表示该用户可以将自己拥有的权限授权给别人
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>