MySQL安全性指南(3)(转)
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-03-16
服务器: %mysql -u fred -pcocoa samp_db ERROR 1045: Access denied for user: ''fred@localhost'' (Using password: YES) 为什么? 原因是: 先考虑一下mysql_install_db如何建立初始权限表和服务器如何使用user表记录匹配客户连接。在你用mysql_install_db初始化你的数据库时,它创建类似这样的user表: Host User localhost pit.snake.net localhost pit.snake.net root root 头两个记录允许root指定localhost或主机名连接本地服务器,后两个允许匿名用户从本地连接。当增加fred用户后, Host User localhost pit.snake.net localhost pit.snake.net %.snake.net root root fred 在服务器启动时,它读取记录并排序它们(首先按主机,然后按主机上的用户),越具体越排在前面: Host User localhost localhost pit.snake.net pit.snake.net %.snake.net root root fred 有localhost的两个记录排在一起,而对root的记录排在第一,因为它比空值更具体。pit.snake.net的记录也类似。所有这些均是没有任何通配符的字面上的Host值,所以它们排在对fred记录的前面,特别是匿名用户排在fred之前。 结果是在fred试图从localhost连接时,Host列中的一个空用户名的记录在包含%.snake.net的记录前匹配。该记录的口令是空的,因为缺省的匿名用户没有口令。因为在fred连接时指定了一个口令,由一个错配且连接失败。 这里要记住的是,虽然用通配符指定用户可以从其连接的主机是很方便。但你从本地主机连接时会有问题,只要你在table表中保留匿名用户记录。 一般地,建议你删除匿名用户记录: mysql> DELETE FROM user WHERE User=""; 更进一步,同时删除其他授权表中的任何匿名用户,有User列的表有db、tables_priv和columns_priv。 附录2 使一个新的MySQL安装更安全 在你自己安装了一个新的MySQL服务器后,你需要为MySQL的root用户指定一个目录(缺省无口令),否则如果你忘记这点,你将你的MySQL处于极不安全的状态(至少在一段时间内)。 在Unix(linux)上,在按照手册的指令安装好MySQL后,你必须运行mysql_install_db脚本建立包含授权表的mysql数据库和初始权限。在Windows上,运行分发中的Setup程序初始化数据目录和mysql数据库。假定服务器也在运行。 当你第一次在机器上安装MySQL时,mysql数据库中的授权表是这样初始化的: 你可以从本地主机(localhost)上以root连接而不指定口令。root用户拥有所有权限 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: MySQL的数据类型和建库策略下一篇: NuSphere 让 MySQL 功能更强
关于MySQL安全性指南(3)(转)的所有评论