⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 421.html

📁 Jsp精华文章合集,JSP方面各种知识介绍
💻 HTML
📖 第 1 页 / 共 2 页
字号:

<STYLE type=text/css>
<!--
body,td { font-size:9pt;}
hr { color: #000000; height: 1px}
-->
</STYLE>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD><TITLE>精选文章 >> SQL之家 >> MySQL安全性指南(2)</title>
</head>
<body >

<p><IMG SRC="../image/jsp001_middle_logo.gif" WIDTH="180" HEIGHT="60" BORDER=0 ALT=""></p>

<table width=100% bgcolor="#cccccc" align=center cellpadding="2" cellspacing="0" border=1 bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#EFF8FF"><td>
<a href=http://www.jsp001.com/list_thread.php?int_attribute=2>精选文章</a>
>> <a href=http://www.jsp001.com/list_thread.php?forumid=45&int_attribute=2>SQL之家</a>
>> MySQL安全性指南(2) [<a href=http://www.jsp001.com/forum/showthread.php?goto=newpost&threadid=421>查看别人的评论</a>]<br>

<hr><p>由 amtd 发布于: 2001-02-13 18:45</p><p><img src="images/icons/icon1.gif" alt="Post" border=0> </p><p>MySQL安全性指南(2)    <br><br>作 者: 晏子<br><br><br>2.1.3 数据库和表权限<br>下列权限运用于数据库和表上的操作。<br><br>ALTER<br>允许你使用ALTER TABLE语句,这其实是一个简单的第一级权限,你必须由其他权<br>限,这看你想对数据库实施什么操作。 <br>CREATE<br>允许你创建数据库和表,但不允许创建索引。 <br>DELETE<br>允许你从表中删除现有记录。 <br>DROP<br>允许你删除(抛弃)数据库和表,但不允许删除索引。 <br>INDEX<br>允许你创建并删除索引。 <br>REFERENCES<br>目前不用。 <br>SELECT<br>允许你使用SELECT语句从表中检索数据。对不涉及表的SELECT语句就不必要,如<br>SELECT NOW()或SELECT 4/2。 <br>UPDATE<br>允许你修改表中的已有的记录。 <br>2.1.4 管理权限<br>下列权限运用于控制服务器或用户授权能力的操作的管理性操作。<br><br>FILE<br>允许你告诉服务器读或写服务器主机上的文件。该权限不应该随便授予,它很危险,<br>见“回避授权表风险”。服务器确实较谨慎地保持在一定范围内使用该权限。你只能<br>读任何人都能读的文件。你正在写的文件必须不是现存的文件,这防止你迫使服务器<br>重写重要文件,如/etc/passwd或属于别人的数据库的数据目录。<br>如果你授权FILE权限,确保你不以UNIX的root用户运行服务器,因为root可在文件系<br>统的任何地方创建新文件。如果你以一个非特权用户运行服务器,服务器只能在给用<br>户能访问的目录中创建文件。<br><br>GRANT<br>允许你将你自己的权限授予别人,包括GRANT。 <br>PROCESS<br>允许你通过使用SHOW PROCESS语句或mysqladmin process命令查看服务器内正在运<br>行的线程(进程)的信息。这个权限也允许你用KILL语句或mysqladmin kill命令杀<br>死线程。<br>你总是能看到或杀死你自己的线程。PROCESS权限赋予你对任何线程做这些事情的能<br>力。<br><br>RELOAD<br>允许你执行大量的服务器管理操作。你可以发出FLUSH语句,你也能指性mysqladmin<br>的reload、refresh、flush-hosts、flush-logs、flush-privileges和flush-<br>tables等命令。 <br>SHUTDOWN<br>允许你用mysqladmin shutdown关闭服务器。 <br>在user、db和host表中,每一个权限以一个单独的列指定。这些列全部声明为一个<br>ENUM("N","Y")类型,所以每个权的缺省值是“N”。在tables_priv和<br>columns_priv中的权限以一个SET表示,它允许权限用一个单个列以任何组合指定。<br>这两个表比其他三个表更新,这就是为什么它们使用更有效的表示方式的原因。(有<br>可能在未来,user、db和host表也用一个SET类型表示。)<br><br>在tables_priv表中的Table_priv列被定义成:<br><br>SET<br>('Select','Insert','Update','Delete','Create','Drop','Grant','Referenc<br>es','Index','Alter')<br>在coloums_priv表中的Column_priv列被定义成:  <br><br>SET('Select','Insert','Update','References')<br>列权限比表权限少,因为列级较少的权限有意义。例如你能创建一个表,但你不能创<br>建一个孤立的列。<br><br>user表包含某些在其他授权表不存在的权限的列:File_priv、Process_priv、<br>Reload_priv和Shutdown_priv。这些权限运用于你让服务器执行的与任何特定数据<br>库或表不相关的操作。如允许一个用户根据当前数据库是什么来关闭数据库是毫无意<br>义的。<br><br>2.2 服务器如何控制客户访问<br>在你使用MySQL时,客户访问控制有两个阶段。第一阶段发生在你试图连接服务器时。<br>服务器查找user表看它是否能找到一个条目匹配你的名字、你正在从那儿连接的主机<br>和你提供的口令。如果没有匹配,你就不能连接。如果有一个匹配,建立连接并继续<br>第二阶段。在这个阶段,对于每一个你发出的查询,服务器检查授权表看你是否有足<br>够的权限执行查询,第二阶段持续到你与服务器对话的结束。<br><br>本小节详细介绍MySQL服务器用于将授权表条目匹配到来的连接请求或查询的原则,这<br>包括在授权表范围列中合法的值的类型、结合授权表中的权限信息的方式和表中条目<br>被检查的次序。<br><br>2.2.1 范围列内容<br>一些范围列要求文字值,但它们大多数允许通配符或其他特殊值。<br><br>Host <br>一个Host列值可以是一个主机名或一个IP地址。值localhost意味着本地主机,但它<br>只在你用一个localhost主机名时才匹配,而不是你在使用主机名时。假如你的本地<br>主机名是pit.snake.net并且在user表中有对你的两条记录,一个有一个Host值或<br>localhost,而另一个有pit.snake.net,有localhost的记录将只当你连接<br>localhost时匹配,其他在只在连接pit.snake.net时才匹配。如果你想让客户能以<br>两种方式连接,你需要在user表中有两条记录。<br><br>你也可以用通配符指定Host值。可以使用SQL的模式字符“%”和“_”并具有当你在<br>一个查询中使用LIKE算符同样的含义(不允许regex算符)。 SQL模式字符都能用于<br>主机名和IP地址。如%wisc.edu匹配任何wisc.edu域内的主机,而%.edu匹配任何教<br>育学院的主机。类似地,192.168.%匹配任何在192.168 B类子网的主机,而<br>192.168.3.%匹配任何在192.168.3 C类子网的主机。<br><br>%值匹配所有主机,并可用于允许一个用户从任何地方连接。一个空白的Host值等同<br>于%。(例外:在db表中,一个空白Host值含义是“进一步检查host表”,该过程在<br>“查询访问验证”中介绍。)<br><br>从MySQL 3.23起,你也可以指定带一个表明那些为用于网络地址的网络掩码的IP地<br>址,如192.168.128.0/17指定一个17位网络地址并匹配其IP地址是192.168128前17<br>位的任何主机。<br><br>User <br>用户名必须是文字的或空白。一个空白值匹配任何用户。%作为一个User值不意味着空<br>白,相反它匹配一个字面上的%名字,这可能不是你想要的。<br><br>当一个到来的连接通过user表被验证而匹配的记录包含一个空白的User值,客户被认<br>为是一个匿名用户。 <br><br>Password <br>口令值可以是空或非空,不允许用通配符。一个空口令不意味着匹配任何口令,它意<br>味着用户必须不指定口令。<br><br>口令以一个加密过的值存储,不是一个字面上的文本。如果你在Password列中存储一<br>个照字面上的口令,用户将不能连接!GRANT语句和mysqladmin password命令为你<br>自动加密口令,但是如果你用诸如INSERT、REPLACE、UPDATE或SET PASSWORD等命<br>令,一定要用PASSWORD("new_password")而不是简单的"new_password"来指定口<br>令。 <br><br>Db<br>在columns_priv和tables_priv表中,Db值必须是真正的数据库名(照字面上),不<br>允许模式和空白。在db和host中,Db值可以以字面意义指定或使用SQL模式字<br>符'%'或'_'指定一个通配符。一个'%'或空白匹配任何数据库。 <br>Table_name,Column_name<br>这些列中的值必须是照字面意思的表或列名,不允许模式和空白。<br>某些范围列被服务器视为大小写敏感的,其余不是。这些原则总结在下表中。特别注<br>意Table_name值总是被看作大小写敏感的,即使在查询中的表名的大小写敏感性对待<br>视服务器运行的主机的文件系统而定(UNIX下是大小写敏感,而Windows不是)。<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -