**## 这是Musql8的新功能**
##创建角色 不指定数据库的登录ip
create role 'manage'
#指定数据库的登录ip时本机
create role "manage1" @ "localhost"
##创建新用户
CREATE USER "manage" identified by "123456"
##这个是限定ip的远程连接。默认是远程的连接"%"
CREATE USER "manage1"@"localhost" identified by "123456"
##新加权限给用户,需要用户"root"@"localhost"才可以
GRANT SELECT on blog.ms_admin to "manage"
grant update , insert ,drop on ms_admin to "manage";
grant update , insert ,drop ,SELECT on ms_admin to "manage1"@"localhost";
##查看用户权限
SHOW GRANTS FOR "manage"
SHOW GRANTS FOR "manage1"@"localhost"
总结:
角色是权限的集合。你可以直接给用户授予访问数据库的权限,也可以通过把角色授予用户,从而把角色对数据库的访问权限全部授予给用户。而用户是数据库的使用者,我们可以通过给用户授予访问数据库中资源的权限,来控制使用者对数据库的访问,消除安全隐患。需要注意的是,角色在刚刚创建出来的时候,默认是没有激活的,需要手动激活,才可以使用。
如果你把角色赋予了用户,那么用户就拥有了角色的全部权限。但是,如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限。我知道,有一些程序员喜欢使用 Root 超级用户来访问数据库,完全把权限控制放在应用层面实现。这样当然也是可以的。不过我建议你,尽量使用数据库自己的角色和用户机制来控制访问权限,不要轻易用 Root 账号。因为 Root 账号密码放在代码里面不安全,一旦泄露,数据库就会完全失去保护。而且,MySQL 的权限控制功能十分完善,应该尽量利用,可以提高效率,而且安全可靠。