MySQL中DCL语法的解析学习

MySQL中DCL语法的解析学习

mysql(DB):
	global_grants:全局权限表(忘记root密码时候,启动server时跳过整个权限表'--skip-grant-tables')
	user:管理整个mysql的用户信息表
	tables_priv:表级权限信息表
	columns_priv:字段级权限信息表
	....
1.使用root用户创建’stranger02’用户,并且完成授权的步骤
1.登录mysql
    mysql -uroot -p
2.查看root的grant_priv权限
    select user,grant_priv from mysql.user;
    +------------------+------------+
    | user             | grant_priv |
    +------------------+------------+
    | root             | Y          |
    | stranger01       | N          |
    | mysql.infoschema | N          |
    | mysql.session    | N          |
    | mysql.sys        | N          |
    | user1            | N          |
    +------------------+------------+
3.如果root用户grant_priv的值为No,则需要将其设置为Yes
    update mysql.user grant_priv='Y' where user='root';
	注意:一定要加上where语句,否则有可能将grant_priv这一整个列的值都设置成Yes
4.如果root用户grant_priv的值是Yes,表明可以授权,接下来将root用户权限设置成真正意义上的超级管理员
    update mysql.user set host='%' where user='root';
    将root用户的host设置为'%',是为了保证root用户拥有在所有ip或host都能连上该数据库的权限.这样root用户在给其他创建的用户授权的时候,才可以赋予其他用户从任意host或ip访问该数据库的权限.这里就体现出了只能给其他用户赋予自己有的权限,如果自己没有的权限则无法给其他用户赋予.
5.给root用户赋予所有的权限
    grant all privileges on *.* to 'root'@'%';
6.刷新一下权限
    flush privileges; 
    为什么要刷新权限?
    权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中.为了加快登录验证效率,权限信息一般会存储在内存中.我们刷新权限是为了将磁盘上mysql库里的权限信息刷新到内存中去,使我们的授权尽早生效.
7.完成以上步骤后就可以安心使用root用户创造和授权了.
	7.1 创建用户'stranger02',可以在任意host或ip上凭借密码'123456'登录mysql
	create user 'strange02'@'%' identified by '123456' 
	7.2 赋予用户'stranger02'对某个数据库中某张表查找和插入的权限
	grant select,insert on database_name.table_name to 'stranger02'@'%';
	

2.权限的回收

0.权限信息一般什么时候会加载到内存?
	1.server启动
    2.flush privileges,将磁盘的mysql库里的权限信息刷新到内存
    3.grant 语句操作后,新的权限信息直接加载到内存
1.查看当前用户的权限
	show grants;
	show grants for 'user_name'@'host';
2.回收用户的具体权限
	revoke privilege_name on db_name.tb_name from 'user_name'@'host';
	flush privileges;
	#一般回收具体的权限前,先查看一下该用户当前拥有的权限,只有回收赋予过的权限才有效.
3.删除用户(也可以看做是对用户所有的权限进行回收)
	delete from mysql.user where user='user_name' and host='host_name';
	或者
	drop user 'user_name'@'host';
	
Tips:
	一、限管理基本原则是:满足需要的最小权限
	二、判断用户是否能登录mysql服务的具体流程
        1.查看mysql端口是否被被占用(默认是3306/3307)
        	netstat -ano|findstr '3307'  (-ano : all number own)
        2.检查用户名和密码是否正确
        	mysql -uusername -p 
        3.检查当前用户的权限 
        	show grants;
        4.验证权限
        	例如建表: create table tb_name (.....);
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值