EEDU Blog: 博客 ·  资讯 ·  论坛 ·  留言
登录 新用户? 注册   |  

ahaoxie's blog

订阅博客:

环境生态网站长

服务器应用

UberGallery相册系统

UberGallery,一个简单易用的相册,使用PHP语言开发,不需要数据库。UberGallery的设计基于超简单的管理,外观整洁和专业。它无需数据库和管理控制。为你的公文包添加项目就和上传相片一样简单,同时你可为每一个图片集付上信息文档,公文包里东西的运行均是通过一个简单的php文档,你可以通过html和css样式表来很容易的定制php文档。UberGallery适合摄影师,美术设计者,插图画家,web开发者等等。

官网:http://www.ubergallery.net/
发表于: 2012-07-11 23:33 | 全文(查看: 34) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: 相册  新知  

Plone CMS

Plone在全球所有开源项目位居前2%,由340核心开发者参考研发,并在57个国家超过300个解决方案提供商。该项目自2001年以来积极开发,支持超过40种语言(包括简体中文),在主流CMS中拥有最好的安全纪录。

Plone CMS Windows 安装版使用exe封装,并集成了python运行环境,安装后即可以调试网站。

最新版:

Plone CMS v4.2 Changes:

New collections
Rules-based theming with Diazo
Other enhancements in Plone 4.2:
A simple way to test mail server settings using a form in the mail settings control panel
HTML5 support
A unified interface for listing content or representations of content (such as catalog brains). This makes it possible to widely reuse templates for content listings without modifying them.
Simplified, easier-to-scan search results, including the ability to search within a section, sorting options, and links to items’ locations on the site
Plone's installers will now use Python 2.7 by default. However, Plone will retain support for Python 2.6.


官网:http://plone.org/

发表于: 2012-07-10 03:39 | 全文(查看: 150) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: cms  python  新知  

AjaXplorer web文件管理

AjaXplorer是一个基于Web(PHP编程语言)的易于安装的远程档案管理器。其丰富的图形用户界面使终端用户能够很清晰的查阅档案信息。其主要特点是管理文件的常用操作(上传,下载,移动,重命名等) ,在线文件编辑,图片预览,书签管理系统,等等。

 

AjaXplorer主要特征

可以对远程端文件进行全功能的操作,如上传、下载、删除、更名等

提供了一个在线编辑器

图片预览功能

完备的书签系统

官网:http://sourceforge.net/projects/ajaxplorer/

发表于: 2012-06-26 12:49 | 全文(查看: 161) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: 档案管理  php  新知  

MySQL 4.1/5.0/5.1/5.5各版本的主要区别

MySQL 4.1/5.0/5.1/5.5各版本的主要区别

 

1、4.1 增加了子查询的支持,字符集增加UTF-8,GROUP BY语句增加了ROLLUP,mysql.user表采用了更好的加密算法。

2、5.0 增加了Stored procedures、Views、Cursors、Triggers、XA transactions的支持,增加了INFORATION_SCHEMA系统数据库。

3、5.1 增加了Event scheduler,Partitioning,Pluggable storage engine API ,Row-based replication、Global级别动态修改general query log和slow query log的支持。

 

4、5.5的新特征

1)默认存储引擎更改为InnoDB

2)提高性能和可扩展性

a.提高了默认线程并发数(innodb_thread_concurrency)

b.后台输入/输出线程控制(innodb_read_io_threads、innodb_write_io_threads)

c.主线程输入/输出速率控制(innodb_io_capacity)

d.操作系统内存分配程序使用控制(innodb_use_sys_malloc)

e.适应性散列索引(Hash Index)控制,用户可以关闭适应性散列功能。

f.插入缓冲(Insert Buffering)控制,用户可以关闭innodb的插入缓冲功能。

g.通过快速加锁算法提高可扩展性,innodb不在使用代理(posix)线程,而是使用原生的独立操作来完成互斥和读写锁定。

h.恢复组提交(Restored Group Commit)

i.提高恢复性能

j.多缓冲池实例

k.多个回滚段(Multiple Rollback Segments),之前的innodb版本最大能处理1023个并发处理操作,现在mysql5.5可以处理高达128K的并发事物,

l.Linux系统固有的异步输入/输出,mysql5.5数据库系统也提高了linux系统的输入输出请求的并发数。

m.扩展变化缓冲:添加了删除缓冲和清除缓冲

n.改善了日志系统互斥和单独刷新(Flush)列表互斥

o.改善清除程序进度,在mysql5.5中清楚操作线程是独立的线程,并支持并发,可以使用innodb_purge_treads配置。

p.改善事务处理中的元数据锁定。例如,事物中一个语句需要锁一个表,会在事物结束时释放这个表,而不是像以前在语句结束时释放表。

3)提高实用性

a.半同步复制(Semi-synchronous Replication)

b.复制Heartbeat

c.中继日志自动恢复(Automatic Relay Log Recovery)

d.根据服务器过滤项复制(Replication Per Server Filtering)

e.从服务器复制支持的数据类型转换(Replication Slave Side Data Type Conversions)

4)提高易管理性和效率

a.建立快速索引(Faster Index Creation)

b.高效的数据压缩(Efficient Data Compression)

c.为大物件和可变长度列提供高效存储

d.增加了INFORMATION_SCHEMA表,新的表提供了与InnoDB压缩和事务处理锁定有关的具体信息。

 

5)提高可用性

a.针对SIGNAL/RESIGNAL的新SQL语法

b.新的表/索引分区选项。MySQL5.5将表和索引RANG和LIST分区范围扩展到了非整数列和日期,并增加了在多个列上分区的能力。

6)改善检测和诊断

 Mysql5.5引入了一种新的性能架构(performancn_shema,P_S),用于监控mysql监控服务器运行时的性能。

发表于: 2012-06-17 02:59 | 全文(查看: 90) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  新知  

Anwsion(开源问答程序)

Anwsion 是一个类似知乎以问答为基础的完全开源的社交网络建站程序,基于 PHP+MYSQL 应用架构,它集合了问答,digg,wiki 等多个程序的优点,帮助用户轻松搭建专业的知识 库和在线问答社区。

0.5 Beta 1更新日志

增加升级器
增加附件上传开关
修正升级后静态文件浏览器缓存不更新的问题
系统架构微调
新的完成信息提示
增加问题评论
编辑问题不能管理附件问题
一些错误与细节方面的调整

有新通过时不刷新显示,通知内容基于问题合并,增加赞同与问题评论的通知
一个用户针对一个问题只能被邀请一次
后台增加是否开启快速发起开关,限制问题标题最多字数及答案最少字数,用户只能通过邀请注册开关
管理员有直接编辑回复权限
分类和话题修改时需要上传图片的bug

新增话题广场
新增威望体系, 威望来源
修正话题错误
修正最新动态错误
修改个人首页
更新关注按钮

新增新发起问题加入问题搜索提示信息
发现页面筛选样式调整
内容页面新增问题回复已经微博分享,关注问题的按钮调整。
新增问ta(向某某某发起问题)的功能。
话题广场
最佳答案的调整
赞同跟反对问题样式调整
按钮样式更新
个人中心页面调整

官网:http://www.anwsion.com

发表于: 2012-06-16 23:26 | 全文(查看: 84) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: 问答  新知  

Mysql从5.1升级到5.5

以前mysql升级基本就是升级程序文件即可,但是5.5版本有了一些不同,开始没搞太明白,所以走了一些弯路。

其实道理很简单,就是log文件格式变了,删了ib_logfile0和ib_logfile1从新生成即可。

但是最保险的方式是用mysql_upgrade.exe -u root -p升级确认一下。

因为我的5.1.44版本,中间从5.0.x的某个版本开始到现在,好几年也没执行过upgrade,所以在升级之前我先执行了一下,确认升级到5.1.44(见data/mysql_upgrade_info).

然后升级程序文件,注意不要覆盖data目录,但是data目录下有个performance_schema目录,把这个新增的目录拷贝过来。

然后配置my.ini,注意5.5默认是innodb引擎,所以innodb的目录一定设置好,都是指向data目录(最好是full_path)。这时如果启动mysql服务,基本会是失败,.err文件会报告ib_logfile的size错误,云云;不用理,删掉那俩日志文件,再从新启动服务即可成功。成功之后建议再次mysql_upgrade确保升级到最新的5.5.9.(转)

发表于: 2012-06-16 06:10 | 全文(查看: 147) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  新知  

升级 MySQL

1、概述

通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本。例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MySQL 4.1 或 MySQL 5.0。

以下是在升级 MySQL 时需要注意的事项:

  • 仔细阅读一下升级的目标版本的新特性和改变的特性,以及2个版本之间的不同特性
  • 升级前一定要备份所有的数据
  • 如果是在Windows平台上升级MySQL,请阅读附录"在Windows平台上升级MySQL"
  • 有些不同版本间的升级可能会涉及对授权表的修改,请尤其注意这个问题,详情请阅读附录"升级授权表"
  • 如果正在运行着同步,请阅读附录"升级同步"
  • 如果之前运行着MySQL-Max发布版本,想要升级到非MySQL-Max发布版本时,就需要从 mysqld_safe 去掉启动 mysqld-max服务器的参数

在同一个发布系列版本的MySQL间,可以随意拷贝格式文件和数据文件。如果在MySQL运行过程中改变了字符集,就需要对每个MyISAM表执行"myisamchk -r -q --set-character-set=charset"命令修复一下。否则的话,索引的排序可能不正确,因为修改了字符集,就可能会改变索引的顺序。

通常情况下,升级到新版本不需要修改任何数据表。请检查MySQL发布事项中提到的升级需要注意的地方,如果发现不能直接升级的话,就先用 mysqldump 将数据导出来,然后再导回去。

如果担心升级失败,就先把旧版本的MySQL改个名字备份起来,以备所需。

同时,升级完之后可能还需要重新编译跟MySQL相关的程序,因为新版本的头文件和库文件可能有改变了。

如果升级后发生问题了,请先检查是否使用了旧的my.cnf配置文件,可以通过执行命令"mysqld --print-defaults"来打印出各种配置信息来确认。

升级的时候最好也升级类似Perl的 DBD::mysql 模块,同样,对PHP和Python而言也是一样。

2、从 MySQL 5.0 升级到 MySQL 5.1

从 5.0 升级到 5.1 的时候,必须要升级授权表。否则,可能某些存储过程无法运行。详情请看附录"mysql_update MySQL升级时检查数据表"。

以下是从 5.0 升级到 5.1 需要注意的事项:

  • 检查所有的变化,尤其注意那些标志为"不兼容的变化"的部分。详情请看附录"mysql_update MySQL升级时检查数据表"
  • 可能某些发布版本会改变授权表的机制
  • 查看所有重大的变化,详情请看MySQL手册的"D.1.1.?Changes in release 5.1.10 (Not yet released)"章节

以下是升级到MySQL 5.1之后会发生的一些变化:

服务器部分

  • 不兼容的变化:MySQL 5.1 实现了支持无需重启服务器就能在运行时加载或卸载API插件。这个特性需要用到mysql.plugin表,可以运行"mysql_upgrade"命令来创建该表

    插件安装在系统变量 plugin_dir 所指的目录下。这个变量也控制着用户自定义函数(UDFs)所在目录,这相对以前的版本有所改变。在MySQL 5.1中,所有的UDFs库必须都安装到 plugin_dir 目录下,从旧版本升级的时候,必须把那些库文件都移动到这个目录下

  • 不兼容的变化:系统变量 table_cache 改名为 table_open_cache
  • 不兼容的变化:在MySQL 5.1.6 中 FULLTEXT 的索引结构发生变化了。当升级到 5.1.6 甚至更高之后,需要对每个包含 FULLTEXT 字段的数据表执行"REPAIR TABLE"语句
  • 在 MySQL 5.1.6 以前,MySQL把普通的查询日志和慢查询都写到文件中。从5.1.6以后,这些日志可以灵活地选择是是写到日志文件中(跟以前一样)或者写到 mysql 数据库的 general_log 和 slow_log 表中。如果启用日志记录,这2种方式都可以使用。选项 --log-output 用来控制这2种日志的记录方式
  • 从5.1.6开始,特殊字符集的数据库和表的标识符在创建相应目录和文件时都会用对应的字符集编码了

SQL分

  • 不兼容的变化:在MySQL 5.1.8开始,TYPE = engine_name 还仍然是 ENGINE = engine_name 的同义语法,但有警告。从5.2开始,将完全删除这种语法,并报告错误
  • 不兼容的变化:在MySQL 5.0.10中,触发器的命名空间已经改变了。在以前,触发器的名字必须和每个数据表都不一样。现在,只需要在数据库内唯一就行了。隐含的变化就是,DROP TRIGGER 语法使用模式名而非数据表名(模式名是可选参数,如果忽略了,就使用当前的模式)

    当从5.0升级到5.0.10及更高时,则必须删除触发器后重新创建它们,否则升级后就无法删除触发器了。建议如下:

    1. 导出触发器:

      SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,
      '', t.ACTION_TIMING, '', t.EVENT_MANIPULATION, ' ON ',
      t.EVENT_OBJECT_SCHEMA,
      '.', t.EVENT_OBJECT_TABLE,
      ' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
      INTO OUTFILE '/tmp/triggers.sql'
      FROM INFORMATION_SCHEMA.TRIGGERS AS t;

      将触发器导出到文件"/tmp/triggers.sql"中去。
    2. 停止服务器,然后删除数据库目录下的所有"TRG"文件:
      shell>rm -f*/*.TRG
    3. 启动服务器,倒入触发器:
      mysql> delimiter // ;
      mysql
      > source /tmp/triggers.sql //
  • 不兼容的变化:MySQL 5.1.6引进了触发器权限机制。以前,创建触发器需要有 SUPER 权限,现在,这个操作只需要有 TRIGGER 权限。这改善了权限安全状况
  • 一些MySQL 5.1中作为保留关键字在MySQL 5.0中并没有作为保留关键字
  • 新引入了"INSTALL PLUGIN"和"UNINSTALL PLUGIN"语句用于操作API插件。同样,创建 FULLTEXT 索引时,可以用"WITH PARSER"子句关联解析器插件

3、从 MySQL 4.1 升级到 MySQL 5.0

服务器部分

  • 不兼容的变化InnoDB 和 MyISAM 表中空格结尾的 TEXT 字段索引顺序改变了。因此需要运行"CHECK TABLE"语句修复数据表,如果出现错误,就运行"OPTIMIZE TABLE"或"REPAIR TABLE"语句修复,甚至重新转储(用mysqldump)
  • 不兼容的变化:从MySQL 5.0.15开始,如何处理 BINARY 字段中填充的值已经改变了。填充的值现在是 0x00 而非空格了,并且在取值的时候不会去除末尾的空格
  • 不兼容的变化:从MySQL 5.0.3开始,DECIMAL 的实现方式已经改变了,5.0对 DECIMAL 的格式限制严格多了
  • 不兼容的变化:在MySQL 5.0.3到5.0.5之间版本的 MyISAM 和 InnoDB 表中创建的 DECIMAL 字段升级到5.0.6之后会发生崩溃
  • 不兼容的变化:从5.0.3开始,除非和主函数之间有辅助的符号链接,否则服务器将不再默认地加载用户自定义函数(UDFs),也可以通过 --allow-suspicious-udfs 选项来启用
  • 不兼容的变化:5.0中禁用了更新日志(update log),不过可以用二进制日志(binary log)来代替它
  • 不兼容的变化:5.0中不再支持 ISAM 类型存储引擎(作者:可以通过重新编译源代码支持,不过非常不建议这么做)
  • 不兼容的变化:5.0中不再支持 MyISAM 的 RAID 选项,可以用 mysqldump 导出旧表然后重新导回去实现升级
  • 在5.0.6中,记录存储过程和触发器的二进制日志发生了一些变化,详见手册的"17.4 Binary Logging of Stored Routines and Triggers"

SQL部分

  • 不兼容的变化:从5.0.12开始,自然连接和使用 USING 的连接,包括外部连接的衍生形式,都按照SQL:2003标准来处理了;这个变化导致减少了自然连接和使用 USING 的连接产生的结果字段数,并且还将按照更合理的顺序显示这些字段,逗号比较符的优先顺序和 JOINLEFT JOIN 中的一样了
  • 不兼容的变化:在以前,等待超时的锁会导致 InnoDB 回滚当前全部事务,从5.0.13开始,就只回滚最近的SQL语句了
  • 不兼容的变化:触发器的变化,跟前面讲到的一样
  • 不兼容的变化:从5.0.15开始,CHAR() 函数返回二进制字符串,而不是按照连接字符集格式的字符串。子句 USING charset_name 可以自定义返回结果的字符集
  • 不兼容的变化:在5.0.13以前,NOW() 和 SYSDATE() 返回的结果一样。但从5.0.13开始,SYSDATE() 返回的是语句执行点的时间,这就可能和 NOW() 返回的结果不一样了,不过可以用 --sysdate-is-now 选项让 SYSDATE() 作为 NOW() 的同名函数
  • 不兼容的变化:在5.0.13以前,GREATEST(x,NULL) 和 LEAST(x,NULL) 如果 x 不是 NULL 值,则返回 x 。从5.0.13开始,只要任何参数是 NULL ,就返回 NULL,跟Oracle一样
  • 不兼容的变化:在4.1.13/5.0.8以前,DATETIME 的加0后就转换成 YYYYMMDDHHMMSS 格式,现在变成 YYYYMMDDHHMMSS.000000 格式了
  • 不兼容的变化:在4.1.12/5.0.6中,语句 LOAD DATA INFILE 和 SELECT ... INTO OUTFILE 中,当 FIELDS TERMINATED BY 和 FIELDS ENCLOSED BY 的值都是空的时候,结果就被改变了。以前,字段都按照它显示的宽度来读写的。现在变成按照足够保存字段值的宽度来读写它。然而,对MySQL 4.0.12/5.0.6来说,那些在它们之前导出来的文件可能无法正确用 LOAD DATA INFILE 语句导入
  • 一些MySQL 5.0中作为保留关键字在MySQL 4.1中并没有作为保留关键字
  • 从5.0.3开始,DECIMAL 用更有效的格式来存储
  • 5.0.3开始,在计算 DECIMAL 值和舍入精确值的时候采用精确数学
  • 4.1中,FLOAT 或 DOUBLE 之间的比较碰巧没问题,但在5.0中可能就不行了
  • 从5.0.3开始,VARCHAR 和 VARBINARY 字段中末尾的空格不再删除
  • 从5.0.3开始,BIT 是一个独立的数据类型了,不再是 TINYINT(1) 的同名词了
  • MySQL 5.0.2增加了一些SQL模式以使对排除包含非法或者缺失值得记录有着更严格的控制
  • 从5.0.2开始,关键字 SCHEMA 和 SCHEMAS 被认为分别是 DATABASE 和 DATABASES 的同名词
  • 5.0中用户变量对大小写不敏感,而4.1中则不然
  • 增加了一个新的启动选项 innodb_table_locks,它导致 LOCK TABLE 时也可以请求 InnoDB 表锁。这个选项默认打开,不过可能在 AUTOCOMMIT=1 和 LOCK TABLES 应用中会导致死锁

C API部分

  • 不兼容的变化:由于5.0中 DECIMAL 数据类型的实现方式发生了变化,因此如果使用就版本的库文件需要注意这个问题
  • 不兼容的变化在5.0.3中,ER_WARN_DATA_TRUNCATED 警告符号改名为 WARN_DATA_TRUNCATED 了
  • MYSQL 结构体中的 reconnect 标志被 mysql_real_connect() 设为 0。

4、从 MySQL 4.0 升级到 MySQL 4.1

服务器部分

  • 不兼容的变化:以下好几个都是需要重建数据表的,可以使用 mysqldump 导出表后重新导回去

    • 如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB 表。则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了
    • 从4.1.3开始,InnoDB 表采用同一种字符集比较函数来比较那些非latin1_swedish_ci 字符集且不是 BINARY 的字符串
    • 如果在4.1.0到4.1.5版本的MySQl中对 UTF8 字段或者其他多字节字段作了前缀索引,则在升级到4.1.6及更高时必须重建表
    • 如果在4.1之前,数据库、表、字段、约束名中使用了重音字符(字节值是128到255的字符),那么不能直接升级到4.1。因为4.1使用 UTF8 来存储元数据名。
    • 字符串根据标准SQL来比较:比较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串。现在的结果是 'a'> 'a\t',以前则不这样。可以用 mysqlcheck来检查一下数据表
    • MyISAM 现在使用更好的校验和算法了
  • 不兼容的变化:MySQL把字符串类型字段的长度定义理解为字符长度而不是字节长度。
  • 重要提示:MySQL 4.1用 UTF8 字符集存储数据表名和字段名。如果有用标准 7字节 US-ASCII 范围之外的字符作为表名/字段名的话,需要重建表
  • 重要提示:升级到4.1.1或更高后,就很难降级回到4.0或4.1了,因为 InnoDB 使用了多个表空间的缘故
  • 不兼容的变化:MySQL 4.1.13支持让每个连接设定时区,因此系统变量 timezone 改成 system_time_zone
  • 所有的数据表和非二进制字符串(CHARVARCHAR,和 TEXT)的字段都有字符集,二进制字符串字段包括 BINARYVARBINARY,和 BLOB
  • MySQL4.0中,如果有字段类型为 CHAR BINARY 或 VARCHAR BINARY,则它们会被当作二进制字符串类型
  • 如果数据表的字段中存储着MySQL 4.1直接就能支持的字符集字符数据时,则可以将这个字段的值转换成由合适的字符集存储
  • MySQL 4.1中对数据结构描述文件 .frm 的格式稍作改进,新版本能兼容这个新格式,但是旧版本则不能
  • windows下的服务器启动时增加 --shared-memory 选项即可支持从本地客户端连接时使用共享内存
  • 不兼容的变化:从MySQL 4.1.1开始,对用户自定义函数集合接口发生了很大改进
  • 不兼容的变化:从4.1.10a开始,除非和主函数之间有辅助的链接,否则服务器将不再默认地加载用户自定义函数(UDFs),也可以通过 --allow-suspicious-udfs 选项来启用

客户端部分

  • mysqldump 默认启用 --opt 和 --quote-names 选项

SQL部分

  • 不兼容的变化:字符串根据标准SQL来比较,如上面的"服务器变化"部分中提到的
  • 不兼容的变化TIMESTAMP 返回 'YYYY-MM-DD HH:MM:SS' 格式的字符串。在MySQL 4.0中,可以增加选项 --new 来获得MySQL 4.1中这方面的特性
  • 不兼容的变化:二进制数据例如 0xFFDF 被当成字符串而非数字
  • 不兼容的变化:在MySQL 4.1.1前,语句解析器不是那么严格,它在处理字符串转时间转换时会忽略第一个数字前的其他字符。在4.1.1之后,就比较严格了
  • 不兼容的变化:在MySQL 4.1.2,SHOW TABLE STATUS 结果的 Type 字段改名为 Engine 了
  • 当执行多表删除语句时,要删除的表只能使用它的别名,而不能用真实表名
  • 返回结果是 DATEDATETIME,或 TIME 类型的函数的结果会被转换成时间型
  • AUTO_INCREMENT 字段不能设定 默认(DEFAULT) 值了
  • LIMIT 不再接受负数参数了
  • SERIALIZE 不再是 sql_mode 变量的有效值了,它的取代值是 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

C API部分

MySQL 4.1中的密码哈希算法做了改进以提升安全性,不过会导致兼容性问题。使用MySQL 4.0及更早版本的客户端库文件会发生问题。

  • 不兼容的变化mysql_shutdown() 函数增加一个参数:SHUTDOWN-level
  • 某些函数例如 mysql_real_query() 发生错误时返回 1 而非 -1

密码处理部分

MySQL 4.1中的密码哈希算法做了改进以提升安全性,不过会导致兼容性问题。使用MySQL 4.0及更早版本的客户端库文件会发生问题。解决办法有:

  • 升级客户端库文件到4.1(不用升级服务器端库文件)
  • 运行 mysql_fix_privilege_tables 脚本来加宽 user 表中的 Password 字段值,以适应新的哈希算法。如果想要允许4.1以下的客户端还能连接到服务器,那么服务器运行时要增加参数--old-passwords

5、附录

在Windows平台上升级MySQL步骤:

  1. 备份旧数据
  2. 停止旧服务器
  3. 从windows的系统服务中删掉mysql服务,用如下命令:
    C:\> C:\mysql\bin\mysqld --remove
  4. 用可执行安装文件方式安装mysql,或者解压可直接执行的二进制压缩包来安装
  5. 重新注册mysql服务,用如下命令:
    C:\> C:\mysql\bin\mysqld --install
  6. 重启服务器
  7. 其他的问题详见上面提到的各种升级中会碰到的情况

2、)升级授权表

升级授权表之前一定要备份好 mysql 数据库,以备升级失败时使用旧的授权表。

在unix或类unix系统中,运行 mysql_fix_privilege_tables 脚本来升级授权表:

shell> mysql_fix_privilege_tables

必须在 mysqld 运行着的时候执行这个脚本,它尝试使用 root 帐号来连接服务器;因此,当 root 需要密码时,用如下方式来指定密码:

shell> mysql_fix_privilege_tables --password=root_password

在 MySQL 4.1之前,则是用如下形式来指定密码:

shell> mysql_fix_privilege_tables root_password

接下来 mysql_fix_privilege_tables 脚本会升级授权表,在这个过程中可能会有一些 Duplicate column name 警告信息,无需理会它们。待它运行完之后,重启一下服务器即可。

在windows平台上,授权表想要升级到4.0.15并不容易。从4.0.15开始,发行版中包含一个sql脚本:mysql_fix_privilege_tables.sql,用 mysql 客户端运行它来升级授权表,运行类似如下命令:

C:\> C:\mysql\bin\mysql -u root -p mysql
mysql
> SOURCE C:/mysql/scripts/mysql_fix_privilege_tables.sql

把上面提到的目录改成真实的目录。

3、)升级同步

请查看我翻译的文档"6.6 升级同步"

4、) mysql_update MySQL升级时检查数据表

每次升级的时候都必须运行 mysql_upgrade 脚本。它检查了当前版本的MySQL下的所有数据库表的不兼容性,就会检查这些表;并且发现有问题时,也会修复这些表。mysql_update 同时升级了系统表,因此可以兼容新的权限机制并且使用新增的权限。

由于 mysql_update 会把检查过和修复过的表都标记上当前的MySQL版本号,因而保证了下一次在同一个MySQL版本下运行这个脚本时,都会再次报告哪些表需要修复或检查。

它还会把MySQL的版本号记录在数据文件目录下的一个文件中:mysql_upgrade.info。这个文件用于标识当前发布版本检查表时哪些表可以略过,检查时想要忽略这个文件,只需附加上 --force 选项。

为了能检查和修复数据表,并且升级系统表,mysql_update 执行了一下命令:

mysqlcheck --check-upgrade --all-databases --auto-repair
mysql_fix_privilege_tables

mysql_update 目前只支持类unix平台;在windows下,需要手工执行 mysqlcheck 命令,升级授权表请看附录"升级授权表"。

执行 mysql_update 时,MySQL服务器必须运行着,它有以下几个参数:

  • --help

    显示帮助信息并且退出

  • --basedir=path

    设定MySQL的安装路径

  • --datadir=path

    设定MySQL的数据文件路径

  • --force

    告诉 mysql_update,在检查时忽略是否存在 mysql_upgrade.info 文件,强行检查该版本的MySQL数据表,不管是否已经检查过了

  • --user=user_name-u user_name

    连接到MySQL的用户名,默认是 root

  • --verbose

    冗余模式。发生问题时打印出更多的信息

其他的选项诸如 --password[=password] 是要传递给 mysqlcheck 和 mysql_fix_privilege_tables 脚本的,并不是必须的。(作者:叶金荣)

发表于: 2012-06-16 05:18 | 全文(查看: 123) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  新知  

MySQL身份认证漏洞 升级到5.5.24可修正

http://seclists.org/oss-sec/2012/q2/493
MySQL爆出了一个很大的安全漏洞,几乎影响5.1至5.5的所有版本。出问题的模块是登录时密码校验的部分(password.c),在知道用户名的情况下(如root),直接反复重试(平均大约256次)即可登入。不过,MySQL身份认证的时候是采用3元组,username,ip,password。如果client的IP在mysql.user表中找不到对应的,也无法登陆。

  这个BUG实际上早在4月份就被发现了,今年5月7号,MySQL发布5.5.24的时候,修正了这个BUG。

  漏洞分析:

  出问题的代码如下

/*
Check that scrambled message corresponds to the password; the function
is used by server to check that recieved reply is authentic.
This function does not check lengths of given strings: message must be
null-terminated, reply and hash_stage2 must be at least SHA1_HASH_SIZE
long (if not, something fishy is going on).
SYNOPSIS
check_scramble()
scramble clients' reply, presumably produced by scramble()
message original random string, previously sent to client
(presumably second argument of scramble()), must be
exactly SCRAMBLE_LENGTH long and NULL-terminated.
hash_stage2 hex2octet-decoded database entry
All params are IN.

RETURN VALUE
0 password is correct
!0 password is invalid
*/

my_bool
check_scramble(const uchar *scramble_arg, const char *message,
const uint8 *hash_stage2)
{
SHA1_CONTEXT sha1_context;
uint8 buf[SHA1_HASH_SIZE];
uint8 hash_stage2_reassured[SHA1_HASH_SIZE];

mysql_sha1_reset(&sha1_context);
/* create key to encrypt scramble */
mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH);
mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE);
mysql_sha1_result(&sha1_context, buf);
/* encrypt scramble */
my_crypt((char *) buf, buf, scramble_arg, SCRAMBLE_LENGTH);
/* now buf supposedly contains hash_stage1: so we can get hash_stage2 */
mysql_sha1_reset(&sha1_context);
mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE);
mysql_sha1_result(&sha1_context, hash_stage2_reassured);
return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
}

  memcmp的返回值实际上是int,而my_bool实际上是char。那么在把int转换成char的时候,就有可能发生截断。比如,memcmp返回0×200,截断后变成了0,调用check_scramble函数的就误以为“password is correct“。

  但是一般来说,memcmp的返回值都在[127,-128]之内。glibc的经SSE优化后的代码,不是如此。所以这个BUG只在特定的编译环境下才会触发:即编译MySQL的时候加了-fno-builtin,并且所使用的glibc是经SSE优化后的(一般系统自带的都是如此)。这里所说的glibc是指Linux的glibc,FreeBSD的libc不受影响。

  总的来说这个BUG还是比较严重的,上次MySQL出现这样的BUG还是在3.23/4.0时代。 (转)
发表于: 2012-06-15 13:03 | 全文(查看: 73) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  新知  

MYSQL 5.1.X尽快升级至MySQL 5.1.63

MySQL最近爆出一个Mysql身份认证漏洞(CVE-2012-2122),受影响的Mysql版本:< v5.1.63 、< v5.5.24、< v5.6.6 。为了保障数据库安全,请站长们确认你的Mysql版本并尽快升级更新Mysql至最新版本。

MySQL官方针对5.1分支进行了更新,发布了5.1.63版本。

该版本修复了两个安全漏洞(bug #64884和bug #59387,具体漏洞信息尚未公布)。另外,还改进部分功能和性能,包括:

  • 在短时间内从InnoDB表中删除大量数据,可能导致该操作停滞。如果发生此问题,重启服务器即可。该问题只发生在32位平台。
  • 如果服务器在执行TRUNCATE TABLE或CREATE INDEX语句时崩溃,或者对包含InnoDB表的数据库执行DROP DATABASE操作时,索引可能被破坏。
  • 当从InnoDB表中删除数据时,新插入的数据可能不会重用被释放的磁盘块,从而导致系统表空间大小增加。
  • --relay-log-space-limit选项有时可能会被忽略。
  • 从属服务器存储过程中的sql_mode=NO_BACKSLASH_ESCAPES处理不当,可能会导致复制失败。
  • 在查询执行期间,如果系统时间向后进行了调整,执行时间可能是负数。
  • 在Windows平台,如果试图使用共享内存进行连接,mysqlslap可能会崩溃。
详细信息http://dev.mysql.com/doc/refman/5.1/en/news-5-1-63.html

下载地址http://www.mysql.com/downloads/mysql/5.1.html
发表于: 2012-06-15 12:51 | 全文(查看: 184) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: mysql  新知  

Redmine(Web的项目管理)

Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了,但想坚持一个自由和开放源码的解决方案,可能会发现Redmine是一个有用的Scrum和敏捷的选择。 由于Redmine的设计受到Rrac的较大影响,所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上,他可以跨平台和数据库。

Redmine 2.0.0 发布了,该版本不再支持 Rails 2.3 ,而改用最新的 Rails 3 版本,可通过 Rubyforge 获取,而新特性将于 2.1.0 版本开始提供。Redmine 还需要继续处理一些 Rails 3 的兼容性问题,因此如果你想使用以前的一些插件,你还需等待。

Redmine v2.0.2是维护版本,修复了一些小 bug,同时包含一些关于 Rails 上的安全漏洞修复。

下载:http://www.redmine.org/projects/redmine/wiki/Download

演示:http://demo.redmine.org/

发表于: 2012-06-06 12:01 | 全文(查看: 248) | 评论(0) | 本文地址 | 收藏 
分类: 服务器应用(148)   标签: 项目管理  新知  
Page was generated in 13 milliseconds