学习网考试学习资料

Gzu521.com

MySQL安全性指南(7)

MySQL教程   点击:次   发布时间:2006-7-6   【字体: 】   来源:Gzu521.com
Gzu521.com我的学习网


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用户拥有所有权限(包括管理权限)并可做任何事情。(顺便说明,mysql超级用户与unix超级用户有相同的名字,他们彼此毫无关系。) 
匿名访问被授予用户可从本地连接名为test和任何名字以test_开始的数据库。匿名用户可对数据库做任何事情,但无管理权限。 
从本地主机多服务器的连接是允许的,不管连接的用户使用一个localhost主机名或真实主机名。如: 

% mysql -h localhost test 

% mysql -h pit.snake.net test 

上 一 页 下 一 页
8页: 第 [1] [2] [3] [4] [5] [6] [7] [8]

责任编辑:gzu521

网络编程分类
ASP教程
.Net教程
Java教程
PHP教程
数据库基础
ACCESS教程
SQL Server教程
MySQL教程
Oracle教程
分类推荐信息
更多...
大类最新文章
更多...