一.进行权限管理的意义
当然是为了安全,防止删库跑路这样的事情,或者程序员的手抖.
权限管理时应该遵循以下原则:
1.只授予能满足需要的最小权限.比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
2.创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
二.mysql权限级别表权限: ‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’;
列权限: ‘Select’, ‘Insert’, ‘Update’, ‘References’;
过程权限:‘Execute’, ‘Alter Routine’, ‘Grant’;
三.mysql权限管理的两种方式
1.使用grant命令.
2.操作mysql数据库中的user表.
四.grant命令修改权限
grant all privileges on *.* to username@'%' identified by 'password';
详细解释上面这个命令:
1.ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。
2.ON 用来指定权限针对哪些库和表。
3.*.* 中前面的号用来指定数据库名,后面的号用来指定表名。
4.TO 表示将权限赋予某个用户。
5.username@’%’ 表示username用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。
6.IDENTIFIED BY 指定用户的登录密码。
7.WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
4.1.查看权限
1.查看当前用户的权限
show grants;
2.查看某一个用户的权限
show grants for 'root'@'localhost';
4.2.回收权限
revoke select on *.* from test@'%';
4.3.修改用户密码
SET PASSWORD FOR 'test'@'%' = PASSWORD('123456');
4.4.修改后刷新权限
flush privileges;
五.修改mysql中的user表 这个就不讲了看图说话(自行百度查找)
在命令行连接上mysql之后,显示所有的数据库,连接mysql数据库,查看其中的user表,然后查看user表的字段类型.可以看到其中的字段代表的意义以及可取值.
对此数据表的操作将可以直接影响到用户的权限,具体操作方式与操作其他数据表并无区别,只需查看一下字段对应的意义即可,这里不再赘述.