解决Mysql8的远程权限问题

mysql版本8及以上的,对于出现以下的情况时,

Access denied for user 用户名@% to database 数据库名

需要使用

#先创建一个用户
create user 用户名@% identified by 123456;

#再进行授权
grant all privileges on *.* to 用户名@% with grant option;

的方式来更改对应的用户权限;

而mysql版本8以下的则使用

mysql> grant all privileges on *.* to 用户名@% identified by 123456;

的方式来更改权限;

并且重要的是,更改权限时,必须要使用权限更高的用户,比如root@localhost这种之下,再使用上述的命令语句,不然就会出现以下报错:

Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

而使用高权限的用户进行命令语句操作时就可以正确执行:

mysql> grant all privileges on *.* to 对应的用户名@%  with grant option;
Query OK, 0 rows affected (0.03 sec)

再刷新权限就OK了:

mysql> flush privileges;
--执行结果如下:
Query OK, 0 rows affected (0.01 sec)

再切换到你已经改好权限的用户,在这个用户里创建你需要的数据库就行了:

--创建数据库
mysql> create database `JPJ`;
Query OK, 1 row affected (0.01 sec)

--使用这个数据库
mysql> use JPJ;
Database changed

关于登录上mysql,我选择使用cmd命令来操作:

#先找到你的电脑的mysql应用程序的当前目录:以下为我的举例:
C:Users>cd Program FilesMySQLMySQL Workbench 8.0

#再使用下列方式来登录你的mysql账号:
C:UsersProgram FilesMySQLMySQL Workbench 8.0 mysql -u 你的用户名 -p

#退出当前mysql用户的方式:
mysql> exit;

注:以上内容仅出于解答个人疑问的原因而写,若有错误存在,还望各位大佬纠正!

2021-11-23 晚作

经验分享 程序员 微信小程序 职场和发展