Centos源码分发版安装MySQL 5.1

  1. 下载源码包

    http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

  2. 安装前准备

    安装编译工具:

    yum -y install gcc gcc-c++ make autoconf  libtool automake m4

    添加mysql用户

    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    tar xzvf mysql-5.1.45.tar.gz
    cd mysql-5.1.45

    配置编译器环境变量,一些在大多数系统中,可以得到快速、稳定的二进制。 查看详细说明

    CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
  3. Read the rest of this entry »

[转]高级PHP应用程序漏洞审核技术

==Ph4nt0m Security Team==

Issue 0×03, Phile #0×06 of 0×07
[目录]

1. 前言
2. 传统的代码审计技术
3. PHP版本与应用代码审计
4. 其他的因素与应用代码审计
5. 扩展我们的字典
5.1 变量本身的key
5.2 变量覆盖
5.2.1 遍历初始化变量
5.2.2 parse_str()变量覆盖漏洞
5.2.3 import_request_variables()变量覆盖漏洞
5.2.4 PHP5 Globals
5.3 magic_quotes_gpc与代码安全
5.3.1 什么是magic_quotes_gpc
5.3.2 哪些地方没有魔术引号的保护
5.3.3 变量的编码与解码
5.3.4 二次攻击
5.3.5 魔术引号带来的新的安全问题
5.3.6 变量key与魔术引号
5.4 代码注射
5.4.1 PHP中可能导致代码注射的函数
5.4.2 变量函数与双引号
5.5 PHP自身函数漏洞及缺陷
5.5.1 PHP函数的溢出漏洞
5.5.2 PHP函数的其他漏洞
5.5.3 session_destroy()删除文件漏洞
5.5.4 随机函数
5.6 特殊字符
5.6.1 截断
5.6.1.1 include截断
5.6.1.2 数据截断
5.6.1.3 文件操作里的特殊字符
6. 怎么进一步寻找新的字典
7. DEMO
8. 后话
9. 附录
Read the rest of this entry »

php mysql字符集设置

在php中读取数据库数据,我常常要设置字符集特别中文环境下(以下都已utf8为例),通常使 用

mysql_query('set names utf8');

但在(PHP 5 >= 5.2.3)之后有了mysql_set_charset(这也是官方推荐的)函数进行设置

mysql_set_charset('utf8');

而在使用mysqli时候使用bool mysqli::set_charset( string $charset )
———–相关补充(http://akrabat.com/page/2/)——————–
For PDO

$handle = new PDO("mysql:host=localhost;dbname=dbname",
    'username', 'password',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

For (ZendFramework )Zend_Db

$params = array(
    'host' => 'localhost',
    'username' => 'username',
    'password' => 'password',
    'dbname' => 'dbname',
    'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;');
);
$db = Zend_Db::factory('PDO_MYSQL', $params);

[mysql]全文搜索学习笔记

全文搜索功能:
MATCH (col1,col2,…) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])

MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、 VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引, 其速度比把资料输入现有FULLTEXT索引的速度更为快。全文搜索同MATCH()函数一起执行。

mysql> CREATE TABLE articles (
    ->   id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->   title VARCHAR(200),
    ->   body TEXT,
    ->   FULLTEXT (title,body)
    -> );

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('database');

更复杂的

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root') AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root');
全文限定条件
  • 全文搜索只适用于 MyISAM 表。
  • 全文搜索可以同大多数多字节字符集一起使用。Unicode属于例外情况;  可使用utf8 字符集 , 而非ucs2字符集。
  • 诸如汉语和日语这样的表意语言没有自定界符。因此, FULLTEXT分析程序不能确定在这些或其它的这类语言中词的起始和结束的位置。
  • 若支持在一个单独表中使用多字符集,则所有 FULLTEXT索引中的列 必须使用同样的字符集和库。
  • MATCH()列列表必须同该表中一些 FULLTEXT索引定义中的列列表完全符合,除非MATCH()在IN BOOLEAN MODE。
  • 对AGAINST() 的参数必须是一个常数字符串。

这项技术最适合同大型词库一起使用 (事实上, 此时它经过仔细的调整 )。对于很小的表,单词分布并不能充分反映它们的语义价值, 而这个模式有时可能会产生奇特的结果。

布尔全文搜索

利用IN BOOLEAN MODE修改程序, MySQL 也可以执行布尔全文搜索

布尔全文搜索具有以下特点:

  • 它们不使用 50% 域值。.
  • 它们不会按照相关性渐弱的顺序将行进行分类。你可以从上述问询结果中看到这一点:相关性最高的行是一个包含两个“MySQL” 的行,但它被列在最后的位置,而不是开头位置。
  • 即使没有FULLTEXT,它们仍然可以工作,尽管这种方式的搜索执行的速度非常之慢。
  • 最小单词长度全文参数和最大单词长度全文参数均适用。
  • 停止字适用。
mysql> SELECT * FROM articles WHERE MATCH (title,body)
    -> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
全文搜索带查询扩展

全文搜索支持查询扩展功能 (特别是其多变的“盲查询扩展功能” )。若搜索短语的长度过短, 那么用户则需要依靠全文搜索引擎通常缺乏的内隐知识进行查询。这时,查询扩展功能通常很有用。例如, 某位搜索 “database” 一词的用户,可能认为“MySQL”、“Oracle”、“DB2” and “RDBMS”均为符合 “databases”的项,因此都应被返回。这既为内隐知识。

注释:  盲查询扩展功能很容易返回非相关文件而增加无用信息,因此只有在查询一个长度很短的短语时才有必要使用这项功能。

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body)
    -> AGAINST ('database' WITH QUERY EXPANSION);

参考资料:[官方]全文搜索功能

windows下手动安装mysql5.0

1.首先去下载unzip安装包(Without installer)http://dev.mysql.com/downloads/mysql/5.0.html#win32。
2.然后解到你的需要放置目录。当然接着是配置my.ini
具体可以看看:http://www.sitebuddy.com/mysql/install_wizard_mysql_41
但记得写正确配置文件里路径参数。
3.安装成系统服务,如:(安装目录:C:\Program Files\MySQL\MySQL Server 5.0)

"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt"
--install MySQL5
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"

完成后,就医使用net start MySQL 开启服务了

附上我的开发时使用的配置:
[ini]
[client]

port=3306

[mysql]

default-character-set=latin1

# SERVER SECTION
# ———————————————————————-
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

port=3306

basedir=”x:/server/MySQL5/”

datadir=”x:/server/MySQL5/Data/”

default-character-set=latin1

default-storage-engine=INNODB

sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

max_connections=100

query_cache_size=0

table_cache=256

tmp_table_size=17M

thread_cache_size=8

myisam_max_sort_file_size=100G

myisam_max_extra_sort_file_size=100G

myisam_sort_buffer_size=34M

key_buffer_size=25M

read_buffer_size=64K
read_rnd_buffer_size=256K

sort_buffer_size=256K

innodb_additional_mem_pool_size=2M

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=1M

innodb_buffer_pool_size=47M

innodb_log_file_size=24M

innodb_thread_concurrency=8

[/ini]