我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 server version for the right syntax to use near 'identified by '123456'' at line 1

正确的grant方式

create user test@'localhost' identified by '123456';
grant all privileges on test.* to test@'localhost';
flush privileges;

MySQL8.0密码登录不上

alter user test@'localhost' identified with mysql_native_password by '123456';

补充:MySQL ERROR 1064 (42000)——不管怎样grant总是报错,怎么回事?

用过MySQL的朋友都知道,经常会有一些grant(授权)操作,不知道你有没有遇到过这样的问题。

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’’ at line 1

MySQL grant的SQL

粘贴到终端执行,报错!
每个字母敲后执行,又报错!
反复确认很多遍执行,又又报错!

都要疯了,怎么办。别急,接着看文章。

版本的不同导致

首先,你先检查一下你的MySQL版本, 大多数执行报错的MySQL版本是8.0的,通过记忆甚至盲打命令都不层报错的,估计通常都是用的最多的5.7了。信不信呢?

用真实数据测试

1.先用MySQL 8.0试一下

mysql> 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 server version for the right syntax to use near 'identified by '123456'' at line 1

报错了

2.再用MySQL 5.7试一下

mysql> grant all privileges on test.* to test@'%' identified by '123456';    
Query OK, 0 rows affected, 1 warning (0.08 sec)
mysql> flush privileges;

成功。

细心的朋友有没有注意到返回结果里有一个信息:1 warning,是什么内容呢?

mysql> show warnings;
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                            |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

原来在MySQL5.7的时候,官方就提示了,这个语法SQL将要被弃用了。

正确的执行赋权

那么在MySQL8.0版本及以后,我们如何正确执行grant呢?

先创建用户,再赋予授权。

mysql> create user test@'localhost' identified by '123456';
Query OK, 0 rows affected (0.10 sec)

mysql> grant all privileges on test.* to test@'localhost';
Query OK, 0 rows affected (0.17 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.18 sec)

这个方法也适用MySQL5.7版本,所以建议大家以后使用这种方式赋权,一键建用户加赋权官方已经弃用了。

到此这篇关于MySQL在grant时报错ERROR 1064 (42000)的文章就介绍到这了,更多相关mysql  grant报错内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C或C++报错:ldreturned1exitstatus报错的原因及解决方法

这篇文章主要介绍了C或C++报错:ldreturned1exitstatus报错的原因及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-02-24

mysql创建触发器报错的原因及解决方法是什么

MySQL创建触发器报错的原因有很多种,常见的有以下几种情况:语法错误:在创建触发器的语句中可能存在语法错误,比如缺少分号、括号不匹配等。解决方法是检查语法是否正确,确保语句的完整性和正确性。触发器名重复:如果已经存在同名的触发器,再次创建
2023-10-24

maven文件报错的原因及解决方法是什么

Maven文件报错的原因可能有很多种,常见的原因包括:1. 依赖问题:Maven文件中的依赖可能存在版本冲突、缺失或错误的依赖等问题,导致编译错误或运行时错误。解决方法:检查pom.xml文件中的依赖配置,确保依赖的版本正确并且没有冲突。可
2023-09-23

java报错:无法加载主类的原因及解决方法

源程序:public class Demo{ public static void main(String args[]){ System.out.println("HelloWorld"); }}通常情况下,在用本机进行编译运行ja
java报错:无法加载主类的原因及解决方法
2015-10-25

MySQL查询出现1055错误的原因及解决方法

目录报错内容如下报错原因解决办法总结当SQL语句查询报1055错误时的解决android方法报错内容如下报错原因1.SQL语句中使用了group by,并且不需要分组的字段没有加上any_value()函数2.mysql数据库版本是大
2023-05-19

vscode编译报错的原因及解决方法是什么

VSCode编译报错的原因可能有很多,以下是常见的原因及解决方法:代码错误:代码中可能存在语法错误、拼写错误、缺少分号等问题。解决方法是仔细检查代码并修复错误。缺少依赖项:代码中使用了某些库或框架,但未正确安装或引入相关依赖项。解决方法是使
2023-10-23

redis登录报错的原因及解决方法是什么

登录redis报错的原因可能有以下几种:密码错误:如果在配置文件中设置了密码,但是输入的密码不正确,登录时会报错。没有权限:可能是因为用户没有足够的权限来登录redis。网络连接问题:如果网络连接不稳定或者redis服务没有启动,登录时
redis登录报错的原因及解决方法是什么
2024-04-09

安装java时出现1603错误的原因及解决方法

错误情况:以前安装过java1.7,现在想升级到1.8版本,卸载了1.7,但是在安装java1.8的时候,jdk可以顺利安装,额外的jre却频频提示1603错误。解决方法:jre是由java编写的,会调用java程序来安装,由于以前java1.7的环境变量依然
安装java时出现1603错误的原因及解决方法
2020-05-30

sqlite删除表报错的原因及解决方法是什么

当尝试删除一个不存在的表时,SQLite会报错,提示无法删除表格。这通常是因为表格名称拼写错误或者表格不存在的原因导致的。解决方法:确保要删除的表格名称拼写正确,与数据库中的实际表格名称完全一致。在执行删除表格的操作之前,可以先查询数据
sqlite删除表报错的原因及解决方法是什么
2024-04-10

MySQL8.0报错Public Key Retrieval is not allowed的原因及解决方法

MySQL8.0中“PublicKeyRetrievalisnotallowed”错误通常由TLS/SSL未启用、公钥检索已禁用或网络配置问题引起。解决方法包括启用TLS/SSL、启用公钥检索、检查网络配置、使用SSH隧道、检查服务器日志或联系服务器管理员。
MySQL8.0报错Public Key Retrieval is not allowed的原因及解决方法
2024-04-02

MySQL8.0报错Public Key Retrieval is not allowed的原因及解决方法

目录方式一:方式二:这个问题出现原因,我在升级了mysqwww.lsjlt.coml之后发现连mysql时后台报错,报的就是标题这个错,然后就上网查资料,官网文档机翻后原因如下:如果用户帐户使用sha256_密码认证,则在传输过程中必须保
MySQL8.0报错Public Key Retrieval is not allowed的原因及解决方法
2024-02-01

编程热搜

目录