目录
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这个选项表示该用户可以将自己拥有的权限授权给别人
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
关键词: