经常遇到网友在QQ群或者论坛上问mysql权限的问题。今天我画空总结一下我这几年使用mysql时关于MYSQL数据库权限管理的经验,希望对使用MYSQL的用户有所帮助!mysql权限简介对mysql权限的简单理解就是MYSQL允许你做权限内的事情,不是。
经常遇到网友在QQ群或者论坛上问mysql权限的问题。今天我画空总结一下我这几年使用mysql时关于MYSQL数据库权限管理的经验,希望对使用MYSQL的用户有所帮助!
一、MYSQL权限介绍
简单理解一下mysql的权限就是mysql允许你做自己权限内的事情,不越界。例如,如果只允许您执行选择操作,则您不能执行更新操作。只允许从一台机器连接mysql,所以除了那台机器,不能从其他机器连接mysql。
那么MYSQL的权限是如何实现的呢?这就要说到mysql的两阶段验证了,下面会详细介绍:第一阶段:服务器会先检查你是否被允许连接。因为在创建用户时会添加主机限制,所以可以限制开销、一个IP、一个IP段和任何地方,并且只允许你从配置的指定地点登录。后面在实战中,我会详细说说对主机的限制。第二阶段:如果可以连接,MYSQL会检查你发送的每一个请求,看你是否有足够的权限实现。例如,如果您想要更新一个表或查询一个表,MYSQL将检查您是否拥有对表或列的权限。再比如,如果你要运行一个存储过程,MYSQL会检查你是否有权限执行这个存储过程。
MYSQL有哪些权限?从官网复制一张表来看:
MYSQL权限是如何分配的,就是表可以设置什么权限,列可以设置什么权限等等。这可以从官方文件的一个表格中得到说明:
二、MYSQL特权体验原则
访问控制主要是出于安全因素,因此需要遵循几个经验原则:
1.只授予能满足需要的最低权限,防止用户做坏事。哈哈。比如用户只需要查询,就给select权限,不要给用户update,insert,delete权限。
2.创建用户时,限制用户登录主机,通常仅限于指定的IP或intranet IP段。
3.初始化数据库时删除没有密码的用户。数据库安装时,会自动创建一些用户,这些用户默认没有密码。
4.为每个用户设置符合密码复杂性的密码。
5.定期清理不需要的用户。收回权限或删除用户。
三、MYSQL权限实战
1.授权命令的使用说明
让我们看一个例子。创建一个超级用户洪飞,只允许他在本地登录,并允许其他用户被授予权限。密码是test @飞鸿. 111
授予*上的所有权限。*洪飞@由“test@feihong.111”标识的“本地主机”,带有授予权;
GRANT命令描述:ALL PRIVILEGES是指所有权限,也可以使用select、update等权限所提到的权限。
ON用于指定权限的目标库和表。
*.*前面的*用于指定数据库名,后面的*用于指定表名。
TO表示授予用户权限。
洪飞@'localhost '表示洪飞用户,@后面是受限主机,可以是IP,IP段,域名和%,%表示任何地方。注意:此处%的版本不包括本地版本。过去,用户被设置为%以允许在任何地方登录,但是他不能在本地登录。这个和版本有关系。如果遇到这个问题,只需添加一个localhost用户。
标识者指定用户的登录密码。
使用GRANT OPTION,该选项意味着用户可以将他拥有的权限授权给其他人。注意:通常,在创建操作用户时,有人没有用Grant指定选项,这使得用户无法使用GRANT命令来创建用户或授权其他用户。
注意:GRANT可以用来给用户重复添加权限,权限是叠加的。例如,如果您先向用户添加选择权限,然后向用户添加插入权限,则用户将同时拥有选择和插入权限。
2.创建超级用户
创建一个超级用户洪飞,只允许他在本地登录,并允许其他用户被授予权限。密码是test @飞鸿. 111
授予*上的所有权限。*洪飞@由“test@feihong.111”标识的“本地主机”,带有授予权;
3。创建网站用户(程序用户)要创建一个通用程序用户,该用户可能只需要诸如选择、插入、更新、删除、创建临时表等权限。如果有存储过程,还需要EXECUTE权限,一般指定内网段192.168.100。
GRANT USAGE,SELECT,INSERT,UPDATE,DELETE,SHOW VIEW,CREATE TEMPORARY TABLES,EXECUTE ON `test'。*发给网络用户@'192.168.100。“%”由“test @ feihong.111”标识;
4。创建普通用户(仅具有查询权限)授权使用,选择“测试”。*对公众@'192.168.100。“%”由“public @ feihong.111”标识;
5。刷新权限使用此命令使权限生效,尤其是当您更新或删除那些权限表user、db、host等时。过去,权限在使用grant后没有更新。只要对权限进行更改,您就可以养成使用FLUSH PRIVILEGES命令刷新权限的习惯。
刷新权限;
6。查看权限您可以使用以下命令轻松查看用户的权限:
显示“web user”@ ' 192 . 168 . 100的授权。%';
7。回收权限恢复之前创建的webuser用户的删除权限,并使用以下命令。
撤销对测试的删除。*来自“网络用户”@'192.168.100。%';
8。删除用户注意不要用DELETE直接删除用户,因为删除后用户的权限并没有被删除,同名的新用户会继承之前的权限。正确的方法是使用DROP USER命令删除用户。例如,删除“web用户”@'192.168.100。' % '用户,使用以下命令:
删除用户' webuser'@'192.168.100。%';
您可以使用percona-toolkit工具中的pt-show-grants工具来帮助管理mysql权限。具体用法见博文http://blog.chinaunix.net/uid-20639775-id-3207926.html。
下面是/d/file/04/qfmugndao518205.html URL = jivv 0 ytsgyfrabvx 6 eilh G5 pggttegy 28 ejn-PRFXZMHCJP-SKHUNMM-otcaujswhkof 9 hkszmvmcrbu 0 f 4 I _用法说明
官方对usage的解释: USAGE “无权限”的同义词 当您想要创建一个没有权限的用户时,可以指定USAGE。 要看自己有哪些权限,执行SQL: SHOW GRANTS 在我的数据库下有一下几行: GRANT ALL PRIVILEGES ON `everalan`.* TO 'everalan'@'%' WITH GRANT OPTION 可以看出,不知USAGE一种权限,所以,你才会正常的执行查删等操作 usage的字面意思就是用法,其实就是让你这个用户可以像个用户似的登录,但是除了能看到有那写数据库外,什么权限也没有adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!