生物系统

系统生物学和计算生物学

$ vim ./vimrc

输入

set t_ku=^[OA
set t_kd=^[OB
set t_kr=^[OC
set t_kl=^[OD


保存退出。

其中^[OA等几个键是用[ctrl+v][方向键]输入的,u d r l分别代表上下右左。

-------

方向键只是hjkl的一个宏而已,你在vim下敲:map就可看到他们的定义了.
不同的终端对方向键有不同的解释,如果你需要在插入模式下使用,可以自己用

:map! ^[OA/B/C/D kjhl
来定义.这里的^需要同时按住Ctrl+V, [需要同时按住Ctrl+[或者直接按[ESC]键

echo "set nocompatible" >> ~/.vimrc

env 看一下看看。

设置完后
$:x 或者 $wq
进行保存退出即可。
下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:

“双引号开始的行为注释行,下同

“去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

set nocompatible

“显示行号

set nummber

“检测文件的类型

filetype on

“记录历史的行数

set history=1000

“背景使用黑色

set background=dark

“语法高亮度显示

syntax on



“下面两行在进行编写代码时,在格式对起上很有用;

“第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;

“第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编

“写上很有用

set autoindent
set smartindent

“第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格

set tabstop=4
set shiftwidth=4

“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

set showmatch

“去除vim的GUI版本中的toolbar

set guioptions-=T

“当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

set vb t_vb=

“在编辑过程中,在右下角显示光标位置的状态行

set ruler

“默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示

set nohls

“查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一

“个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依

“次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词

“时,别忘记回车

set incsearch

“修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀

if has(“vms”)

set nobackup

else

set backup

endif



如果去除注释后,一个完整的.vimrc配置信息如下所示:



set nocompatible
set nummber
filetype on
set history=1000
set background=dark
syntax on
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
if has(“vms”)
set nobackup
else
set backup
endif


如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为:
$rpm –q vim-enhanced
已经搞定了。要把putty的编码设为UFT-8

------------------
perl plugin for vim-support
可安装插件, 直接解压到.vim目录即可, 别忘了在.vimrc中增加几句

filetype plugin on
let g:Perl_AuthorName = 'Chunguang Liang'
let g:Perl_AuthorRef = 'CL'
let g:Perl_Email = 'liang@uni-wuerzburg.de'
let g:Perl_Company = 'Bioinformatik, Biozentrum, Uni. Wuerzburg'
-----------

下载地址
http://vim.sourceforge.net/scripts/script.php?script_id=556

首先要打开ipv4ip_forward

/etc/sysconfig/network/forward-ipv4


/proc/sys/net/ipv4/ip_forward


推荐使用动态的方法--无限外网, 有限内网

iptables -t nat -A POSTROUTING -s 192.168.8.0/255.255.255.0 -o ath0 -j MA

SQUERADE


删除的方法

iptables -t nat -D POSTROUTING -s 192.168.8.0/255.255.255.0 -o ath0 -j MA

SQUERADE


过时的静态的方法

iptables -t nat -A POSTROUTING -o ath0 -j SNAT --to 192.168.0.5


动态方法应用于有线外网, 无限内网

iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j MASQUERADE



Choose one of the following to allow the Linux kernel to forward IP packets:

  1. Immediately allow the forwarding of packets. The configuration is not preserved on reboot but sets a flag in the kernel itself.
        echo 1 > /proc/sys/net/ipv4/ip_forward

  2. Another method is to alter the Linux kernel config file: /etc/sysctl.conf
    Set the following value:
        net.ipv4.ip_forward = 1
    This will configure the system to allow forwarding of packets upon system boot. It is stored in this configuration file and thus read and set upon system boot. If set to "0" then there will be no forwarding of packets.

  3. An alternate method is to alter the network script: /etc/sysconfig/network
         FORWARD_IPV4=true
    Change the default "false" to "true".
------------------------
examples.
/sbin/ifconfig eth0 XXX.XXX.XXX.XXX netmask 255.255.255.0 broadcast XXX.XXX.XXX.255   - Internet
/sbin/ifconfig eth1 192.168.10.101 netmask 255.255.255.0 broadcast 192.168.10.255 - Private LAN
# Delete and flush. Default table is "filter". Others like "nat" must be explicitly stated.
iptables --flush - Flush all the rules in filter and nat tables
iptables --table nat --flush
iptables --delete-chain - Delete all chains that are not in default filter and nat table
iptables --table nat --delete-chain

# Set up IP FORWARDing and Masquerading
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward - Enables packet forwarding by kernel

保存的方法, 重启后自动设置
/etc/rc.local

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD --in-interface ath0 -j ACCEPT

exit 0


由于kaffine使用的是xine后端来显示字幕,所以要让kaffeine显示中文字幕就要让xine能显示中文,方法如下
1,下载我这个附件,解压得到一个可执行文件,如果不可执行可用 chmod +x xine-fontconv,放在/root/目录,找一个ttf中文字体,比如simhei.ttf,放在/root/
2,用root权限,进入目录/usr/share/xine/libxine1/fonts/,运行

/root/xine-fontconv /root/simhei.ttf simhei gbk

等一会xine所使用的字体就生成了

3,配置kaffeine,设置-->xine引擎参数-->subtitles,把新手选项的第三个填入gbk,专家选项的第一个填simhei

4大功告成

btw:xine-fontconv来自xing-lib的源码misc目录,可自行编译
下载http://www.linuxsir.org/bbs/showthread.php?t=243978

linux下使用vpnc连接uni wuerzburg的方法

建立/etc/vpnc/uniwue.conf
------------------------------------------------------
root@Keesburg:/etc/vpnc
# cat uniwue.conf
IPSec gateway 132.187.1.5
IPSec ID Login
IPSec secret 9dae7aa6ccfde46148d93351c7ab6861
Xauth username s0000000
-------------------------------------------------------
username根据自己得帐号填写cisco的机密密码可以通过http://www.unix-ag.uni-kl.de/~massar/bin/cisco-decode来破解, 如今的破解后为9dae7aa6ccfde46148d93351c7ab6861连接到uni,
使用vpnc uniwue


ubuntu 8.1的注意事项

ifconfig eth0 mtu 1500
ifconfig ath0 mtu 1500

由于管道的mtu值大于eth0的默认值, 所以如果没有这两行则会时断时续

聚类分析基础(方法篇)

(1)划分方法
给定一个包含n个对象或数据行,划分方法将数据集划分为k 个子集(划分)。其中每个子集均代表一个聚类( k ≤n )。也就是说将数据分为k组,这些组满足以下要求:
(a)每组至少应包含一个对象;且
(b)每个对象必须只能属于某一组。
需要注意的是后一个要求在一些模糊划分方法中可以放宽。有关这类方法将参考书后参考文献。
给 定需要划分的个数k,一个划分方法创建一个初始划分;然后利用循环再定位技术,即通过移动不同划分(组)中的对象来改变划分内容。一个好的划分衡量标准通 常就是同一个组中的对象“相近”或彼此相关;而不同组中的对象“较远”或彼此不同。当然还有许多其它判断划分质量的衡量标准。
为获得基于划分 聚类分析的全局最优结果就需要穷举所有可能的对象划分。为此大多数应用采用一至二种常用启发方法:(a )k-means 算法,该算法中的每一个聚类均用相应聚类中对象的均值来表示;和(b)k-medoids 算法,该算法中的每一个聚类均用相应聚类中离聚类中心最近的对象来表示。这些启发聚类方法在分析中小规模数据集以发现圆形或球状聚类时工作的很好。但为了 使划分算法能够分析处理大规模数据集或复杂数据类型,就需要对其进行扩展。

(2)层次方法
层次方法就是通过分解所给定的数据对象 集来创建一个层次。根据层次分解形成的方式,可以将层次方法分为自下而上和自上而下两种类型。自下而上的层次方法从每个对象均为一个(单独的)组开始;逐 步将这些(对象)组进行合并,直到组合并在层次顶端或满足终止条件为止。自上而下层次方法从所有均属于一个组开始;每一次循环将其(组)分解为更小的组; 直到每个对象构成一组或满足终止条件为止。 层次方法存在缺陷就是在进行(组)分解或合并之后,无法回溯。这一特点也是有用的,因为在进行分解或合并时无须考虑不同选择所造成的组合爆炸问题。但这一 特点也使得这种方法无法纠正自己的错误决策。将循环再定位与层次方法结合起来使用常常是有效的,即首先通过利用自下而上层次方法;然后再利用循环再定位技 术对结果进行调整。一些具有可扩展性的聚类算法,如:BIRCH和CURE,就是基于这种组合方法设计的。

(3)基于密度方法
大 多数划分方法是基于对象间距离进行聚类的。这类方法仅能发现圆形或球状的聚类而在较难发现具有任何形状的聚类。而基于密度概念的聚类方法实际上就是不断增 长所获得的聚类直到“邻近”(数据对象或点)密度超过一定阈值(如:一个聚类中的点数,或一个给定半径内必须包含至少的点数)为止。这种方法可以用于消除 数据中的噪声(异常数据),以及帮助发现任意形状的聚类。 DBSCAN 就是一个典型的基于密度方法,该方法根据密度阈值不断增长聚类。OPTICS也是一个基于密度方法,该方法提供聚类增长顺序以便进行自动或交互式数据分 析。



(4)基于网格方法
基于网格方法将对象空间划分为有限数目的单元以形成网格结构。所有聚类操作均是在这一 网格结构上进行的。这种方法主要优点就是处理时间由于与数据对象个数无关而仅与划分对象空间的网格数相关,从而显得相对较快。 STING 就是一个典型的基于网格的方法。CLIQUE和Wave-Cluster是两个基于网格和基于密度的聚类方法。

(5)基于模型方法
基于模型方法就是为每个聚类假设一个模型,然后再去发现符合相应模型的数据对象。一个基于模型的算法可以通过构造一个描述数据点空间分布的密度函数来确定具体聚类。它根据标准统计方法并考虑到“噪声”或异常数据,可以自动确定聚类个数;因而它可以产生很鲁棒的聚类方法。
一些聚类算法将若干聚类方法的思想结合在一起,因此有时很难明确界定一个聚类算法究竟属于哪一个聚类方法类别。此外一些应用也需要将多个聚类技术结合起来方可实现其应用目标。

基于文本的信息自动聚类的算法很多,我以前介绍过一些,比较流行的算法有我以前提到的KNN和SVM,在过去的一段时间里,空闲的时间基本上都用来研究能 否快速的实现自动聚类。上周终于完成了文本自动聚类的兼并算法,能够相对快速的实现文本信息的自动聚类。下面就介绍一下信息自动聚类的实现,希望能够帮助 大家了结google news 的新闻如何进行自动聚类工作。

1] 什么是简并算法
简并算法是指在文本信息空间内寻找任何两个最相关的文本信息,并将之简并成一个文本信息,从而实现信息数量的收缩。

2] 如何实现
1. 简并算法的实现通过比较整个信息空间内的所有文本的相关性(相识性),得到相互之间的相关性后两两(注)进行配对。配对的要求是这两个文本信息的相关性最大,例如A 找到了文档B,那么B 也一定找到最相关的文档就是A 。

注,某些情况A 最相近的文档是C ,那么B 而B 最相关的文档也是C ,存在一种情况,A,B,C 三者之间自恰,就是构成空间信息最近的一个三角形。

2. 得到了最相似文档后,将只进行平均化,或者简单的迭加。

3. 信息空间中独立信息的数量会减少到原来的一半以下,然后重复实现1 的过程,在进行兼并。

4. 信息最后简并到唯一的一个信息,就是整个信息文本的平均值。

5. 画出信息树的结构,就能够根据要进行规模不同大小的聚类进行自动聚类了。

如下的信息树结构是对我进行测试的一个小样本大约70个文档进行信息简并算法得到的图像:









完整的树结构可以看这里:



从上图可以看出,经过自动聚类后类别0,2具有最相近的关系然后进行兼并后和类别5进行了简并,然后在和类别6进行了简并,最终和另外一支的信息进行了最后的简并,聚成唯一的全部的信息简并。

图中矩阵的明暗表明了信息之间的相关程度,矩阵经过对角化后可以明显看到聚类的效应。

本试验的文本信息和分类结果下载:

下面是我进行文本聚类的文档公布下载『一共70个文档』,我产生的文本的相关性的矩阵下载。

简并算法我也实现在大样本的聚类上,大约2000个文档进行自动的分类后进行聚类的运算时间大约为2个小时「抱歉,我基本上是用shell scripts 和perl scripts 来写代码」,如果先进行聚类在分类大约要5个小时。

最耗时间的过程是产生相关性矩阵,2000X2000有400万的元素,当然不会那么快了。

经过实践,简并算法的自动聚类还有很多需要改进的地方,例如最关键的是信息之间的相识性的计算,我采用了最大似然(Maximum Likelihood Fitting)的拟合,在计算上比较消耗时间,以后可以改变成其它的算法。

文本的自动聚类可以看到Google New上面已经相当成熟,这里的简并算法未来将为博客中国的新闻搜索提供支持,希望能够提供较好的机器新闻。



参考文献:
Yiming Yang, S. Slattery and R. Ghani. A study of approaches to hypertext categorization (ps.gz) Journal of Intelligent Information Systems, Volume 18, Number 2, March 2002.

Yiming Yang and Xin Liu A re-examination of text categorization methods. Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR'99, pp 42--49), 1999.

Soft Clustering Criterion Functions for Partitional Clustering
Ying Zhao and George Karypis
(A poster paper appears in CIKM 2004)

Web Page Categorization and Feature Selection Using Association Rule and Principal Component Clustering
Jerome Moore, Eui-Hong (Sam) Han, Daniel Boley, Maria Gini, Robert Gross, Kyle Hastings, George Karypis, Vipin Kumar, and Bamshad Mobasher

贝叶斯算法介绍
一. 贝叶斯过滤算法的基本步骤

1) 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
2) 提取邮件主题和邮件体中的独立字串例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
3) 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
4) 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)
5) 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:
A事件----邮件为垃圾邮件;
t1,t2 …….tn代表TOKEN串
则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。

P1(ti)=(ti在hashtable_good中的值)
P2(ti)=(ti在hashtable_ bad中的值)
则 P(A|ti)= P1(ti)/[(P1(ti)+ P2(ti)];
6) 建立新的哈希表 hashtable_probability存储TOKEN串ti到P(A|ti)的映射
7) 至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表 hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。
当新到一封邮件时,按照步骤2)生成TOKEN串。查询hashtable_probability得到该TOKEN 串的键值。
假设由该邮件共得到N个TOKEN串,t1,t2…….tn, hashtable_probability中对应的值为P1,P2,。。。。。。PN,
P(A|t1 ,t2, t3……tn)表示在邮件中同时出现多个TOKEN串t1,t2…….tn时,该邮件为垃圾邮件的概率。
由复合概率公式可得
P(A|t1 ,t2, t3……tn)=(P1*P2*。。。。PN)/[P1*P2*。。。。。PN+(1-P1)*(1-P2)*。。。(1-PN)]
当P(A|t1 ,t2, t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。

二. 贝叶斯过滤算法举例

例如:一封含有“法轮功”字样的垃圾邮件 A
和 一封含有“法律”字样的非垃圾邮件B
根据邮件A生成hashtable_ bad,该哈希表中的记录为
法:1次
轮:1次
功:1次
计算得在本表中:
法出现的概率为0。3
轮出现的概率为0。3
功出现的概率为0。3
根据邮件B生成hashtable_good,该哈希表中的记录为:
法:1
律:1
计算得在本表中:
法出现的概率为0。5
律出现的概率为0。5
综合考虑两个哈希表,共有四个TOKEN串: 法 轮 功 律
当邮件中出现“法”时,该邮件为垃圾邮件的概率为:
P=0。3/(0。3+0。5)=0。375
出现“轮”时:
P=0。3/(0。3+0)=1
出现“功“时:
P=0。3/(0。3+0)=1
出现“律”时
P=0/(0+0。5)=0;
由此可得第三个哈希表:hashtable_probability 其数据为:
法:0。375
轮:1
功:1
律:0

当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串,功 律
查询哈希表hashtable_probability可得
P(垃圾邮件| 功)=1
P (垃圾邮件|律)=0
此时该邮件为垃圾邮件的可能性为:
P=(0*1)/[0*1+(1-0)*(1-1)]=0
由此可推出该邮件为非垃圾邮件

快速设置指南/GutsyGibbon


当你刚刚安装完毕之后,我们来花10分钟设置一下系统,让其有一个更加舒适的中文环境。──本文的作用


目录
[隐藏]

* 1 前言
* 2 修改源并更新你的(k/x/ed)ubuntu
* 3 设置系统中文环境支持
o 3.1 安装语言包
o 3.2 scim输入法安装及设置
o 3.3 fcitx输入法安装及设置(可选)
o 3.4 安装文泉驿字体(可选)
o 3.5 解决PDF电子文档的中文乱码
* 4 安装JAVA环境支持
* 5 QQ解决方案(可选)
o 5.1 Pidgin方案
+ 5.1.1 使用Pidgin2.2.1登录QQ
o 5.2 EVA方案
o 5.3 LumaQQ方案
o 5.4 Wine方案
* 6 多媒体应用环境设置
o 6.1 安装多媒体解码器
+ 6.1.1 网通用户
+ 6.1.2 电信用户(需要改进)
o 6.2 Xine前端播放器设置问题
o 6.3 安装mplayer播放器(可选)
* 7 安装英汉辞典
* 8 安装设置Firefox浏览器
o 8.1 安装flash播放插件
o 8.2 安装插件/扩展
* 9 安装支持BT/电驴/Gnutella1/Gnutella2等下载软件
o 9.1 安装BT下载软件
o 9.2 安装电驴下载软件(可选)
* 10 其他参考

[编辑] 前言

* 本文适用于采用i386安装光盘安装的系统,部分内容适合AMD64和PPC安装(如有问题请到论坛咨询)。
* 文中ftp.ubuntu站点的密码http://forum.ubuntu.org.cn/viewtopic.php?t=9685

* "sudo"的意思是“以超级用户执行[Superuser Do]”。当以"sudo"方式执行命令时,系统会提示您输入当前登录用户的密码。只有输入正确的密码(您输入的密码不会被显示)并按下回车后,命令才会继续执行。
* 注意:apt,aptitude,dpkg,Adept,新立得软件包管理器 等软件管理工具在同一时间只能有一个运行。
* 文章使用命令行进行操作是为了方便描述,文中的大部分操作都可以由图形界面的新立得软件包管理器和相关系统工具完成。

[编辑] 修改源并更新你的(k/x/ed)ubuntu

* 不同的网络状况连接以下源的速度不同。建议在添加前手动验证以下源的连接速度(ping下就行)。比如说北京网通用户连接cn99就非常慢,而 ftp.sjtu.edu.cn是相对较快的源。选择最快的源可大大节省下载时间,请根据自己网络环境设置更新服务器,以达到最快的速度。
* 注意,你可以同时加入几个源。尽量选择一组官方的源(也就是下面的Archive.ubuntu.com的条目)直接加在文件的最後,以避免非官方源软件包不全时出现 404 Not Found 文件未发现的错误。建议电信用户使用cn99和台湾大学的源,网通用户使用台湾大学的源,教育网用户使用教育网的源。


打开终端方法:

按下ALT+F2 -> gnome-terminal -> 运行 #(ed)ubuntu
按下ALT+F2 -> konsole -> 运行 #Kubuntu
按下ALT+F2 -> xfce4-terminal -> 运行 #xubuntu

在终端执行命令

备份当前的源列表,以便日後需要时恢复:

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

编辑源列表

gksu gedit /etc/apt/sources.list #(ed)ubuntu
kdesu kate /etc/apt/sources.list #kubuntu
gksu mousepad /etc/apt/sources.list #xubuntu
sudo vim /etc/apt/sources.list #通用


从以下各服务器列表内容中选择一段替换文件中的所有内容,一般来说加入一至两组即可,加多了影响更新速度。为防止非官方源中软件包不全的问题,请在sources.list文件中尾部添加一组官方源。


Archive.ubuntu.com更新服务器(欧洲,此为官方源,电信网通用户使用):

deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse


Ubuntu.cn99.com更新服务器(江苏省常州市电信,推荐电信用户使用):

deb http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ gutsy main restricted universe multiverse


Mirrors.shlug.org更新服务器(电信服务器,Ubuntu China Official Mirror, maintained by Shanghai Linux User Group):

deb http://cn.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse


Mirror.lupaworld.com更新服务器(浙江省杭州市双线服务器):

deb http://mirror.lupaworld.com/ubuntu gutsy main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-proposed main restricted universe multiverse


厦门大学更新服务器(教育网服务器):

deb ftp://ubuntu.realss.cn/ubuntu/ gutsy main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ gutsy-backports restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ gutsy-proposed main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ gutsy-security main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ gutsy main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ gutsy-proposed main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ gutsy-security main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ gutsy-updates main restricted universe multiverse


成都市 电子科技大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://ubuntu.uestc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe

== 如果无法解析uestc.edu.cn域名,请使用以下地址 ==

deb http://ubuntu.dormforce.net/ubuntu/ gutsy main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ gutsy-security main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ gutsy main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ gutsy-updates main multiverse restricted universe


上海市上海交通大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe

中国科学技术大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://debian.ustc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ gutsy-updates main multiverse restricted universe

北京市清华大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://mirror9.net9.org/ubuntu/ gutsy main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ gutsy-backports main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ gutsy-proposed main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ gutsy-security main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ gutsy main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ gutsy-security main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ gutsy-updates main multiverse restricted universe


沈阳市东北大学更新服务器(教育网,推荐校园网和网通用户使用):

deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-backports main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-proposed main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-security main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-updates main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-backports main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-security main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ gutsy-updates main multiverse restricted universe


中国台湾 台湾大学更新服务器(推荐网通用户使用,电信PING平均响应速度41MS。强烈推荐此源,比较完整,较少出现同步问题):

deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-security main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ gutsy-proposed main restricted universe multiverse


Mirror.vmmatrix.net更新服务器(上海市电信,推荐电信网通用户使用):

deb http://mirror.vmmatrix.net/ubuntu/ gutsy main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ gutsy main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ gutsy-security main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://mirror.vmmatrix.net/ubuntu/ gutsy-proposed main restricted universe multiverse


ubuntu.cnsite.org更新服务器(福建省福州市 电信):

deb http://ubuntu.cnsite.org/ubuntu/ gutsy main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ gutsy main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ gutsy-security main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://ubuntu.cnsite.org/ubuntu/ gutsy-proposed main restricted universe multiverse


mirror.rootguide.org更新服务器(上海市 电信):

deb http://mirror.rootguide.org/ubuntu/ gutsy main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ gutsy main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ gutsy-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ gutsy-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ gutsy-proposed main multiverse restricted universe
deb-src http://mirror.rootguide.org/ubuntu/ gutsy-proposed main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu-cn/ gutsy main restricted universe multiverse


台湾的官方源速度也相当不错,有时甚至快于内地的:

deb http://tw.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse

Ubuntu-cn,推荐各位中文用户添加:

deb http://archive.ubuntu.org.cn/ubuntu-cn/ gutsy main restricted universe multiverse

也可以到以下网址自定义产生若干源:

http://www.ubuntulinux.nl/source-o-matic

以下网址有极其全面的源,以供补充:

http://italy.copybase.ch/blog/lista...-kubuntu-linux/

官方采集的源列表:

https://launchpad.net/ubuntu/+archivemirrors

保存编辑好的文件,执行以下命令更新

sudo apt-get update #这一步是更新你的源列表,换源後必须执行
sudo apt-get dist-upgrade #这一步是更新软件,如果你对新版本软件的需求不是那么迫切,可以不执行

[编辑] 设置系统中文环境支持
[编辑] 安装语言包

Kubuntu

主菜单 -> 系统设置 -> 区域与语言 -> 安装新语言 -> Chinese -> 安装
主菜单 -> 系统设置 -> 区域与语言 -> 选择系统语言 -> 简体中文 -> 确定。

相对的命令是:
sudo apt-get install language-pack-kde-zh-base language-pack-kde-zh

Ubuntu:

系统 -> 系统管理 -> 语言支持,在列表中的Chinese条目打勾。
同时将默认语言修改为Chinese(中国)并确定。

配置字体,使中文看起来更漂亮(如果是中文系统并且已照上面做过,那么可以跳过)

sudo fontconfig-voodoo -f -s zh_CN


[编辑] scim输入法安装及设置

如果您要在非CJK(中日韩)的locales下使用scim,只需在System->Administration-> Language Support 选中 Chinese 的 checkbox,点击 Apply 即可(可能被提示需要重新启动计算机)。不需再如从前需要在Terminal进行各种设置,安装相关软件包亦由系统自动执行。

以上适用Gnome环境。

如果在KDE下面使用scim,建议使用如下设置:


sudo apt-get install im-switch libapt-pkg-perl



sudo im-switch -s scim -z default

[编辑] fcitx输入法安装及设置(可选)

sudo apt-get install im-switch fcitx
sudo im-switch -s fcitx -z default
im-switch -s fcitx -z default #注意:不加sudo

完成设置最好重启一下X,输入法就生效了

某些情况下可能,在安装了fcitx输入法以后可能会出现和SCIM并存的问题,解决方法如下:

sudo gedit /usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-gtk2-immodule.immodules

将内容改为如下:

# automatically generated by dh_gtkmodules, do not edit
“/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so”
“scim” “SCIM Input Method” “scim” “/usr/share/locale” “ja:ko”
#就是将最后一行中的"ja:ko:zh"修改为"ja:ko",这样修改以后,scim在中文环境下将不被启动


更多设置,请访问中文输入法fcitx 以及 英文Locale下使用中文输入法
[编辑] 安装文泉驿字体(可选)

安装:执行下面的命令前请确保你已经将上面源中ubuntu-cn的源加进去了。

sudo apt-get install xfonts-wqy

安装後应该可以在字体管理器中找到WenQuanYi Bitmap Song字体了,如果你的系统中找不到,请执行下面的命令:

sudo dpkg-reconfigure fontconfig-config

系统总共会问你三个问题,其中第三个为:

Enable bitmapped fonts by default? # 即是否启用Bitmap字体

移动tab键至Yes,回车,字体管理器中就应该有WenQuanYi Bitmap Song字体了。
[编辑] 解决PDF电子文档的中文乱码

* KPDF/Evince:前者为Kubuntu自带,後者为ubuntu自带。

sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional

如果上面的方法仍然不起作用,你需要安装poppler-data

访问官网或点击本地下载deb安装包。 然後

sudo dpkg -i poppler-data_0.1.1-1_i386.deb

* Adobe Reader英文版:
o 如果你已经安装了Adobe Reader英文版,那么你需安装亚洲语言包 。本地下载Adobe reader8.1简体字体包。
o 如果你尚未安装Adobe Reader英文版 你可以考虑直接下载安装adobe中文版

[编辑] 安装JAVA环境支持

打开终端,执行以下命令,或使用Adept/新立得软件管理器,在其中分别搜索"sun-java6-jre"和"sun-java6-jdk"并标记安装。

sudo apt-get install sun-java6-jre

如果空间富裕,建议安装一个JDK。

sudo apt-get install sun-java6-jdk

提示:安装过程中需要你回答是否同意使用协议(终端中红蓝色的提示界面),此时按tab键至OK,再按回车即可正常安装。

设置当前默认的java解释器:

sudo update-alternatives --config java

执行後会出现类似如下的画面:

There are 2 alternatives which provide `java'.

Selection Alternative
-----------------------------------------------
1 /usr/bin/gij-wrapper-4.1
*+ 2 /usr/lib/jvm/java-6-sun/jre/bin/java

Press enter to keep the default[*], or type selection number:

输入 有包含 "sun" 的行的前面的数字。如上面显示,则输入2,然後回车确定。


配置JAVA环境变量:

sudo gedit /etc/environment

在其中添加如下两行:

CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
JAVA_HOME=/usr/lib/jvm/java-6-sun

sudo gedit /etc/jvm

将文件中的

/usr/lib/jvm/java-6-sun

这一行填入到配置块的顶部

安装浏览器的JAVA Plugin(可选):

sudo apt-get install sun-java6-plugin


[编辑] QQ解决方案(可选)
[编辑] Pidgin方案

系统自带的Pidgin支持非常多的聊天软件,你可以同时登录QQ,MSN,GoogleTalk,雅虎通等,进行聊天。但是Pidgin并不能保证所有QQ帐号都可以成功登录。其原因有以下几个:

* QQ帐号登录时需要验证码
* QQ帐号在最新版本版本的腾讯QQ客户端登录过后,有时出现无法登录。
* QQ帐号密码设置问题

在使用登录QQ帐号前,Pidgin菜单栏里的“帮助->调试窗口”可以查看QQ在登录过程中的情况,帮助使用者判断无法登录的原因。
[编辑] 使用Pidgin2.2.1登录QQ

刚开始使用Pidgin登录QQ也不错,只是功能没有腾讯的多,许多朋友老是登录不上,主要在添加帐户的高级选项里没有选上

使用TCP连接的原因,选上使用TCP连接後,IP地址我写的是219.133.60.173,端口是80,然後保存登录,一切就OK,百试不爽!
[编辑] EVA方案

Kubuntu推荐使用

sudo apt-get install eva

安装完成之后,按Alt+F2,输入eva回车即可,也可以在主菜单 -> 网络 -> eva 启动。
[编辑] LumaQQ方案

参考安装LumaQQ
[编辑] Wine方案

Wine方案是直接使用Windows版的腾讯QQ登录QQ。登录成功率100%,但是稳定性较差。详细内容请参阅这里
[编辑] 多媒体应用环境设置

系统自带的以Gstreamer为後台引擎的totem电影播放器,目前已支持很多多媒体格式,效果很好。美中不足的是Real公司的rmvb,rm等格式暂时无法支持,DVD格式的光盘支持效果并不理想。可是这些文件格式都是我们常用的。所以我们先卸掉原来的电影播放器,换装以xine为後台引擎的 totem电影播放器,或者直接安装mplayer或kaffine作为电影播放器。

sudo apt-get remove totem-gstreamer

安装totem-xine电影播放器的命令如下:

sudo apt-get install totem-xine totem-mozilla totem

执行这条命令将会自动安装 libmodplug0c2 libmpcdec3 libpulse0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 libxine1 libxvmc1 等软件包。

系统自带的Rthymbox音乐播放器默认不支持mp3和wma格式音乐的播放需要额外配置一下。由于Rthymbox是以Gstreamer为后台支持的音乐播放器,所以只要安装全Gstreamer-pluns插件就可以了。具体的需要这安装的软件包如:gstreamer0.10- ffmpeg、gstreamer0.10-plugins-ugly。若要支持其它的格式和功能这些插件可以选择安装:gstreamer0.10- fluendo-mpegdemux、gstreamer0.10-gl、gstreamer0.10-gnonlin。
安装命令如下:

sudo apt-get install gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg

上面提到的其它插件的安装(可选):

sudo apt-get install gstreamer0.10-fluendo-mpegdemux gstreamer0.10-gl gstreamer0.10-gnonlin

[编辑] 安装多媒体解码器

安装下面这些解码器,常见的多媒体格式基本都可以播放了仅适合x86,ppc的请参见另外文件。
[编辑] 网通用户

网通及其它用户推荐使用下面这个方法,这个方法需要你的电脑可以访问国外。注意:不要将cn99源加入源列表中。

加入Medibuntu repository源

sudo wget http://www.medibuntu.org/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/medibuntu.list

加入GPG key并刷新软件库

wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- sudo apt-key add - && sudo apt-get update

因为法律的原因,Ubuntu的软件仓库默认不加入私有软件,但是在这些软件当中有很多是我们所必需的。Medibuntu repository源里就有很多非自由软件,加上这个源我们可以解决很多多问题。这个源里包括的软件包有Acrobat Reader、GoogleEarth、Opera 浏览器、w32codecs、Real Player、Skype等。你可以在这里查看或下载到全部软件包。下面几个软件包是我们设置Ubuntu多媒体应用环境安装解码器所必须的,现在给大家简单介绍一下:

* libdvdcss2软件包就可以获得额外的在DVD支持,关于libdvdcss2的信息你可以在这里查看。
* libxine1-ffmpeg和libxine1-plugins软件包Totem-xine电影播放器重要後台支持。
* w32codecs、gcc-3.3-base和libstdc++5软件包:w32codecs是xine引擎里重要的解码器包。w32codecs依赖gcc-3.3-base和libstdc++5软件包工作。

解码器的安装步骤很简单,第一步安装libdvdcss2,命令如下:

sudo apt-get install libdvdcss2

第二步,为以xine为後台引擎的totem电影播放器添加多媒体格式支持安装 libxine1-ffmpeg和libxine1-plugins :

sudo apt-get install libxine1-ffmpeg libxine1-doc libxine1-plugins

命令执行後将会自动安装 libmodplug0c2 libmpcdec3 libpulse0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 libxine1 libxvmc1 libxine1-console libxine1-gnome等软件包。

第三步,安装w32codecs软件包为以xine为後台引擎的totem电影播放器添加更多的多媒体格式支持其中包括Real Media、MPEG等:

sudo apt-get install w32codecs gcc-3.3-base libstdc++5

完成,以xine为後台引擎的totem电影播放器可以播放mpeg,avi,mp3,wma,wmv,rmvb等格式的电影及音频。安装时如果出现需要输入[Y/n]或[y/N],一律输入y并回车。
[编辑] 电信用户(需要改进)

下面的方法推荐电信用户使,已使用上一节网通用户方法的朋友请跳过这一节。

第一步、加入cn99源,方法请参考前面的章节。已加入的这步可以跳过。

第二步、为以xine为後台引擎的totem电影播放器添加多媒体格式支持安装 libxine1-ffmpeg和libxine1-plugins :

sudo apt-get install libxine1-ffmpeg libxine1-doc libxine1-plugins

命令执行後将会自动安装 libmodplug0c2 libmpcdec3 libpulse0 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxcb1 libxine1 libxvmc1 libxine1-console libxine1-gnome等软件包。

第三步、安装w32codecs软件包为以xine为後台引擎的totem电影播放器添加更多的多媒体格式支持其中包括Real Media、MPEG等:

sudo apt-get install w32codecs gcc-3.3-base libstdc++5

完成,以xine为後台引擎的totem电影播放器可以播放mpeg,avi,mp3,wma,wmv,rmvb等格式的电影及音频。安装时如果出现需要输入[Y/n]或[y/N],一律输入y并回车。
[编辑] Xine前端播放器设置问题

如果使用xine引擎的播放器,如kaffeine,gxine,totem-xine等在播放有些rmvb文件的时候可能会出现没有声音的现象(如果你没遇到,就不要进行这一步了),解决办法如下:

首先关闭播放器,然後使用你喜欢的文本编辑器,比如 kate,gedit,vim等打开文件 ~/.xine/catalog.cache,(比如 gedit ~/.xine/catalog.cache)打开该文件。找到其中的

/usr/lib/xine/plugins/1.1.7/xineplug_decode_real_audio.so

代码段,将其下的 decoder_priority 的数值修改成 10

修改完毕後这一段应该看起来是这样子的

/usr/lib/xine/plugins/1.1.7/xineplug_decode_real_audio.so
....
....
decoder_priority=10

[编辑] 安装mplayer播放器(可选)

sudo apt-get install mplayer-fonts mplayer mplayer-skins mozilla-mplayer

在开始用它进行视频播放前还需要进行以下设置(先启动它),然後右键弹出主菜单 -> Preferences/属性 -> Video/视频,在"Available drivers/可用驱动"中选择"x11"或"xv",>在同一窗口下半部份钩上"允许掉帧/Enable frame dropping"。

要播放网上下载的电影,还要安装解码器:

wget http://www1.mplayerhq.hu/MPlayer/re...0071007.tar.bz2
tar -xvjf essential-20071007.tar.bz2
sudo mv essential-20071007 /usr/lib/codecs

如果播放rmvb只有声音没有画面:

sudo apt-get install libstdc++5

[编辑] 安装英汉辞典

如果出现需要输入[Y/n]或[y/N],一律输入y并回车。(未加入ubuntu-cn源的朋友不适用于下面的方法)

Ubuntu

sudo apt-get install stardict stardict-cdict-gb stardict-cedict-gb stardict-hanzim stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ce-gb stardict-xdict-ec-gb

安装完成后的快捷方式在(应用程序 -> 附件 -> 星际译王)

Kubuntu

sudo apt-get install sox stardict-gtk stardict-common stardict-cdict-gb stardict-cedict-gb stardict-hanzim stardict-langdao-ce-gb stardict-langdao-ec-gb stardict-oxford-gb stardict-xdict-ce-gb stardict-xdict-ec-gb

安装完成后的快捷方式在(主菜单 -> 附件 -> 星际译王)

如果需要给stardict添加更多的词库或真人发音,请访问星际译王
[编辑] 安装设置Firefox浏览器
[编辑] 安装flash播放插件

* 如果你能连接国外网站并支持https,请执行:

sudo apt-get install flashplugin-nonfree

如果不满足条件而你不幸误执行了以上命令,并看到类似下面的消息:

正在设置 flashplugin-nonfree (9.0.48.0.0ubuntu1~7.04.1) ...
Downloading...
--20:47:05--
http://fpdownload.macromedia.com/ge...flash_player_9_
linux.tar.gz
=> `./install_flash_player_9_linux.tar.gz'
Resolving fpdownload.macromedia.com... 122.252.42.70
Connecting to fpdownload.macromedia.com122.252.42.70:80...

那么请Ctrl+c结束,然后

sudo apt-get remove --purge flashplugin-nonfree

* 如果不能连接国外网站或不支持https,请到http://ftp.ubuntu.org.cn 下载

下载后安装:

tar -zxvf install_flash_player_9_linux.tar.gz
cd install_flash_player_9_linux/
sudo ./flashplayer-installer

[编辑] 安装插件/扩展

查看firefox当前所安装的插件,在地址栏中输入:

about:plugins

从这个地址安装多线程下载扩展downthemall :

http://addons.mozine.cn/firefox/89/

从这个地址安装在线观看视频扩展mediawarp :

http://addons.mozine.cn/firefox/116/

从这个地址安装广告过滤扩展Adblock_Plus:

http://addons.mozine.cn/firefox/125/


关于firefox的更多设置,请访问 firefox

如果你对第三方Firefox发行版Swiftfox感兴趣,请访问Swiftfox浏览器
[编辑] 安装支持BT/电驴/Gnutella1/Gnutella2等下载软件
[编辑] 安装BT下载软件

1. 在Ubuntu中,打开终端,执行以下命令,或使用新立得,在其中搜索deluge-torrent并标记安装。

sudo apt-get install deluge-torrent

安装完成後的快捷方式在应用程序 -> Interne t-> Deluge BitTorrent Client,该软件支持Bit Torrent协议。

2. 在Kubuntu中,打开终端,执行以下命令,或使用Adept manager,在其中搜索ktorrent,并标记安装。

sudo apt-get install ktorrent

安装完成後的快捷方式在应用程序 -> Internet -> Ktorrent,该软件支持Bit Torrent协议。
[编辑] 安装电驴下载软件(可选)

安装支持p2p/ftp/http的下载软件mldoneky。

在Ubuntu中,打开终端,执行以下命令,或使用Adept/新立得,在其中搜索并标记安装。

sudo apt-get install kmldonkey mldonkey-server mldonkey-gui

安装过程中,需要用户配置是否在开机时自动启动:

mldonkey-server(Launch MLDonkey at startup?

这时建议选择"是",以方便进行配置。若选择是以後,在接下来的配置过程中对大部份选项都用默认设置,不过在设置的帐号密码时,最好重新设置下。安装完 mldonkey以後,若想开机不自行启动mldonkey-server,可以运行sudo dpkg-reconfigure mldonkey-server进行设置。

当完成kmldonkey mldonkey-server的安装以後,可以在firefox或者konqueror等浏览器的地址栏里输入http://127.0.0.1:4080/ 来直接访问mldonkey,也可以使用快捷方式(应用程序 -> Internet -> KMLDonkey)。

mldonkey缺省只支持电驴(edonkey2000)协议,若要支持BT/ftp/http/Gnutella等协议,需自行在配置菜单里开启。详细步骤请参考文档或自行摸索。

ubuntu gutsy的framebuffer问题
首先,编辑你的 /etc/initramfs-tools/modules 文件

sudo nano /etc/initramfs-tools/modules

加入如下三行内容
fbcon
vesafb
vga16fb

最重要的一步,要把文件/etc/modprobe.d/blacklist-framebuffer里面的vesafb和vga16fb这两行给注释掉。

sudo nano /etc/modprobe.d/blacklist-framebuffer


这样你就可以在内核后面加入vga=xxx这样的启动参数了。

不过,最好用hwinfo --framebuffer先看一下你显卡支持的vga数值,我的如下:

sudo hwinfo --framebuffer

02: None 00.0: 11001 VESA Framebuffer
[Created at bios.447]
Unique ID: rdCR.il6towt04X5
Hardware Class: framebuffer
Model: "Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS Intel(r) 82945GM Chipset Family Graphics Controller"
Vendor: "Intel Corporation"
Device: "Intel(r) 82945GM Chipset Family Graphics Controller"
SubVendor: "Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS"
SubDevice:
Revision: "Hardware Version 0.0"
Memory Size: 7 MB + 704 kB
Memory Range: 0xd0000000-0xd07affff (rw)
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+832), 8 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

所以我在内核后面加入了vga=0x0317,是1024x768的16位色。

最后刷新一下并重启(重要)。

sudo update-initramfs -u

-------------------
例外 对于个别N卡还需要nvdiafb

ubuntu gutsy是个很不错的发行版, 经过简单优化后, 无论效率和启动速度都远远比winxp更快。不过这个最新的内核却有一个不完美的地方, 就是对于笔记本和intel显卡的电源管理, 比如挂起后不能唤醒, 或者唤醒后出问题。

解决方案:
将/etc/default/acpi-support中的以下改为false, 即忽略掉显卡不被唤醒支持的部分
#SAVE_VBE_STATE=true
SAVE_VBE_STATE=false

#POST_VIDEO=true
POST_VIDEO=false

Ubuntu 8.04 (Hardy Heron)配置

★更新

请根据您的网络环境和网速条件选择以下合适的一组源用以获取服务器软件包资源以及更新系统。教育网用户推荐台湾的源(光纤就是爽啊~~),如果你有
IPV6,可以使用欧洲官方源,毕竟不可靠。到现在为止,暂不确定北邮的源是否都有效,据其同学反映,北邮源可靠程度不高。更新源列表及系统的命令为

sudo apt-get update
sudo apt-get dist-upgrade

推荐源列表:


# 欧洲官方源(建议网速好的电信去访问,否则那就慢慢套着驴车,慢悠悠拉着吧~
deb http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse


# 台湾NCHC源:
deb http://free.nchc.org.tw/ubuntu/ hardy main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ hardy-updates main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ hardy-security main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ hardy-proposed main restricted multiverse universe
deb http://free.nchc.org.tw/ubuntu/ hardy-backports main restricted multiverse universe

# 台湾交大源:
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ hardy main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ hardy-security main multiverse restricted universe
deb http://ubuntu.csie.nctu.edu.tw/ubuntu/ hardy-updates main multiverse restricted universe

更新系统完毕后,安装中文语言包,到系统(System)->系统管理(Administration)->语言支持
(Language Support)中,勾选汉语(Chinese)选项,自动下载中文语言包和SCIM的拼音支持。一直很奇怪hardy的语言包依赖关系,居然会把Thunderbird安装上- -b

如果是NVIDIA/ATI显卡,可以安装显卡驱动了,在系统->硬件驱动中,勾选“未使用”的显卡驱动,会自动从源上下载相关驱动。重启后
就可以正常使用特效等功能了。如果在“硬件驱动”中还有其他“未使用”的驱动,也可以勾选下载安装,通常是无线网卡和某些声卡。

★软件包安装

系统相关

QT程序输入法: scim-bridge-qt-client

Compiz特效管理器: compizconfig-settings-manager

转换ID3v2标签为UTF-8: python-mutagen
★转换当前目录层下的mp3文件:

mid3iconv -e gbk *.mp3

★转换当前目录下包括子目录在内的所有 mp3:

find . -iname "*.mp3″ -execdir mid3iconv -e gbk {} \;

主题: blubuntu-look
★安装了blubuntu-look后,登录后的背景色可以在gdmsetup中改为#0E4681

Terminal集成: yakuake

命令集合:
sudo apt-get install scim-bridge-qt-client compizconfig-settings-manager python-mutagen blubuntu-look yakuake


编译器相关

gcc: build-essential
★因为gcc版本的问题,build-essential中不包含libstdc++5了,在安装一些deb或者从源码编译的时候会出错,需要自己安装。

java: sun-java6-*

editor: vim-full
★修改配置文件:
cp /etc/vim/vimrc ~/.vimrc
vi ~/.vimrc
可以Google一下配置文件,网上有很多强大的配置文件。

命令集合:

sudo apt-get install libstdc++5 gcc-3.3-base build-essential sun-java6-* vim-full

多媒体相关

解码器: w32codecs, gstreamer

Video: vlc, mplayer
★如果Mplayer播放出现异常,将视频驱动选择为x11再试试。在hardy中的mplayer打开中文文件名的BUG已经消除了。

Audio: amarok, audacious

Flash: gnash

命令集合:
sudo apt-get install gstreamer0.10-* mplayer mplayer-fonts mozilla-mplayer vlc mozilla-plugin-vlc audacious audacious-plugins audacious-plugins-extra amarok gnash
wget -c http://www.debian-multimedia.org/po...07-0.1_i386.deb
sudo dpkg -i w32codecs_20071007-0.1_i386.deb


网络相关

FTP: gftp
★解决gFTP显示中文列表乱码问题:
修改启动脚本文件:

sudo gedit /usr/bin/gftp

在#!/bin/sh之后加上一行:export LANG=zh_CN
保存并执行命令生成相应的locale:

sudo locale-gen zh_CN

BBS Term: Qterm

Web Server: LAMP

ssh: OpenSSH

gmail新邮件通知: checkgmail

命令集合:
sudo apt-get install gftp qterm checkgmail
新立得里“编辑”->“使用任务分组标记软件包”,选中LAMP Server, OpenSSH


其他软件

解压缩: rar压缩&解压缩、rpm包转换工具、7zip

电子书: kchmviewer

pdf: Adobe Reader
★到此处下载:http://www.adobe.com/products/acrob...llversions.html

字典: 星际译王stardict
★字典库需要到http://stardict.sourceforge.net/cn/Dictionaries/stardict/dic

命令集合:
sudo apt-get install rar unrar alien p7zip-full kchmviewer sta

Firefox不能执行JavaApplet的解决方法

只需要吧libjavaplugin_oji.so做个链接到firefox的plugin中去即可。
ln -s
/usr/lib/jvm/java-1.6.0.u1-sun-1.6.0.u1/jre/plugin/i386/ns7/libjavaplugin_oji.so
libjavaplugin_oji.so


如果是opera, 则不需要, 但是要保证是32位或是64位一致的opera版本, 然后通
知opera自己的jre位置即可,例如tools/preference/tab/content/java中设置为
/usr/lib/jvm/java-1.6.0.u1-sun-1.6.0.u1/jre/plugin/i386

SUSE 11 KDE4下触摸板不能模拟单击双击的解决方法的问题, 解决方法如下
1、安装synaptics程序,gnome下yum install gsynaptics,KDE下yum install ksynaptics

2、修改/etc/X11/xorg.conf文件,在Section "InputDevice"字段后(EndSection后)添加

Section "InputDevice"
Identifier "Synaptics"
Driver "synaptics"
Option "Device" "/dev/input/event3" (非常重要!!可能大部分人的是/dev/input/mice, 这里改成了event3,因为我用cat /proc/bus/input/device查看后得出的我的触摸板 Handlers=mouse1 event3 ,所以改为event3,所以这个值是根据个人的笔记本触摸板的Handlers值来决定的)
Option "Protocol" "auto-dev" (如果不行也可以用event来代替auto-dev,根据硬件情况决定)

Option "Emulate3Buttons" "yes"
Option "SendCoreEvents" "true" (在本例中没有起到作用,加上也不影响)
Option "SHMConfig" "on" (原本这个应该是Option "SHMConfig" "true",不过这个true老是运行的时候说不是true,汗一个,生气了,改成on,根据实际情况决定on还是true,意义完全是一样的,如果不 设置的情况下运行gsynaptics是提示要设成true,运行ksynaptics是提示要设成on,在我机器上设成on两个都正常,没有冲突状况发 生)
Option "TapButton1" "1"
Option "TapButton2" "2"
(实际上要实现在触摸板上点击而不用附加键这两行是必须的!!)
EndSection

3、另外修改Section "ServerLayout"字段:

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
Inputdevice "Synaptics" (新加上的,必须的,应该是做开机引导用吧?)

MySQL 存取权限系统

6.1 权限系统做什么

MySQL权限系统的主要功能是证实连接到一台给定主机的一个用户,并且赋予该用户在一个数据库上select、 insert、update和delete的权限。

附加的功能包括有一个匿名的用户和对于MySQL特定的功能例如LOAD DATA INFILE进行授权及管理操作的能力。
6.2 MySQL 用户名和口令

由MySQL使用用户名和口令的方法与Unix或Windows使用的方式有很多不同之处:
MySQL 使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为 MySQL用户名登录,但是这仅仅为了方便。客户程序允许用-u或--user选项指定一个不同的名字,这意味着无论如何你不能使得一个数据库更安全,除非所有的MySQL用户名都有口令。任何人可以试图用任何名字连接服务器,而且如果他们指定了没有口令的任何名字,他们将成功。
MySQL用户名最长可以是16各字符;典型地,Unix用户名限制为8个字符。
MySQL口令与Unix口令没关系。在你使用登录到一台Unix机器口令和你使用在那台机器上存取一个数据库的口令之间没有必要有关联。
MySQL加密口令使用了一个Unix登录期间所用的不同算法,见7.4.12 杂项函数一节中描述PASSWORD()和ENCRYPT()函数部分。
6.3 与MySQL服务器连接

当你想要存取一个MySQL服务器时,MySQL客户程序一般要求你指定连接参数:你想要联接的主机、你的用户名和你的口令。例如,mysql客户可以象这样启动(可选的参数被包括在“[”和“]”之间):
shell> mysql [-h host_name][-u user_name][-pyour_pass ]

-h, -u和-p选项的另一种形式是--host=host_name、--user=user_name和--password=your_pass。注意在-p或--password=与跟随它后面的口令之间没有空格。

注意:在命令行上指定一个口令是不安全的!随后在你系统上的任何用户可以通过打类似这样的命令发现你的口令:ps auxww。见4.15.4 选项文件。

对于命令行没有的联接参数,mysql使用缺省值:
缺省主机名是localhost。
缺省用户名是你的Unix登录名。
如果没有-p,则没有提供口令。

这样, 对一个Unix用户joe,下列命令是等价的:
shell>mysql -h localhost -u joe
shell>mysql -h localhost
shell>mysql -u joe
shell>mysql

其它MySQL客户程序有同样表现。

在Unix系统上,当你进行一个连接时,你可以指定要使用的不同的缺省值,这样你不必每次在你调用一个客户程序是在命令行上输入他们。这可以有很多方法做到:
你能在你的主目录下“.my.cnf”的配置文件的[client]小节里指定连接参数。文件的相关小节看上去可能像这样:
[client]
host=host_name
user=user_name
password=your_pass

见4.15.4 选项文件。
你可以用环境变量指定连接参数。主机可用MYSQL_HOST指定,MySQL用户名字可用USER指定(仅对 Windows),口令可用MYSQL_PWD指定(但是这不安全,见下一节) 。

如果连接参数以多种方法被指定,在命令行上被指定的值优先于在配置文件和环境变量中指定的值,而在配置文件指定的值优先于在环境变量指定的值。
6.4 使你的口令安全

以一种暴露的可被其他用户发现的方式指定你的口令是不妥当的。当你运行客户程序时,你可以使用下列方法指定你的口令,还有每个方法的风险评估:
使用一个在命令行上-pyour_pass或--password=your_pass的选项。这很方便但是不安全,因为你的口令对系统状态程序(例如 ps)变得可见,它可以被其他的用户调用来显示命令行。(一般MySQL客户在他们的初始化顺序期间用零覆盖命令行参数,但是仍然有一个短暂间隔时间内参数值可见的。)
使用一个-p或--password选项(没有指定your_pass值)。在这种情况下,客户程序请求来自终端的口令:
shell>mysql - u user_name - p
Enter password: ********

客户回应“*”字符到作为输入你的口令的终端使得旁观者不能看见它。因为它对其他用户不可见,与在命令行上指定它相比,这样进入你的口令更安全。然而,这个输入一个口令的方法仅仅为你交互式运行程序是合适的。如果你想要从非交互式运行的一个脚本调用一个客户,就没有从终端输入入口令的机会。
在一个配置文件中存储你的口令。例如,你可你的主目录的“.my.cnf”文件中的[client]节列出你的口令:
[client]
password=your_pass

如果你在“.my.cnf”里面存储口令,文件应该不是组或世界可读或可写的。保证文件的存取模式是400或600。见4.15.4 选项文件。
你可在MYSQL_PWD环境变量中存储口令,但是这个方法必须想到是极不安全的且应该不使用。ps的某些版本包括显示运行进程的环境的选项;如果你设定 MYSQL_PWD,你的口令将对所有人是显而易见的,甚至在没有这样一个版本的ps系统上,假设没有其他方法观察到进程环境是不明智的。

总之,最安全的方法是让客户程序提示口令或在一个适当保护的“.my.cnf”文件中指定口令。
6.5 MySQL提供的权限

权限信息用user、db、host、tables_priv和columns_priv表被存储在mysql数据库中(即在名为mysql的数据库中)。在MySQL启动时和在6.9 权限修改何时生效所说的情况时,服务器读入这些数据库表内容。

本手册所用的涉及由MySQL提供的权限名称显示在下表,还有在授权表中每个权限的表列名称和每个权限有关的上下文: 权限 列 上下文
select Select_priv 表
insert Insert_priv 表
update Update_priv 表
delete Delete_priv 表
index Index_priv 表
alter Alter_priv 表
create Create_priv 数据库、表或索引
drop Drop_priv 数据库或表
grant Grant_priv 数据库或表
references References_priv 数据库或表
reload Reload_priv 服务器管理
shutdown Shutdown_priv 服务器管理
process Process_priv 服务器管理
file File_priv 在服务器上的文件存取


select、insert、update和delete权限允许你在一个数据库现有的表上实施操作。

SELECT语句只有在他们真正从一个表中检索行是才需要select权限,你可以执行某个SELECT语句,甚至没有任何到服务器上的数据库里的存取任何东西的许可。例如,你可使用mysql客户作为一个简单的计算器:
mysql> SELECT 1+1;
mysql> SELECT PI()*2;

index权限允许你创建或抛弃(删除)索引。

alter权限允许你使用ALTER TABLE。

create和drop权限允许你创建新的数据库和表,或抛弃(删除)现存的数据库和表。

注意:如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!

grant权限允许你把你自己拥有的那些权限授给其他的用户。

file权限给予你用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读和写服务器上的文件,任何被授予这个权限的用户都能读或写MySQL服务器能读或写的任何文件。

其余的权限用于管理性操作,它使用mysqladmin程序实施。下表显示mysqladmin支配每个管理性权限允许你执行的命令: 优惠 权限拥有者允许执行的命令
reload reload, refresh, flush-privileges, flush-hosts, flush-logs, flush-tables
shutdown shutdown
precess processlist, kill


reload 命令告诉服务器再读入授权表,refresh命令清洗所有表并打开和关闭记录文件,flush-privileges是reload的一个同义词,其它 flush-*命令执行类似refresh的功能,但是范围更有限,并且在某些情况下可能更好用。例如,如果你只是想清洗记录文件,flush-logs 比refresh是更好的选择。

shutdown命令关掉服务器。

processlist命令显示在服务器内执行的线程的信息。kill命令杀死服务器线程。你总是能显示或杀死你自己的线程,但是你需要process权限来显示或杀死其他用户启动的线程。

总的说来,只授予权限给需要他们的那些用户是一个好主意,但是你应该在授予某个权限时试验特定的警告:
grant权限允许用户放弃他们的权限给其他用户。2个有不同的权限并有grant权限的用户可以合并权限。
alter权限可以用于通过重新命名表来推翻权限系统。
file权限可以被滥用在服务器上读取任何世界可读(world-readable,即任何人可读)的文件到一张数据库表,然后其内容能用SELECT被存取。
shutdown权限通过终止服务器可以被滥用完全拒绝为其他用户服务, 。
precess权限能被用来察看当前执行的查询的普通文本,包括设定或改变口令查询。
在mysql数据库上的权限能被用来改变口令和其他存取权限信息。(口令被加密存储,所以一个恶意的用户不能简单地读取他们。然而,有足够的权限,同一个用户能用不同的一个代替一个口令。)

有一些事情你不能用MySQL权限系统做到:
你不能明显地指定一个给定用户应该被拒绝存取。即,你不能明显地匹配一个用户并且然后拒绝连接。
你不能指定一个用户有权创建立或抛弃一个数据库中的表,也不能创建或抛弃数据库本身。
6.6 权限系统工作原理

MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情。当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限。

MySQL 在认定身份中考虑你的主机名和用户名字,是因为有很小的原因假定一个给定的用户在因特网上属于同一个人。例如,用户从whitehouse.gov连接的 bill不必和从mosoft.com连接bill是同一个人。 MySQL通过允许你区分在不同的主机上碰巧有同样名字用户来处理它:你可以对从whitehouse.gov连接授与bill一个权限集,而为从 microsoft.com的连接授予一个不同的权限集。

MySQL存取控制包含2个阶段:
阶段1:服务器检查你是否允许连接。
阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库中一个表精选(select)行或从数据库抛弃一个表,服务器确定你对表有select权限或对数据库有drop权限。

服务器在存取控制的两个阶段使用在mysql的数据库中的user、db和host表,在这些授权表中字段如下: 表名称 user db host
范围字段 Host Host Host
User Db Db
Password User
权限字段 Select_priv Select_priv Select_priv
Insert_priv Insert_priv Insert_priv
Update_priv Update_priv Update_priv
Delete_priv Delete_priv Delete_priv
Index_priv Index_priv Index_priv
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Drop_priv Drop_priv Drop_priv
Grant_priv Grant_priv Grant_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv


对存取控制的第二阶段(请求证实),如果请求涉及表,服务器可以另外参考tables_priv和columns_priv表。这些表的字段如下: 表名称 tables_priv columns_priv
范围字段 Host Host
Db Db
User User
Table_name Table_name
Column_name
权限字段 Table_priv Column_priv
Column_priv
其他字段 Timestamp Timestamp
Grantor


每个授权表包含范围字段和权限字段。

范围字段决定表中每个条目的范围,即,条目适用的上下文。例如, 一个user表条目的Host和User值为'thomas.loc.gov'和'bob'将被用于证实来自主机thomas.loc.gov的bob对服务器的连接。同样,一个db表条目的Host、User和Db字段的值是'thomas.loc.gov'、'bob'和'reports'将用在 bob从主机联接thomas.loc.gov存取reports数据库的时候。 tables_priv和columns_priv表包含范围字段,指出每个条目适用的表或表/列的组合。

对于检查存取的用途,比较Host值是忽略大小写的。User、Password、Db和Table_name值是区分大小写的。Column_name值在MySQL3.22.12或以后版本是忽略大小写的。

权限字段指出由一个表条目授予的权限,即,可实施什么操作。服务器组合各种的授权表的信息形成一个用户权限的完整描述。为此使用的规则在6.8 存取控制, 阶段2:请求证实描述。

范围字段是字符串,如下所述;每个字段的缺省值是空字符串: 字段名 类型
Host CHAR(60)
User CHAR(16)
Password CHAR(16)
Db CHAR(64) (tables_priv和columns_priv表为CHAR(60))


在user、db和host表中,所有权限字段被声明为ENUM('N','Y')--每一个都可有值'N'或'Y',并且缺省值是'N'.

在tables_priv和columns_priv表中,权限字段被声明为SET字段: 表名 字段名 可能的集合成员
tables_priv Table_priv 'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
tables_priv Column_priv 'Select', 'Insert', 'Update', 'References'
columns_priv Column_priv 'Select', 'Insert', 'Update', 'References'


简单地说,服务器使用这样的授权表:
user表范围字段决定是否允许或拒绝到来的连接。对于允许的连接,权限字段指出用户的全局(超级用户)权限。
db和host表一起使用:
db表范围字段决定用户能从哪个主机存取哪个数据库。权限字段决定允许哪个操作。
当你想要一个给定的db条目应用于若干主机时,host表作为db表的扩展被使用。例如,如果你想要一个用户能在你的网络从若干主机使用一个数据库,在用户的db表的Host条目设为空值,然后将那些主机的每一个移入host表。这个机制详细描述在6.8 存取控制, 阶段2:请求证实。
tables_priv和columns_priv表类似于db表,但是更精致:他们在表和列级应用而非在数据库级。

注意管理权限(reload, shutdown, 等等)仅在user表中被指定。这是因为管理性操作是服务器本身的操作并且不是特定数据库,因此没有理由在其他授权表中列出这样的权限。事实上,只需要请教user表来决定你是否执行一个管理操作。

file权限也仅在user表中指定。它不是管理性权限,但你读或谢在服务器主机上的文件的的能力独立于你正在存取的数据库。

当mysqld服务器启动时,读取一次授权表内容。对授权表的更改生效在6.9 权限更改何时生效描述。

当你修改授权表的内容时,确保你按你想要的方式更改权限设置是一个好主意。为帮助诊断问题,见6.13 “存取拒绝引起”错误的原因。对于安全问题上的忠告,见6.14 怎么对使MySQL安全对抗解密高手。

一个有用的诊断工具是mysqlaccess脚本,由Carlier Yves 提供给MySQL分发。使用--help选项调用mysqlaccess查明它怎样工作。注意:mysqlaccess仅用user、db和host表仅检查存取。它不检查表或列级权限。
6.7 存取控制, 阶段1:连接证实

当你试图联接一个MySQL服务器时,服务器基于你的身份和你是否能通过供应正确的口令验证身份来接受或拒绝连接。如果不是,服务器完全具结你的存取,否则,服务器接受连接,然后进入阶段2并且等待请求。

你的身份基于2个信息:
你从那个主机连接
你的MySQL用户名

身份检查使用3个user表(Host, User和Password)范围字段执行。服务器只有在一个user表条目匹配你的主机名和用户名并且你提供了正确的口令时才接受连接。

在user表范围字段可以如下被指定:
一个Host值可以是主机名或一个IP数字,或'localhost'指出本地主机。
你可以在Host字段里使用通配符字符“%”和“_”。
一个Host值'%'匹配任何主机名,一个空白Host值等价于'%'。注意这些值匹配能创建一个连接到你的服务器的任何主机!
通配符字符在User字段中不允许,但是你能指定空白的值,它匹配任何名字。如果user表匹配到来的连接的条目有一个空白的用户名,用户被认为是匿名用户 (没有名字的用户),而非客户实际指定的名字。这意味着一个空白的用户名被用于在连接期间的进一步的存取检查(即,在阶段2期间)。
Password字段可以是空白的。这不意味着匹配任何口令,它意味着用户必须不指定一个口令进行连接。

非空白Password值代表加密的口令。 MySQL不以任何人可以看的纯文本格式存储口令,相反,正在试图联接的一个用户提供的口令被加密(使用PASSWORD()函数),并且与存储了user表中的已经加密的版本比较。如果他们匹配,口令是正确的。

下面的例子显示出各种user表中Host和User条目的值的组合如何应用于到来的连接: Host 值 User 值 被条目匹配的连接
'thomas.loc.gov' 'fred' fred, 从thomas.loc.gov 连接
'thomas.loc.gov' '' 任何用户, 从thomas.loc.gov连接
'%' 'fred' fred, 从任何主机连接
'%' '' 任何用户, 从任何主机连接
'%.loc.gov' 'fred' fred, 从在loc.gov域的任何主机连接
'x.y.%' 'fred' fred, 从x.y.net、x.y.com,x.y.edu等联接。(这或许无用)
'144.155.166.177' 'fred' fred, 从有144.155.166.177 IP 地址的主机连接
'144.155.166.%' 'fred' fred, 从144.155.166 C类子网的任何主机连接


既然你能在Host字段使用IP通配符值(例如,'144.155.166.%'匹配在一个子网上的每台主机),有可能某人可能企图探究这种能力,通过命名一台主机为144.155.166.somewhere.com。为了阻止这样的企图,MySQL不允许匹配以数字和一个点起始的主机名,这样,如果你用一个命名为类似1.2.foo.com的主机,它的名字决不会匹配授权表中Host列。只有一个IP数字能匹配IP通配符值。

一个到来的连接可以被在user表中的超过一个条目匹配。例如,一个由fred从thomas.loc.gov的连接匹配多个条目如上所述。如果超过一个匹配,服务器怎么选择使用哪个条目呢?服务器在启动时读入user表后通过排序来解决这个问题,然后当一个用户试图连接时,以排序的顺序浏览条目,第一个匹配的条目被使用。

user表排序工作如下,假定user表看起来像这样:
+-----------+----------+-
| Host | User | ...
+-----------+----------+-
| % | root | ...
| % | jeffrey | ...
| localhost | root | ...
| localhost | | ...
+-----------+----------+-

当服务器在表中读取时,它以最特定的Host值为先的次序排列('%'在Host列里意味着“任何主机”并且是最不特定的)。有相同Host值的条目以最特定的User值为先的次序排列(一个空白User值意味着“任何用户”并且是最不特定的)。最终排序的user表看起来像这样:
+-----------+----------+-
| Host | User | ...
+-----------+----------+-
| localhost | root | ...
| localhost | | ...
| % | jeffrey | ...
| % | root | ...
+-----------+----------+-

当一个连接被尝试时,服务器浏览排序的条目并使用找到的第一个匹配。对于由jeffrey从localhost的一个连接,在Host列的 'localhost'条目首先匹配。那些有空白用户名的条目匹配连接的主机名和用户名。('%'/'jeffrey'条目也将匹配,但是它不是在表中的第一匹配。)

这是另外一个例子。假定user桌子看起来像这样:
+----------------+----------+-
| Host | User | ...
+----------------+----------+-
| % | jeffrey | ...
| thomas.loc.gov | | ...
+----------------+----------+-

排序后的表看起来像这样:
+----------------+----------+-
| Host | User | ...
+----------------+----------+-
| thomas.loc.gov | | ...
| % | jeffrey | ...
+----------------+----------+-

一个由jeffrey从thomas.loc.gov的连接被第一个条目匹配,而一个由jeffrey从whitehouse.gov的连接被第二个匹配。

普遍的误解是认为,对一个给定的用户名,当服务器试图对连接寻找匹配时,明确命名那个用户的所有条目将首先被使用。这明显不是事实。先前的例子说明了这点,在那里一个由jeffrey从thomas.loc.gov的连接没被包含'jeffrey'作为User字段值的条目匹配,但是由没有用户名的题目匹配!

如果你有服务器连接的问题,打印出user表并且手工排序它看看第一个匹配在哪儿进行。
6.8 存取控制,阶段2:请求证实

一旦你建立了一个连接,服务器进入阶段2。对在此连接上进来的每个请求,服务器检查你是否有足够的权限来执行它,它基于你希望执行的操作类型。这正是在授权表中的权限字段发挥作用的地方。这些权限可以来子user、db、host、tables_priv或columns_priv表的任何一个。授权表用 GRANT和REVOKE命令操作。见7.26 GRANT和REVOKE 句法。(你可以发觉参考6.6 权限系统怎样工作很有帮助,它列出了在每个权限表中呈现的字段。)

user表在一个全局基础上授予赋予你的权限,该权限不管当前的数据库是什么均适用。例如,如果user表授予你delete权限,你可以删除在服务器主机上从任何数据库删除行!换句话说,user表权限是超级用户权限。只把user表的权限授予超级用户如服务器或数据库主管是明智的。对其他用户,你应该把在user表中的权限设成'N'并且仅在一个特定数据库的基础上授权, 使用db和host表。

db和host表授予数据库特定的权限。在范围字段的值可以如下被指定:
通配符字符“%”和“_”可被用于两个表的Host和Db字段。
在db表的'%'Host值意味着“任何主机”,在db表中一个空白Host值意味着“对进一步的信息咨询host表”。
在host表的一个'%'或空白Host值意味着“任何主机”。
在两个表中的一个'%'或空白Db值意味着“任何数据库”。
在两个表中的一个空白User值匹配匿名用户。

db 和host表在服务器启动时被读取和排序(同时它读user表)。db表在Host、Db和User范围字段上排序,并且host表在Host和Db范围字段上排序。对于user表,排序首先放置最特定的值然后最后最不特定的值,并且当服务器寻找匹配入条目时,它使用它找到的第一个匹配。

tables_priv和columns_priv表授予表和列特定的权限。在范围字段的值可以如下被指定:
通配符“%”和“_”可用在使用在两个表的Host字段。
在两个表中的一个'%'或空白Host意味着“任何主机”。
在两个表中的Db、Table_name和Column_name字段不能包含通配符或空白。

tables_priv和columns_priv表在Host、Db和User字段上被排序。这类似于db表的排序,尽管因为只有Host字段可以包含通配符,但排序更简单。

请求证实进程在下面描述。(如果你熟悉存取检查的源代码,你会注意到这里的描述与在代码使用的算法略有不同。描述等价于代码实际做的东西;它只是不同于使解释更简单。)

对管理请求(shutdown、reload等等),服务器仅检查user表条目,因为那是唯一指定管理权限的表。如果条目许可请求的操作,存取被授权了,否则拒绝。例如,如果你想要执行mysqladmin shutdown,但是你的user表条目没有为你授予shutdown权限,存取甚至不用检查db或host表就被拒绝。(因为他们不包含 Shutdown_priv行列,没有这样做的必要。)

对数据库有关的请求(insert、update等等),服务器首先通过查找user表条目来检查用户的全局(超级用户)权限。如果条目允许请求的操作,存取被授权。如果在user表中全局权限不够,服务器通过检查db和host表确定特定的用户数据库权限:
服务器在db表的Host、Db和User字段上查找一个匹配。 Host和User对应连接用户的主机名和MySQL用户名。Db字段对应用户想要存取的数据库。如果没有Host和User的条目,存取被拒绝。
如果db表中的条目有一个匹配而且它的Host字段不是空白的,该条目定义用户的数据库特定的权限。
如果匹配的db表的条目的Host字段是空白的,它表示host表列举主机应该被允许存取数据库的主机。在这种情况下,在host表中作进一步查找以发现 Host和Db字段上的匹配。如果没有host表条目匹配,存取被拒绝。如果有匹配,用户数据库特定的权限以在db和host表的条目的权限,即在两个条目都是'Y'的权限的交集(而不是并集!)计算。(这样你可以授予在db表条目中的一般权限,然后用host表条目按一个主机一个主机为基础地有选择地限制它们。)

在确定了由db和host表条目授予的数据库特定的权限后,服务器把他们加到由user表授予的全局权限中。如果结果允许请求的操作,存取被授权。否则,服务器检查在tables_priv和columns_priv表中的用户的表和列权限并把它们加到用户权限中。基于此结果允许或拒绝存取。

用布尔术语表示,前面关于一个用户权限如何计算的描述可以这样总结:
global privileges
OR (database privileges AND host privileges)
OR table privileges
OR column privileges

它可能不明显,为什么呢,如果全局user条目的权限最初发现对请求的操作不够,服务器以后把这些权限加到数据库、表和列的特定权限。原因是一个请求可能要求超过一种类型的权限。例如,如果你执行一个INSERT ... SELECT语句,你就都要insert和select权限。你的权限必须如此以便user表条目授予一个权限而db表条目授予另一个。在这种情况下,你有必要的权限执行请求,但是服务器不能自己把两个表区别开来;两个条目授予的权限必须组合起来。

host表能被用来维护一个“安全”服务器列表。在TcX,host表包含一个在本地的网络上所有的机器的表,这些被授予所有的权限。

你也可以使用host表指定不安全的主机。假定你有一台机器public.your.domain,它位于你不认为是安全的一个公共区域,你可以用下列的host表条目子允许除了那台机器外的网络上所有主机的存取:
+--------------------+----+-
| Host | Db | ...
+--------------------+----+-
| public.your.domain | % | ... (所有权限设为 'N')
| %.your.domain | % | ... (所有权限设为 'Y')
+--------------------+----+-

当然,你应该总是测试你在授权表中的条目(例如,使用mysqlaccess)让你确保你的存取权限实际上以你认为的方式被设置。
6.9 权限更改何时生效

当mysqld启动时,所有的授权表内容被读进存储器并且从那点生效。

用GRANT、REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到。

如果你手工地修改授权表(使用INSERT、UPDATE等等),你应该执行一个FLUSH PRIVILEGES语句或运行mysqladmin flush-privileges告诉服务器再装载授权表,否则你的改变将不生效,除非你重启服务器。

当服务器注意到授权表被改变了时,现存的客户连接有如下影响:
表和列权限在客户的下一次请求时生效。
数据库权限改变在下一个USE db_name命令生效。

全局权限的改变和口令改变在下一次客户连接时生效。
6.10 建立初始的MySQL权限

在安装MySQL后,你通过运行scripts/mysql_install_db安装初始的存取权限。见4.7.1 快速安装概述。 scripts/mysql_install_db脚本启动mysqld服务器,然后初始化授权表,包含下列权限集合:
MySQL root用户作为可做任何事情的一个超级用户被创造。连接必须由本地主机发出。注意:出世的root口令是空的,因此任何人能以root而没有一个口令进行连接并且被授予所有权限。
一个匿名用户被创造,他可对有一个'test'或以'test_'开始的名字的数据库做任何时期事情,连接必须由本地主机发出。这意味着任何本地用户能连接并且视为匿名用户。
其他权限被拒绝。例如,一般用户不能使用mysqladmin shutdown或mysqladmin processlist。

注意:对Win32的初始权限是不同的。见4.12.4 在Win32上运行MySQL。

既然你的安装初始时广开大门,你首先应该做的事情之一是为MySQL root用户指定一个口令。你可以做如下(注意,你使用PASSWORD()函数指定口令):
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> FLUSH PRIVILEGES;

在MySQL 3.22和以上版本中,你可以使用SET PASSWORD语句:
shell> mysql -u root mysql
mysql> SET PASSWORD FOR root=PASSWORD('new_password');

设置口令的另一种方法是使用mysqladmin命令:
shell> mysqladmin -u root password new_password

注意:如果你使用第一种方法在user表里直接更新口令,你必须告诉服务器再次读入授权表(用FLUSH PRIVILEGES),因为否则改变将不被注意到。

一旦root口令被设置,此后当你作为root与服务器连接时,你必须供应那个口令。

你可能希望让root口令为空白以便当你施行附加的安装时,你不需要指定它或测试,但是保证在任何真实的生产工作中使用你的安装之前,设置它。

看看scripts/mysql_install_db脚本,看它如何安装缺省的权限。你可用它作为一个研究如何增加其他用户的基础。

如果你想要初始的权限不同于上面描述的那些,在你运行mysql_install_db之前,你可以修改它。

为了完全重建权限表,删除在包含mysql数据库的目录下所有“*.frm”,“*.MYI”和“*.MYD”文件。(这是在数据库目录下面命名为 “mysql”的目录,当你运行mysqld --help时,它被列出。)然后运行mysql_install_db脚本,可能在首先编辑它拥有你想要的权限之后。

注意:对于比MySQL 3.22.10旧的版本,你不应该删除“*.frm”文件。如果你偶然做了,你应该在运行mysql_install_db之前你的MySQL分发中拷回它们。
6.11 向MySQL增加新用户权限

你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。

下面的例子显示出如何使用mysql客户安装新用户。这些例子假定权限根据以前的章节描述的缺省被安装。这意味着为了改变,你必须在mysqld正在运行同一台机器上,你必须作为MySQL root用户连接,并且root用户必须对mysql数据库有insert权限和reload管理权限。另外,如果你改变了root用户口令,你必须如下的mysql命令指定它。

你可以通过发出GRANT语句增加新用户:
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY 'something' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

这些GRANT语句安装3个新用户:
monty
可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令('something'做这个。注意,我们必须对monty@localhost和 monty@"%"发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由 mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。
admin
可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。
dummy
可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为'N'--USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。

你也可以直接通过发出INSERT语句增加同样的用户存取信息,然后告诉服务器再次装入授权表:
shell> mysql --user=root mysql
mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('something'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%','monty',PASSWORD('something'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user SET Host='localhost',User='admin',
Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;

取决于你的MySQL版本,对上述,你可能必须使用一个不同数目'Y'值(在3.22.11以前的版本有更少的权限列)。对admin用户,只用在3.22.11开始的版本具有的更加可读的INSERT扩充的语法。

注意,为了设置一个超级用户,你只需创造一个user表条目,其权限字段设为'Y'。不需要db或host表的条目。

在user表中的权限列不是由最后一个INSERT语句明确设置的(对dummy用户),因此那些列被赋予缺省值'N'。这是GRANT USAGE做的同样的事情。

下列例子增加一个用户custom,他能从主机localhost、server.domain和whitehouse.gov连接。他只想要从 localhost存取bankaccount数据库,从whitehouse.gov存取expenses数据库和从所有3台主机存取customer 数据库。他想要从所有3台主机上使用口令stupid。

为了使用GRANT语句设置个用户的权限,运行这些命令:
shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON bankaccount.*
TO custom@localhost
IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON expenses.*
TO custom@whitehouse.gov
IDENTIFIED BY 'stupid';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON customer.*
TO custom@'%'
IDENTIFIED BY 'stupid';

通过直接修改授权表设置用户权限,运行这些命令(注意,在结束时FLUSH PRIVILEGES):
shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
VALUES('localhost','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
VALUES('server.domain','custom',PASSWORD('stupid'));
mysql> INSERT INTO user (Host,User,Password)
VALUES('whitehouse.gov','custom',PASSWORD('stupid'));
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES
('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES
('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;

头3 个INSERT语句增加user表条目,允许用户custom用给定口令从不同的主机进行连接,但是没有授予任何许可(所有权限被设置为缺省值'N')。后3个INSERT语句增加db表条目,授予custom以bankaccount、expenses和customer数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装入他们(用FLUSH PRIVILEGES)以便使权限修改生效。

如果你想要给特定的用户从一个给定的域上的任何机器上存取权限,你可以发出一个如下的GRANT语句:
mysql> GRANT ...
ON *.*
TO myusername@"%.mydomainname.com"
IDENTIFIED BY 'mypassword';

为了通过直接修改授权表做同样的事情,这样做:
mysql> INSERT INTO user VALUES ('%.mydomainname.com', 'myusername',
PASSWORD('mypassword'),...);
mysql> FLUSH PRIVILEGES;

你也可以使用xmysqladmin、mysql_webadmin甚至xmysql在授权表中插入、改变和更新值。你可以在MySQL的Contrib目录找到这些实用程序。
6.12 怎样设置口令

在前面小节的例子里说明了一个重要的原则:当你使用INSERT或UPDATE语句存储一个非空的口令时,你必须使用PASSWORD()函数加密它。这是因为在user表中以加密形式存储口令,而不是作为纯文本。如果你忘记这个事实,你可能像这样试图设置口令:
shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES

结果是纯文本值'biscuit'作为口令被存储在user表中。在用户jeffrey试图用这个口令连接服务器时,mysql客户用PASSWORD() 加密它并且将结果送给服务器,服务器比较在user表中的值(它是纯文本值'biscuit')和加密的口令(而不是 'biscuit'),比较失败并且服务器拒绝连接:
shell> mysql -u jeffrey -pbiscuit test
Access denied

因为当他们被插入user表时,口令必须被加密,相反,INSERT语句应该象这样被指定:
mysql> INSERT INTO user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));

当你使用SET PASSWORD语句时,你也必须使用PASSWORD()函数:
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');

如果你使用GRANT ... IDENTIFIED BY语句或mysqladmin password命令设置口令,PASSWORD()函数是不必要的。他们都考虑到为你加密口令,多以你可像这样指定一个口令'biscuit':
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';


shell> mysqladmin -u jeffrey password biscuit

注意: PASSWORD()不是以在Unix口令加密的同样方法施行口令加密。你不应该假定如果你的Unix口令和你的MySQL口令是一样的,PASSWORD()将导致与在Unix口令文件被存储的同样的加密值。见6.2 MySQL 用户名和口令。
6.13 Access denied错误的原因

当你试着联接MySQL服务器时,如果你碰到Access denied错误,显示在下面的表指出一些你能用来更正这个问题的动作:
你是在安装MySQL以后运行mysql_install_db的脚本,来设置初始授权表内容吗?如果不是,这样做。见6.10 设置初始MySQL权限。通过执行这个命令测试初始权限:
shell> mysql -u root test

服务器应该让你无误地连接。你也应该保证你在MySQL数据库目录有一个文件“user.MYD”。通常,它是“PATH/var/mysql/user.MYD”,在此PATH是MySQL安装根目录的路径。
在一个新的安装以后,你应该连接服务器并且设置你的用户及其存取许可:
shell> mysql -u root mysql

服务器应该让你连接,因为MySQL root用户初始时没有口令。既然那也是一个安全风险,当你正在设置其他MySQL用户时,设定root口令是一件重要的事请。如果你作为root尝试连接并且得到这个错误:
Access denied for user: '@unknown' to database mysql

这意味着,你没有一个条目在user表中的一个User列值为'root'并且mysqld不能为你的客库解析主机名。在这种情况下,你必须用--skip -grant-tables选项重启服务器并且编辑你的“/etc/hosts”或“\windows\hosts”文件为你的主机增加一个条目。
如果你从一个3.22.11以前的版本更新一个现存的MySQL安装到3.22.11版或以后版本,你运行了 mysql_fix_privilege_tables脚本吗?如果没有,运行它。在GRANT语句变得能工作时,授权表的结构用MySQL 3.22.11修改 。
如果你直接对授权表做修改(使用INSERT或UPDATE语句)并且你的改变似乎被忽略,记住,你必须发出一个 FLUSH PRIVILEGES语句或执行一个mysqladmin flush-privileges命令导致服务器再次读入表,否则你的改变要道下一次服务器被重启时再生效。记住在你设定root口令以后,你将不需要指定它,直到在你清洗(flush)权限以后,因为服务器仍然不会知道你改变了口令!
如果你的权限似乎在一个会话(session)当中改变了,可能是一个超级用户改变了他们。再次装入授权表作用于新客户连接,但是它也影响现存的连接,如6.9 权限改变何时生效小节所述。
为了测试,用--skip-grant-tables选项启动mysqld守护进程,然后你可以改变MySQL授权表并且使用mysqlaccess脚本检查你的修改是否有如期的效果。当你对你的改变满意时,执行mysqladmin flush-privileges告诉mysqld服务器开始使用新的权限表。注意:再次装入授权表覆盖了--skip-grant-tables选项。这允许你告诉服务器开始使用授权表,而不用停掉并重启它。
如果你有一个Perl、Python或ODBC程序的存取问题,试着用mysql -u user_name db_name或mysql -u user_name -pyour_pass db_name与服务器连接。如果你能用mysql客户连接,这是你程序的一个问题而不是存取权限的问题。(注意在-p和口令之间没有空格;你也能使用- -password=your_pass句法指定口令。)
如果你不能让口令工作,记得如果你用INSERT, UPDATE或SET PASSWORD语句设置口令,你必须使用PASSWORD()函数。如果你用GRANT ... INDENTIFIED BY语句或mysqladmin password命令指定口令,PASSWORD()函数是不需要的。见6.12 怎样设置口令。
localhost 是你本地主机名的一个同义词,并且也是如果你不明确地指定主机而客户尝试连接的缺省主机。然而,如果你正在运行于一个使用MIT-pthreads的系统上,连接localhost是不行的(localhost连接使用Unix套接字进行,它没被 MIT-pthreads支持),为了在这样的系统上避免这个问题,你应该使用--host选项明确地命名服务器主机,这将做一个 TCP/IP连接到mysqld服务器。在这种情况下,你必须有在服务器主机上的user表中条目的你真实的主机名。(即使你在服务器同一台的主机上运行一个客户程序,这也是真的。)
当尝试用mysql -u user_name db_name与数据库连接时,如果你得到一个Access denied错误,你可能有与user桌有关的问题,通过执行mysql -u root mysql并且发出下面的SQL语句检查:
mysql> SELECT * FROM user;

结果应该包含一个有Host和User列的条目匹配你的计算机主机名和你的MySQL用户名。
Access denied错误消息将告诉你,你正在用哪个用户尝试登录,你正在试图用连接哪个主机,并且你是否正在使用一个口令。通常,你应该在user表中有一个条目,正确地匹配在错误消息给出的主机名和用户名。
如果当你试着从一个不是MySQL服务器正在运行的主机上连接时,你得到下列错误,那么在user表中没有匹配那台主机行:
Host ... is not allowed to connect to this MySQL server

你可以通过使用mysql命令行工具(在服务器主机上!)修正它,把你正在试图连接的用户/主机名组合新加一行到user表中。如果你不在运行MySQL 3.22并且你不知道你正在从它连接的机器的IP数字或主机名,你应该把一个'%'条目作为Host列值放在user表中并且在服务器机器上使用-- log选项重启mysqld。在试图从客户机器连接以后,在MySQL记录文件中的信息将显示你如何真正进行连接。(然后用在记录文件上面显示出的实际的主机名代替user表中的'%'条目。否则,你将有一个不安全的系统。)
如果mysql -u root test工作但是mysql -h your_hostname -u root test导致Access denied,那么在user表中你可能没有你的主机的正确名字。这里的一个普遍的问题是在user表条目中的Host值指定一个唯一的主机名,但是你系统的名字解析例程返回一个完全正规的域名(或相反)。例如,如果你在user表中有一个主机是'tcx'的条目,但是你的 DNS告诉MySQL你的主机名是'tcx.subnet.se',条目将不工作。尝试把一个条目加到user表中,它包含你主机的IP数字作为Host 列的值。(另外,你可以把一个条目加到user表中,它有包含一个通配符如'tcx.%'的Host值。然而,使用以“%”结尾的主机名是不安全的并且不推荐!)
如果mysql -u user_name test工作但是mysql -u user_name other_db_name不工作,对other_db_name,你在db表中没有没有一个条目列出。
当在服务器机器上执行mysql -u user_name db_name时,它工作,但是在其它客户机器上执行mysql -h host_name -u user_name db_name时,它却不工作,你没有把客户机器列在user表或db表中。
如果你不能弄明白你为什么得到Access denied,从user表中删除所有Host包含通配符值的条目(包含“%”或“_”的条目)。一个很普遍的错误是插入用Host='%'和User= 'some user'插入一个新条目,认为这将允许你指定localhost从同一台机器进行连接。它不工作的原因是缺省权限包括一个有Host= 'localhost'和User=''的条目,因为那个条目一个比'%'更具体的Host值'localhost',当从localhost连接时,它用于指向新条目!正确的步骤是插入Host='localhost'和User='some_user'的第2个条目,或删除Host= 'localhost'和User=''条目。
如果你得到下列错误,你可以有一个与db或host表有关的问题:
Access to database denied

如果从db表中选择了在Host列有空值的条目,保证在host表中有一个或多个相应的条目,指定运用db表中的哪些主机。如果在使用SQL命令 SELECT ... INTO OUTFILE或LOAD DATA INFILE时,你得到错误,在user表中的你的条目可能启用file权限。
记住,客户程序将使用在配置文件或环境变量被指定了的连接参数。如果当你不在命令行上指定他们时,一个客户似乎正在发送错误的缺省连接参数,检查你的环境和在你的主目录下的“.my.cnf”文件。你也可以检查系统范围的MySQL配置文件,尽管更不可能将在那里指定那个客户的连接参数。见 4.15.4 选项文件。如果当你没有任何选项运行一个客户时,你得到Access denied,确认你没在任何选项文件里指定一个旧的口令!见4.15.4 选项文件。
如果任何其它事情失败,用调试选项(例如,--debug=d,general,query)启动mysqld守护进程。这将打印有关尝试连接的主机和用户信息,和发出的每个命令的信息。见G.1 调试一个MySQL服务器。
如果你有任何与MySQL授权表的其它问题,而且觉得你必须邮寄这个问题到邮寄表,总是提供一个MySQL授权表的倾倒副本(dump)。你可用 mysqldump mysql命令倾倒数据库表。象平时一样,用mysqlbug脚本邮寄你的问题。在一些情况下你可能用--skip-grant-tables重启 mysqld以便能运行mysqldump。
6.14 怎样使MySQL安全以对抗解密高手

当你连接一个MySQL服务器时,你通常应该使用一个口令。口令不以明文在连接上传输。

所有其它信息作为能被任何人读懂的文本被传输。如果你担心这个,你可使用压缩协议(MySQL3.22和以上版本)使事情变得更难。甚至为了使一切更安全,你应该安装ssh(见http://www.cs.hut.fi/ssh)。用它,你能在一个MySQL服务器与一个MySQL客户之间得到一个加密的 TCP/IP连接。

为了使一个MySQL系统安全,强烈要求你考虑下列建议:
对所有MySQL用户使用口令。记住,如果 other_user没有口令,任何人能简单地用mysql -u other_user db_name作为任何其它的人登录。对客户机/服务器应用程序,客户可以指定任何用户名是常见的做法。在你运行它以前,你可以通过编辑 mysql_install_db脚本改变所有用户的口令,或仅仅MySQL root的口令,象这样:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> FLUSH PRIVILEGES;
不要作为Unix的root用户运行MySQL守护进程。mysqld能以任何用户运行,你也可以创造一个新的Unix用户mysql使一切更安全。如果你作为其它Unix用户运行mysqld,你不需要改变在user表中的root用户名,因为MySQL用户名与Unix 用户名没关系。你可以作为其它Unix用户编辑mysql.server启动脚本mysqld。通常这用su命令完成。对于更多的细节,见18.8 怎样作为一个一般用户运行MySQL。
如果你把一个Unix root用户口令放在mysql.server脚本中,确保这个脚本只能对root是可读的。
检查那个运行mysqld的Unix用户是唯一的在数据库目录下有读/写权限的用户。
不要把process权限给所有用户。mysqladmin processlist的输出显示出当前执行的查询正文,如果另外的用户发出一个UPDATE user SET password=PASSWORD('not_secure')查询,被允许执行那个命令的任何用户可能看得到。mysqld为有process权限的用户保留一个额外的连接, 以便一个MySQL root用户能登录并检查,即使所有的正常连接在使用。
不要把file权限给所有的用户。有这权限的任何用户能在拥有mysqld守护进程权限的文件系统那里写一个文件!为了使这更安全一些,用SELECT ... INTO OUTFILE生成的所有文件对每个人是可读的,并且你不能覆盖已经存在的文件。file权限也可以被用来读取任何作为运行服务器的Unix用户可存取的文件。这可能被滥用,例如,通过使用LOAD DATA装载“/etc/passwd”进一个数据库表,然后它能用SELECT被读入。
如果你不信任你的DNS,你应该在授权表中使用IP数字而不是主机名。原则上讲,--secure选项对mysqld应该使主机名更安全。在任何情况下,你应该非常小心地使用包含通配符的主机名!

下列mysqld选项影响安全:
--secure
由gethostbyname ()系统调用返回的IP数字被检查,确保他们解析回到原来的主机名。这对某些外人通过模仿其它主机获得存取权限变得更难。这个选项也增加一些聪明的主机名检查。在MySQL3.21里,选择缺省是关掉的,因为它有时它花很长时间执行反向解析。MySQL 3.22缓存主机名并缺省地启用了这个选项。
--skip-grant-tables
这个选项导致服务器根本不使用权限系统。这给每个人以完全存取所有的数据库的权力!(通过执行mysqladmin reload,你能告诉一个正在运行的服务器再次开始使用授权表。)
--skip-name-resolve
主机名不被解析。所有在授权表的Host的列值必须是IP数字或localhost。
--skip-networking
在网络上不允许TCP/IP连接。所有到mysqld的连接必须经由Unix套接字进行。这个选项对使用MIT-pthreads的系统是不合适的,因为MIT-pthreads包不支持Unix套接字。