mysql权限管理
2018-07-07 本文已影响10人
黄二的NPE
权限管理基本概念
- 我们可以把MySQL看做是一个工厂,db就是其中的一个个仓库,比如有A仓库,B仓库等等,而我们的表啊,索引啊什么的就是仓库里面的货物。
- MySQL有一套严格的权限管理制度,那什么是权限管理,为什么要有权限管理?MySQL的用户中,有些用户只需要查看MySQL数据,不需要往MySQL添加数据和删除数据,而有些用户不止可以看数据,还可以增加和删除数据,如果我们都给所有用户同样的权限,那么有些只需要看数据库的用户不小心误操作了,把数据库删除了怎么办?所以MySQL把权限进行细化,并把细化后的权限按需分配用户。(细化后的权限有:查询数据库,添加数据库,删除数据库,更新数据库,添加表,删除表...)
- 现在我们知道user的出现是为了权限的细化,但是我们再创建user的时候,有时候会发现user后面还会跟着@host,那这又是怎么回事呢?host是主机的意思,与MySQL打交道的多是一些特定的机器,这些机器有着特定的ip,我们可以限定某些ip的权限,比如限定内网ip才能对数据库进行操作,如果不这么做,可能某些不法分子得到了数据库的账号密码,然后就可以对数据库为所欲为了。
用户管理
- 创建用户
create user huang identified by 'Huang123!'
- 创建一个有特定主机的用户
create user huang@10.10.123.1 identified by 'Huang123!'
- 修改密码
alter user huang identified by 'Huang123@'
- 查看当前用户
select user();
- 删除用户
drop user huang
- 查询所有的用户(仅限于管理员用户)
select * from mysql.user;
权限管理
- 授予全部权限
grant all privileges on *.* to huangzp
- 授予某个数据库,某个表,某个权限
grant select on test.chatting_log_201702 to huangzp1;
- 回收某个权限
revoke all privileges on test.chatting_log_201702 from huangzp1;
- 授权给某个未存在的用户并且创建用户
grant all privileges on test.* to huangzp3@localhost identified by 'Huangzp123!';
- 授权给某个用户并且这个用户可以把权限授予他人
grant select on test.chatting_log_201702 to huangzp3 identified by 'Huangzp3!' with grant option;
- 如果我们想看数据库中,db,tables的权限管理,可以用管理员用户查看
select * from mysql.db
select * from mysql.tables_priv