本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
MySQL在grant时报错ERROR 1064 (42000)的原因及解决方法
chenguangming9 · 173浏览 · 发布于2022-08-26 +关注

网上查到的grant方式大多会报错,主要原因是MySQL版本8.0后不能再使用原来的方式,这篇文章主要介绍了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版本,所以建议大家以后使用这种方式赋权,一键建用户加赋权官方已经弃用了。


相关推荐

使用SELECT语句检索数据

奔跑的男人 · 806浏览 · 2019-06-03 09:33:43
部署MySQL延迟从库的几个好处

吴振华 · 666浏览 · 2019-05-14 21:57:51
MongoDB凭什么跻身数据库排行前五?

iamitnan · 723浏览 · 2019-06-18 10:04:56
Oracle开启和关闭的几种模式

qq2360248666 · 754浏览 · 2019-06-04 10:18:47
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页