博客使用的是CMD、 MySQL8.0.15
用户创建
命令
CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;
-username:你将创建的用户名
-host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
-password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
一、cmd进入mysql
二、创建用户kinghiee并设置密码
三、查询创建的用户是否存在
或者可以通过下面的命令进行查看
①:distinct一般是用来去除查询结果中的重复记录的,而且这个语句在select、insert、delete和update中只可以在select中使用。
②:mysql CONCAT()函数用于将多个字符串连接成一个字符串。
mysql CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
用户登陆
当创建完用户后接下来进行登陆,如果你在登陆中遇见这样的问题
说明:mysql8.1内部加密方式,限制了远程访问。在mysql的user表中增password的权限。
处理如下
ALTER USER 'kinghiee'@'localhost' IDENTIFIED BY '00000000' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'kinghiee'@'localhost' IDENTIFIED WITH mysql_native_password BY '00000000'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
然后退出重新登陆
接下来使用show命令看一下有那些数据库
可以发现kinghiee用户没有什么权限来看其他的数据库,只能查看information_schema数据库。为了让它能查看或操作数据库咱们可以给它进行赋予权限
用户授权
一、退出kinghiee用户,进入root用户,然后进行赋权
命令
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数据库
验证
结果可行。因为没有授予kinghiee用户insert权限,现在看一下能不能插入数据
结果提示kinghiee没有insert权限
三、赋予用户kinghiee对数据库php的insert权限,并验证
结果发现已经可以使用insert命令
四、对用户kinghiee赋予全部的权限,并验证
命令
GRANT ALL ON . TO ‘kinghiee’@‘localhost’;
发现所有数据库都可以用,并且select、update、insert等命令都可以用
查询kinghiee用户权限
root用户下
命令
show grants for kinghiee@localhost;
或者
select * from mysql.user where user=‘kinghiee’\G;
\G 的作用是将查到的结构旋转90度变成纵向
如果不用\G,则结果不清晰
如下
撤销用户kinghiee权限
命令
REVOKE privilege ON databasename.tablename FROM ‘username’@‘host’
查看
发现权限已经取消
注意
usage
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。
mysql> grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;
该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。
删除用户kinghiee
命令
delete from mysql.user where User = ‘username’
注意
删除完用户之后记得
flush privileges
作用就是刷新系统权限相关表
你可以通过一下命令查看用户权限
select * from information_schema.user_privileges;
验证1
发现mysql.user表中已经没有该kinghiee用户了
验证2
如果博客有什么错误之处,欢迎提出