Mysql 权限的那些事儿

mysql用户认证二个步骤:

1.mysql首先进行身份认证,身份认证通过IP地址和和用户联名进行确认,root@localhost表示root用户只能从本地进行连接才可以通过认证,此用户从其它任何主机进行的连接都会被拒绝,也就是说同一个用户,如果来自不同的IP地址,则视为不同用户,如root@localhostroot@192.168.1.1被视为二个不同的用户。

2.对通过认证的用户赋于相应的权限

3.权限存取的二个过程中会用到mysql(安装mysql时默认创建的)这个数据库中的user,db,host这三个最重要的权限表。先从user表中的host,user,password这三个字段中判断连接的IP,用户名,密码是否存在于表中,如果存在则通过身份验证,否则拒绝连接。如果通过身份验证,刚按照以下权限表的顺序得到数据库权限:user--->db--->tables_priv--->columns_priv,在这几个权限表中权限依次递减,全局权限覆盖局部权限。

 

一:创建用户:(grant授权法和直接操作权限表法)

示例:grant授权法

grant select on *.* to z1@localhost;

grant select on test1.* to z1@localhost;

grant all privileges on *.* to z1@localhost with grant option;

grant all privileges on *.* to z1@localhost identified by '123' with grant option;

grant select,insert,update on test1.* to 'z2'@'%' identified by '123';

grant super,process,file on *.* to 'z3'@'%'; ##管理权限(不能授于单个数据库,只能跟*.*)

grant usage on *.* to 'z4'@'localhost';  ##使用权限

示例:直接操作权限表法

insert into db (host,db,user,select_priv) values ('%','test1','z6','Y');

 

二:查看权限

1.show grants for z6@host;  ##host可以不写,默认为%,但请注意%默认是不包含localhost在内的,host值为%或为空都代表所有主机可连接,但不包含localhost在内

2.mysql 5.0后的版本也可通过数据库information_schema的表SCHEMA_PRIVILEGES查看权限

select * from schema_privileges where grantee="z1@'localhost";

select * from user where user='z1';

三:更改权限

grant更改权限或revoke回收权限

revoke select,insert on *.* from z2@localhost;

usage权限不能被回收,revoke并不能删除用户

四:修改密码

mysqladmin -u username -h host_name password "newpasswords"

set password for 'z1'@'$' = password('xxxxx');   ##password()函数

set password = password('xxxxx');  ##修改当前自己密码(测试时失败:ERROR 1133 (42000): Can't find any matching row in the user table)

grant usage on *.* to 'z1'@'%' identified by '1234';

update mysql.user set password=password('1234') where user ='root'; ##要记得flush privileges刷新权限

 

五:删除帐号

drop帐号和修改权限表

drop user z2@localhost;

发布了12 篇原创文章 · 获赞 3 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览