博客使用的是CMD、 MySQL8.0.15

用户创建

命令

CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;
-username:你将创建的用户名
-host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
-password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

一、cmd进入mysql

mysql 赋予用户删除视图的权限 mysql8删除用户_删除用户


二、创建用户kinghiee并设置密码

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_02


三、查询创建的用户是否存在

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_03


或者可以通过下面的命令进行查看

mysql 赋予用户删除视图的权限 mysql8删除用户_mysql 赋予用户删除视图的权限_04

①:distinct一般是用来去除查询结果中的重复记录的,而且这个语句在select、insert、delete和update中只可以在select中使用。
②:mysql CONCAT()函数用于将多个字符串连接成一个字符串。
mysql CONCAT(str1,str2,…)                        
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

用户登陆

当创建完用户后接下来进行登陆,如果你在登陆中遇见这样的问题

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_05


说明:mysql8.1内部加密方式,限制了远程访问。在mysql的user表中增password的权限。

处理如下

mysql 赋予用户删除视图的权限 mysql8删除用户_删除用户_06

ALTER USER 'kinghiee'@'localhost' IDENTIFIED BY '00000000' PASSWORD EXPIRE NEVER; #修改加密规则 

ALTER USER 'kinghiee'@'localhost' IDENTIFIED WITH mysql_native_password BY '00000000'; #更新一下用户的密码 

FLUSH PRIVILEGES; #刷新权限

然后退出重新登陆

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_07


接下来使用show命令看一下有那些数据库

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_08


可以发现kinghiee用户没有什么权限来看其他的数据库,只能查看information_schema数据库。为了让它能查看或操作数据库咱们可以给它进行赋予权限

用户授权

一、退出kinghiee用户,进入root用户,然后进行赋权

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_09

命令

GRANT privileges ON databasename.tablename TO ‘username’@‘host’ ;

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO ‘username’@‘host’ WITH GRANT OPTION;

二、给用户kinghiee授权select权限在php上

也就是说,kinghiee只能用select命令操作php数据库

mysql 赋予用户删除视图的权限 mysql8删除用户_删除用户_10


验证

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_11


mysql 赋予用户删除视图的权限 mysql8删除用户_删除用户_12


结果可行。因为没有授予kinghiee用户insert权限,现在看一下能不能插入数据

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_13


结果提示kinghiee没有insert权限

三、赋予用户kinghiee对数据库php的insert权限,并验证

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_14


mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_15


结果发现已经可以使用insert命令

四、对用户kinghiee赋予全部的权限,并验证

命令

GRANT ALL ON . TO ‘kinghiee’@‘localhost’;

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_16


mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_17


发现所有数据库都可以用,并且select、update、insert等命令都可以用

查询kinghiee用户权限

root用户下
命令

show grants for kinghiee@localhost;

mysql 赋予用户删除视图的权限 mysql8删除用户_用户授权_18


或者

select * from mysql.user where user=‘kinghiee’\G;

\G 的作用是将查到的结构旋转90度变成纵向

mysql 赋予用户删除视图的权限 mysql8删除用户_撤销用户权限_19


如果不用\G,则结果不清晰

如下

mysql 赋予用户删除视图的权限 mysql8删除用户_用户授权_20

撤销用户kinghiee权限

命令

REVOKE privilege ON databasename.tablename FROM ‘username’@‘host’

mysql 赋予用户删除视图的权限 mysql8删除用户_mysql 赋予用户删除视图的权限_21


查看

mysql 赋予用户删除视图的权限 mysql8删除用户_用户授权_22


发现权限已经取消

注意

usage

连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。

mysql> grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;

该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。

删除用户kinghiee

命令

delete from mysql.user where User = ‘username’

mysql 赋予用户删除视图的权限 mysql8删除用户_mysql 赋予用户删除视图的权限_23

注意
删除完用户之后记得

flush privileges
作用就是刷新系统权限相关表

mysql 赋予用户删除视图的权限 mysql8删除用户_用户授权_24


你可以通过一下命令查看用户权限

select * from information_schema.user_privileges;

mysql 赋予用户删除视图的权限 mysql8删除用户_用户授权_25


验证1

mysql 赋予用户删除视图的权限 mysql8删除用户_用户创建_26


发现mysql.user表中已经没有该kinghiee用户了

验证2

mysql 赋予用户删除视图的权限 mysql8删除用户_mysql 赋予用户删除视图的权限_27

如果博客有什么错误之处,欢迎提出