MySQL数据库的授权原则
本文讲述了如何为用户分配合适的权限,几个重要的原则就是给用户分配仅够使用的最小权限,尽量不在影响整个数据库的user表中分配权限。有些权限是有危险的,例如FILE、GRANT、PROCESS,管理员要慎重使用。 服务器重新启动的情况 当MySQLd启动时,所有的授权表内容被读进存储器并且从那时开始生效。 被服务器立即应用的情况 用GRANT、REVOKE或SET PASSWord对授权表施行的修改会立即被服务器注意到。 直接修改授权表的情况 如果你手工地修改授权表(使用INSERT、UPDATE等等),你应该执行一个FLUSH PRIVILEGES语句或运行mysqladmin flush-privileges告诉服务器再装载授权表,否则你的改变将不生效,除非你重启服务器。 对现有客户连接的影响情况 当服务器注意到授权表被改变了时,现存的客户连接有如下影响: ·表和列权限在客户的下一次请求时生效。 ·数据库权限改变在下一个USE db_name命令生效。 ·全局权限的改变和口令改变在下一次客户连接时生效。 授权原则 无论怎么小心都难免在给用户授权时留有漏洞,希望下面的内容能给你一些帮助,你一般应该遵守这些规则。 只有root用户拥有授权表的改写权 不要把授权表的改写权授予除root用户之外的其它用户(当然,如果你可以用另一个用户代替root用户进行管理,以增加安全性)。因为这样,用户可以通过改写授权表而推翻现有的权限。产生安全漏洞。 一般情况下,你可能不会犯这个错误,但是在安装新的分发, 初始授权表之后。这个漏洞是存在的,如果你不了解这时授权表的内容你可能会犯错误。 在Unix(linux)上,在按照手册的指令安装好MySQL后,你必须运行mysql_install_db脚本建立包含授权表的mysql数据库和初始权限。在Windows上,运行分发中的Setup程序初始化数据目录和mysql数据库。假定服务器也在运行。 当你第一次在机器上安装MySQL时,mysql数据库中的授权表是这样初始化的: ·你可以从本地主机(localhost)上以root连接而不指定口令。root用户拥有所有权限(包括管理权限)并可做任何事情。(顺便说明,MySQL超级用户与Unix超级用户有相同的名字,他们彼此毫无关系。) ·匿名访问被授予用户可从本地连接名为test和任何名字以test_开始的数据库。匿名用户可对数据库做任何事情,但无管理权限。 一般地,建议你删除匿名用户记录: mysql> DELETE FROM user WHERE User=""; 更进一步,同时删除其他授权表中的任何匿名用户,有User列的表有db、tables_priv和columns_priv。 另外要给root用户设置 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |