温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2023-04-27 17:36:19 来源:亿速云 阅读:122 作者:iii 栏目:开发技术

这篇“MySQL8.x使用GRANT为用户赋权时报错如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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这个选项表示该用户可以将自己拥有的权限授权给别人

    以上就是关于“MySQL8.x使用GRANT为用户赋权时报错如何解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI