免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: luren04
打印 上一主题 下一主题

【申请加精】MySQL 5.1参考手册  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-04-15 11:37 |只看该作者
1.8.5. MySQL与标准SQL的差别
1.8.5.1. 子查询
1.8.5.2. SELECT INTO TABLE
1.8.5.3. 事务和原子操作
1.8.5.4. 存储程序和触发程序
1.8.5.5. 外键
1.8.5.6. 视图
1.8.5.7. ‘--’作为注释起始标记
我们试图使MySQL服务器遵从ANSI SQL标准和ODBC SQL标准,但在某些情况下MySQL服务器执行的操作有所不同:

·         对于VARCHAR列,存储值时删除了尾部空间。(在MySQL 5.0.3中更正)。请参见A.8节,“MySQL中的已知事宜”。

·         在某些情况下,定义表或更改其结构时,将CHAR列转换为VARCHAR列。(在MySQL 5.0.3中更正)。请参见13.1.5.1节,“沉寂的列规格变更”。

·         删除表时,不自动取消关于表的权限。必须明确发出REVOKE语句,以撤销针对表的权限。请参见13.5.1.3节,“GRANT和REVOKE语法”。

·         CAST()函数不支持对REAL或BIGINT的抛弃。请参见12.8节,“Cast函数和操作符”。

·         标准SQL要求,SELECT语句中的HAVING子句能够引用GROUP BY子句中的列。在MySQL 5.0.2之前,不能完成该功能。

1.8.5.1. 子查询
MySQL 4.1支持子查询和导出表。“子查询”指的是嵌套在另一语句中的SELECT语句。“导出表”(未命名视图)是另一语句的FROM子句中的子查询。请参见13.2.8节,“Subquery语法”。

从MySQL 4.1版起,可以使用联合或其他方法重写大多数子查询。关于如何完成该任务的更多信息,请参见13.2.8.11节,“对于较早的MySQL版本,采用联合方法重写子查询”。

1.8.5.2. SELECT INTO TABLE
MySQL服务器不支持Sybase SQL扩展: SELECT ... INTO TABLE ....。但MySQL服务器支持标准的SQL语法INSERT INTO ... SELECT ...,它基本上相同。请参见13.2.4.1节,“INSERT ... SELECT语法”。

INSERT INTO tbl_temp2 (fld_id)    SELECT tbl_temp1.fld_order_id    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;作为备选方式,可以使用SELECT INTO OUTFILE ...或CREATE TABLE ... SELECT。

从5.0版开始,MySQL支持SELECT ... INTO,以及用户变量。在使用光标和局部变量的存储程序中也可以使用相同的语法。请参见20.2.9.3节,“SELECT ... INTO语句”。

1.8.5.3. 事务和原子操作
MySQL服务器(3.23至该系列的最高版本,所有4.0版本,以及更高版本)支持采用InnoDB和BDB事务存储引擎的事务。InnoDB提供了全面的ACID兼容性。请参见第15章:存储引擎和表类型。

MySQL服务器中的其他非事务性存储引擎(如MyISAM)遵从不同的数据完整性范例,称之为“原子操作”。按照事务术语,MyISAM表总能高效地工作在AUTOCOMMIT=1模式下。原子操作通常能提供可比较的完整性以及更好的性能。

由于MySQL服务器支持两种范例,因而你能决定是否利用原子操作的速度更好地服务于你的应用程序,或使用事务特性。该选择可按表进行。

正如所阐述的那样,事务性和非事务性表类型之间的权衡主要取决于性能。事务性表对内存和磁盘空间的要求更高,CPU开销也更大。另一方面,多种事务性表类型,如InnoDB,也能提供很多显著特性。MySQL服务器的模块化设计允许同时使用不同的存储引擎,以满足不同的要求,并在所有情形下,提供最佳性能。

但是,即便使用非事务性MyISAM表,你将如何使用MySQL服务器的特性来保持严格的完整性呢?这些特性与事务性表类型相比又如何呢?

1.    如果应用程序采用了特定的编写方式,依赖于在关键情况下能够调用ROLLBACK而不是COMMIT,那么事务性类型更方便。使用事务,还能确保未完成的更新或崩溃的活动不被提交到数据库,能为服务器提供自动回滚的机会,并保存你的数据库。

如果使用非事务性表,MySQL服务器几乎在所有情况下均允许你解决潜在的问题,方式是在更新前进行简单检查,并运行检查数据库一致性的简单脚本,如果出现不一致性,该脚本能自动修复它或给出告警。注意,仅使用MySQL日志或增加额外日志,通常能完美地更正表,同时不会造成数据完整性损失。

2.    在很多情况下,能够对关键的事务更新进行重写,使之成为“原子”类型。一般而言,所有由事务解决的完整性问题均能用LOCK TABLES或原子更新解决,从而确保了服务器不会自动中断,后者是事务性数据库系统的常见问题。

3.    为了安全使用MySQL服务器,无论是否使用事务性表,仅需启用备份和二进制日志功能。这样,你就能解决使用其他事务性数据库系统时遇到的任何问题。无论使用的数据库系统是什么,启用备份总是个好主意。

事务范型有自己的优点和不足之处。很多用户和应用程序开发人员喜欢这类简单性,在出现问题时或必要时,通过代码解决问题。但是,即使你是原子操作范型的新手,或更熟悉事务,也请考虑非事务性表的速度益处,与经过优化调整的最快的事务性表相比,它的速度快3~5倍。

在完整性具有最高重要性的情况下,即使是对非事务性表,MySQL也能提供事务级别的可靠性和安全性。如果使用LOCK TABLES锁定了表,所有更新均将被暂时中止直至完整性检查完成。如果你获得了对某一表的READ LOCAL锁定(与写锁定相对),该表允许在表尾执行并行插入,当其他客户端执行插入操作时,允许执行读操作。新插入的记录不会被有读锁定属性的客户端看到,直至解除了该锁定为止。使用INSERT DELAYED,能够将插入项置于本地队列中,直至锁定解除,不会让客户端等待插入完成。请参见13.2.4.2节,“INSERT DELAYED语法”。

从我们赋与其名称的意义上,“原子”绝非不可思议的。它仅意味着,你能确信在每个特性更新运行的同时,其他用户不能干涉它,而且不会出现自动回滚(如果你不小心,对于事务性表,这种情况可能发生)。MySQL服务器还能保证不存在脏读。

下面列出了使用非事务性表的一些技术:

·         对于需要事务的循环,通常能使用LOCK TABLES进行编码,不需要光标来更新正在处理的记录。

·         要想避免使用ROLLBACK,可采取下述策略:

1.    使用LOCK TABLES锁定所有希望访问的表。

2.    执行更新前,测试必须为真的条件。

3.    如果一切正常,执行更新。

4.    使用UNLOCK TABLES解除锁定。

与使用具有回滚可能性的事务性表相比,它通常具有更快的速度,虽然并非始终如此。该解决方案唯一不能处理的情形是,在更新中途杀死了线程。在这种情况下,将释放所有锁定,但某些更新可能尚未执行。

·         也可以使用函数在单一操作中更新记录。采用下述技术,能获得效率很高的应用程序。

o        根据其当前值更改列。

o        仅更新出现实际变化的列。

例如,当我们更新某些客户信息时,仅更新已更改的客户数据,与原始行相比,仅测试已更改的数据或依赖于已更改数据的数据是否未出现变化。对于已更改数据的测试,它是通过UPDATE语句的WHERE子句完成的。如果记录未更新,将向客户端发出消息: “一些你改变的数据已被其他用户更改”。接下来,我们在窗口中给出了旧行和新行,以便用户决定使用哪个版本。

这给出了与列锁定类似的结果,但效果更好,使用相对于其当前值的值,仅更新了某些列。这意味着,典型的UPDATE语句与下面给出的类似:

UPDATE tablename SET pay_back=pay_back+125; UPDATE customer  SET    customer_date='current_date',    address='new address',    phone='new phone',    money_owed_to_us=money_owed_to_us-125  WHERE    customer_id=id AND address='old address' AND phone='old phone';它很有效,即使其他客户端更改了pay_back或money_owed_to_us列中的值,也能使用。

·         在很多情况下,用户希望将LOCK TABLES和/或ROLLBACK用于管理唯一ID。可以在不使用锁定功能或回滚的情况下,使用AUTO_INCREMENT列以及LAST_INSERT_ID() SQL函数或mysql_insert_id() C API函数,更有效地处理之。请参见12.9.3节,“信息函数”。请参见25.2.3.36节,“mysql_insert_id()”。

我们通常能使用代码来处理行级锁定方面的需求。在某些情况下,实际上不需要它,InnoDB表支持行级锁定。通过MyISAM表,能够在表中使用标志列,并完成类似下面的操作:

UPDATE tbl_name SET row_flag=1 WHERE id=ID;如果找到行,而且原始行中的row_flag不是1,对于受影响的行数,MySQL返回1。

你可以认为MySQL将前述查询更改为:

UPDATE tbl_name SET row_flag=1 WHERE id=ID AND row_flag <> 1;1.8.5.4. 存储程序和触发程序
对于MySQL,在5.0版本中实现了存储程序。请参见第20章:存储程序和函数。

从5.0.2版开始,在MySQL中实现了基本的触发器功能,计划在MySQL 5.1中进一步发展它。请参见第21章:触发程序。

1.8.5.5. 外键
在MySQL服务器3.23.44和更高版本中,InnoDB存储引擎支持对外键约束的检查功能,这些约束包括CASCADE、ON DELETE和ON UPDATE。请参见15.2.6.4节,“FOREIGN KEY约束”。

对于InnoDB之外的其他存储引擎,MySQL服务器能够解析CREATE TABLE语句中的FOREIGN KEY语法,但不能使用或保存它。未来将进行扩展,能够将这类信息保存到表规范文件中,以便能被mysqldump和ODBC检索。稍后,还将为MyISAM表实现外键约束。

外键增强为数据库开发人员提供了多项益处:

·         假定关联设计恰当,外键约束使得程序员更难将不一致性引入数据库。

·         数据库服务器具有集中式约束检查功能,因而没有必要在应用程序一侧执行这类检查。这样,就消除了不同应用程序使用不同方式检查约束的可能性。

·         使用级联更新和删除,简化了应用程序代码。

·         设计恰当的外键有助于以文档方式记录表间的关系。

请记住,这些好处是以数据库服务器为执行必要检查而需的额外开销为代价的。服务器额外检查会影响性能,对于某些应用程序,该特性不受欢迎,应尽量避免。(出于该原因,在一些主要的商业应用程序中,在应用程序级别上实施了外键逻辑)。

MySQL允许数据库开发人员选择要使用的方法。如果你不需要外键,并希望避免与强制引用完整性有关的开销,可选择另一种表类型取而代之,如MyISAM。(例如,MyISAM存储引擎为仅执行INSERT和SELECT操作的应用程序提供了极快的性能,这是因为插入能和检索同时进行)。请参见7.3.2节,“表锁定事宜”。

如果你不打算利用引用完整性检查具备的优点,请记住下述要点:

·         不存在服务器端外键关联检查时,应用程序本身必须处理这类关联事宜。例如,将行按恰当顺序插入表时应谨慎,并应避免产生孤立的子记录。必须能够在多记录插入操作期间更正出现的错误。

·         如果ON DELETE是应用程序所需的唯一引用完整性功能,请注意,从MySQL服务器4.0起,可以使用多表DELETE语句,用单一语句从多个表中删除行。请参见13.2.1节,“DELETE语法”。

·         从具有外键的表删除记录时,在缺少ON DELETE的情况下,一种解决方式是为应用程序增加恰当的DELETE语句。实际上,它与使用外键同样快,而且移植性更好。

注意,使用外键在某些情况下会导致问题。

·         外键支持能处理很多引用完整性事宜,但仍需要仔细设计键的关系,以避免循环规则或不正确的级联删除组合。

·         DBA需要创建关联拓扑,这会使从备份中恢复单独表变得困难,该类情形并不罕见。(加载依赖其他表的表时,MySQL允许你临时禁止外键检查,从而降低了该难度)。请参见15.2.6.4节,“FOREIGN KEY约束”。在MySQL 4.1.1以前。重新加载时,mysqldump能够生成自动利用该性能的转储文件。

注意,SQL中的外键用于检查和强制引用完整性,而不是联合表。如果打算用SELECT语句获取多个表的结果,可在表之间执行联合操作:

SELECT * FROM t1, t2 WHERE t1.id = t2.id;请参见13.2.7.1节,“JOIN语法”。请参见3.6.6节,“使用外键”。

ODBC应用程序常使用不带“ON DELETE ...”的FOREIGN KEY语法来生成自动WHERE子句。

1.8.5.6. 视图
在MySQL服务器5.0版中实现了视图功能(包括可更新视图)。在5.0.1和更高版本中,提供了二进制版的视图功能。请参见第22章:视图。

View(视图)十分有用,它允许用户像单个表那样访问一组关系(表),而且仅允许对它们的这类访问。视图也能限制对行的访问(特定表的子集)。对于列控制的访问,可使用MySQL服务器中的高级权限系统。请参见5.7节,“MySQL访问权限系统”。

在设计视图的过程中,我们的宏伟目标是,在SQL的范围内尽可能与关联数据库系统的“Codd's Rule #6”兼容。“所有理论上可更新的视图,实际上也应是可更新的”。

1.8.5.7. ‘--’作为注释起始标记
一些其他SQL数据库采用“--”作为注释开始标志。MySQL服务器采用“#”作为注释起始字符。对于MySQL服务器,也能使用C风格的注释:/*该处为注释*/。请参见9.5节,“注释语法”。

MySQL服务器3.23.3和更高版本支持“--”注释风格,但要求注释后面跟1空格(或控制字符,如新行)。之所以要求使用空格,是为了防止与自动生成SQL查询有关的问题,它采用了类似下面的代码,其中,自动为“!payment!”插入“payment”的值:

UPDATE account SET credit=credit-!payment!考虑一下,如果“payment”的值为负数如“-1”时会出现什么情况:

UPDATE account SET credit=credit--1在SQL中“credit--1”是合法的表达式,但是,如果“--1”被解释为注释开始,部分表达式将被舍弃。其结果是,表达式的意义与预期的意义完全不同。

UPDATE account SET credit=credit该语句不会对值作任何更改!这表明,允许注释以“--”开始会产生严重后果。

采用MySQL服务器3.23.3和更高版本中的这类注释方法,“credit--1”实际上很安全。

另一个安全特性是,mysql命令行客户端将删除所有以“--”开头的行。

仅当使用高于3.23.3的MySQL时,下述信息才有意义:

如果有1个文本文件形式的SQL程序,该文件包含“--”注释,应按下述方式使用replace实用工具,将其转换为使用“#”字符的注释:

shell> replace " --" " #" < text-file-with-funny-comments.sql \         | mysql db_name而不是通常的:

shell> mysql db_name < text-file-with-funny-comments.sql你也可以编辑注释文件,将“--”注释更改为“#”注释:

shell> replace " --" " #" -- text-file-with-funny-comments.sql使用下述命令将其改回去:

shell> replace " #" " --" -- text-file-with-funny-comments.sql1.8.6. MySQL处理约束的方式
1.8.6.1. PRIMARY KEY和UNIQUE索引约束
1.8.6.2. 对无效数据的约束
1.8.6.3. ENUM和SET约束
使用MySQL,你可以使用允许回滚的事务表,以及不允许回滚的非事务表。因此,在MySQL中的约束处理功能与其他DBMS中的略有不同。在非事务性表中插入或更新大量行时,当出现错误以至于不能回滚所作的变更时,必须处理该情况。

其基本原理在于,在解析将要执行的语句的同时,MySQL服务器会尽量为检测到的问题生成错误信息,并会在执行语句的同时尽量恢复出现的错误。在大多数情况下我们均是这样作的,但不包括所有情况。

出现错误时,MySQL可选择中途中止语句,或尽可能恢复并继续执行语句。默认情况下,服务器将采取后一种路线。这意味着,服务器可能会强制将非法值变为最接近的合法值(例如)。

从MySQL 5.0.2开始,提供了数种SQL模式,使用它们,能够对如何接受可能为不良数据值的方式进行更好的控制,也能在出现错误时,对是否继续执行语句或放弃语句进行控制。使用这些选项,能够将MySQL服务器配置为更为传统的风格,类似于拒绝不恰当输入的其他DBMS。可以在运行时设置SQL模式,这样,各客户端就能选择与其需求最为贴切的行为。请参见5.3.2节,“SQL服务器模式”。

在以下部分,介绍了使用不同约束类型的情况。

1.8.6.1. PRIMARY KEY和UNIQUE索引约束
通常情况下,当你试图INSERT或UPDATE会导致主键、唯一键或外键冲突的行时,将出现错误。如果你正在使用事务性存储引擎时,如InnoDB,MySQL会自动回滚语句。如果你正在使用非事务性存储引擎,MySQL将在出错的行上停止执行语句,剩余的行也不再处理。

如果你希望忽略这类键冲突,可使用MySQL支持的、用于INSERT和UPDATE的IGNORE关键字。在这种情况下,MySQL将忽略任何键冲突,并继续处理下一行。请参见13.2.4节,“INSERT语法”。请参见3.2.10节,“UPDATE语法”。

使用mysql_info() C API函数,能够获取关于实际插入或更新行数的信息。请参见25.2.3.34节,“mysql_info()”。在MySQL 4.1和更高版本中,也能使用SHOW WARNINGS语句。请参见13.5.4.22节,“SHOW WARNINGS语法”。

目前,只有InnoDB表支持外键。请参见15.2.6.4节,“FOREIGN KEY约束”。计划在MySQL 5.1中实施对MyISAM表的外键支持。

1.8.6.2. 对无效数据的约束
在MySQL 5.0.2之前,MySQL对非法或不当值并不严厉,而且为了数据输入还会强制将它们变为合法值。在MySQL 5.0.2和更高版本中,保留了以前的默认行为,但你可以为不良值选择更传统的处理方法,从而使得服务器能够拒绝并放弃出现不良值的语句。本节介绍了MySQL的默认行为(宽大行为),新的严格的SQL模式,以及它们的区别。

如果你未使用严格模式,下述情况是真实的。如果将“不正确”的值插入到列,如将NULL值插入非NULL列,或将过大的数值插入数值列,MySQL会将这些列设置为“最可能的值”,而不是生成错误信息。

·         如果试图将超范围的值保存到数值列,MySQL服务器将保存0(最小的可能值)取而代之,或最大的可能值。

·         对于字符串,MySQL或保存空字符串,或将字符串尽可能多的部分保存到列中。

·         如果打算将不是以数值开头的字符串保存到数值列,MySQL将保存0。

·         MySQL允许将特定的不正确日期值保存到DATE和DATETIME列(如“2000-02-31”或“2000-02-00”)。其观点在于,验证日期不是SQL服务器的任务。如果MySQL能保存日期值并准确检索相同的值,MySQL就能按给定的值保存它。如果日期完全不正确(超出服务器能保存的范围)将在列中保存特殊的日期值“0000-00-00”取而代之。

·         如果试图将NULL值保存到不接受NULL值的列,对于单行INSERT语句,将出现错误。对于多行INSERT语句或INSERT INTO ... SELECT语句,MySQL服务器会保存针对列数据类型的隐含默认值。一般情况下,对于数值类型,它是0,对于字符串类型,它是空字符串(''),对于日期和时间类型是“zero”。在13.1.5节,“CREATE TABLE语法”一节中,讨论了隐含的默认值。

·         如果INSERT语句未为列指定值,如果列定义包含明确的DEFAULT子句,MySQL将插入默认值。如果在定义中没有这类DEFAULT子句,MySQL会插入列数据类型的隐含默认值。

采用前述规则的原因在于,在语句开始执行前,无法检查这些状况。如果在更新了数行后遇到这类问题,我们不能仅靠回滚解决,这是因为存储引擎可能不支持回滚。中止语句并不是良好的选择,在该情况下,更新完成了“一半”,这或许是最差的情况。对于本例,较好的方法是“仅可能做到最好”,然后就像什么都未发生那样继续。

在MySQL 5.0.2和更高版本中,可以使用STRICT_TRANS_TABLES或STRICT_ALL_TABLES SQL模式,选择更严格的处理方式。请参见5.3.2节,“SQL服务器模式”。

STRICT_TRANS_TABLES的工作方式:

·         对于事务性存储引擎,在语句中任何地方出现的不良数据值均会导致放弃语句并执行回滚。

·         对于非事务性存储引擎,如果错误出现在要插入或更新的第1行,将放弃语句。(在这种情况下,可以认为语句未改变表,就像事务表一样)。首行后出现的错误不会导致放弃语句。取而代之的是,将调整不良数据值,并给出告警,而不是错误。换句话讲,使用STRICT_TRANS_TABLES后,错误值会导致MySQL执行回滚操作,如果可以,所有更新到此为止。

要想执行更严格的检查,请启用STRICT_ALL_TABLES。除了非事务性存储引擎,它与STRICT_TRANS_TABLES等同,即使当不良数据出现在首行后的其他行,所产生的错误也会导致放弃语句。这意味着,如果错误出现在非事务性表多行插入或更新过程的中途,仅更新部分结果。前面的行将完成插入或更新,但错误出现点后面的行则不然。对于非事务性表,为了避免这种情况的发生,可使用单行语句,或者在能接受转换警告而不是错误的情况下使用STRICT_TRANS_TABLES。要想在第1场合防止问题的出现,不要使用MySQL来检查列的内容。最安全的方式(通常也较快)是,让应用程序负责,仅将有效值传递给数据库。

有了严格的模式选项后,可使用INSERT IGNORE或UPDATE IGNORE而不是不带IGNORE的INSERT或UPDATE,将错误当作告警对待。

1.8.6.3. ENUM和SET约束
ENUM和SET列提供了定义仅能包含给定值集合的列的有效方式。但是,从MySQL 5.0.2起,ENUM和SET不是实际约束。其原因与不重视NOT NULL的原因一样。请参见1.8.6.2节,“对无效数据的约束”。

ENUM列总有1个默认值。如果未指定默认值,对于包含NULL的列,默认值为NULL;否则,第1个枚举值将被当作默认值。

如果在ENUM列中插入了不正确的值,或者,如果使用IGNORE将值强制插入了ENUM列,会将其设置为保留的枚举值0,对于字符串情形,将显示为空字符串。请参见11.4.4节,“ENUM类型”。

如果在SET列中插入了不正确值,该值将被忽略。例如,如果列能包含值“a”、“b”和“c”,并赋值“a,x,b,y”,结果为“a,b”。请参见11.4.5节,“SET类型”。

从5.0.2开始,可以对服务器进行配置,以使用严格的SQL模式。请参见5.3.2节,“SQL服务器模式”。启用严格模式后,ENUM或SET列的定义可作为对输入至列的值的约束。如果值不满足下述条件,将出现错误:

·         ENUM值必须是在列定义中给出的值之一,或内部的数字等同物。该值不能是错误值(即,0或空字符串)。对于定义为ENUM('a','b','c')的列,诸如''、'd'和'ax'等,均是非法的,并将被拒。

·         SET值必须是空字符串,或由1个或多个在列定义中给出的且用逗号隔开的值组成。 对于定义为SET('a','b','c')的列,诸如'd'和'a,b,c,d'等,均是非法的,并将被拒。

如果使用了INSERT IGNORE或UPDATE IGNORE,在严格模式下,可抑制无效值导致的错误。在这种情况下,将生成警告而不是错误。对于ENUM,值将作为错误成员(0)插入。对于SET,会将给定值插入,但无效的子字符串将被删除。例如,'a,x,b,y'的结果是'a,b',就像前面介绍的那样。

论坛徽章:
0
12 [报告]
发表于 2008-04-15 11:38 |只看该作者

第2章:安装MySQL

目录

2.1. 一般安装问题
2.1.1. MySQL支持的操作系统
2.1.2. 选择要安装的MySQL分发版
2.1.3. 怎样获得MySQL
2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性
2.1.5. 安装布局
2.2. 使用二进制分发版的标准MySQL安装
2.3. 在Windows上安装MySQL
2.3.1. Windows系统要求
2.3.2. 选择安装软件包
2.3.3. 用自动安装器安装MySQL
2.3.4. 使用MySQL安装向导
2.3.5. 使用配置向导
2.3.6. 通过非安装Zip文件安装MySQL
2.3.7. 提取安装档案文件
2.3.8. 创建选项文件
2.3.9. 选择MySQL服务器类型
2.3.10. 首次启动服务器
2.3.11. 从Windows命令行启动MySQL
2.3.12. 以Windows服务方式启动MySQL
2.3.13. 测试MySQL安装
2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除
2.3.15. 在Windows下升级MySQL
2.3.16. Windows版MySQL同Unix版MySQL对比
2.4. 在Linux下安装MySQL
2.5.在Mac OS X中安装MySQL
2.6. 在NetWare中安装MySQL
2.7. 在其它类Unix系统中安装MySQL
2.8. 使用源码分发版安装MySQL
2.8.1. 源码安装概述
2.8.2. 典型配置选项
2.8.3. 从开发源码树安装
2.8.4. 处理MySQL编译问题
2.8.5. MIT-pthreads注意事项
2.8.6. 在Windows下从源码安装MySQL
2.8.7. 在Windows下编译MySQL客户端
2.9. 安装后的设置和测试
2.9.1. Windows下安装后的过程
2.9.2. Unix下安装后的过程
2.9.3. 使初始MySQL账户安全
2.10. 升级MySQL
2.10.1. 从5.0版升级
2.10.2. 升级授权表
2.10.3. 将MySQL数据库拷贝到另一台机器
2.11. 降级MySQL
2.12. 具体操作系统相关的注意事项
2.12.1. Linux注意事项
2.12.2. Mac OS X注意事项
2.12.3. Solaris注意事项
2.12.4. BSD注意事项
2.12.5. 其它Unix注意事项
2.12.6. OS/2注意事项
2.13. Perl安装注意事项
2.13.1. 在Unix中安装Perl
2.13.2. 在Windows下安装ActiveState Perl
2.13.3. 使用Perl DBI/DBD接口的问题


本章描述怎样获得并安装MySQL:

1.    要了解支持哪些平台。请注意并非所有支持的平台同等适合运行MySQL。在部分平台上会比其它平台更有效、稳定。详情请参见2.1.1节,“MySQL支持的操作系统” 。

2.    确定你应该使用的分发的版本。可获得MySQL的多个版本,大部分有多种分发版。你可以选择包含二进制(预编译)代码或源码形式的预打包分发。如果不能确定,则使用二进制分发版。对于想看我们的最新开发并帮助我们测试新代码的用户,我们提供了公共访问接口,可以访问我们最新的源码树。为了确定你应该使用的分发的版本和类型,请参见2.1.2节,“选择要安装的MySQL分发版”。

3.    下载想安装的分发版。对于能从其获得MySQL的站点列表,请参见2.1.3节,“怎样获得MySQL”。用来验证分发版完整性的指令参见2.1.4节,“通过MD5校验和或GnuPG验证软件包的完整性”。

4.    安装分发版。针对二进制代码和源码分发版的安装说明在2.2节,“使用二进制分发版的标准MySQL安装”中讲述。针对二进制代码和源码分发版的安装说明在2.8节,“使用源码分发版安装MySQL”中讲述。

注释:如果你想要将当前版本的MySQL升级到最新版本,而不是首次安装MySQL,关于升级过程和升级前应考虑的问题请参见2.10节,“升级MySQL”。

如果遇到安装问题,2.12节,“具体操作系统相关的注意事项”中提供了解决平台相关问题的信息。

5.    进行安装后的设置。安装MySQL后,请阅读2.9节,“安装后的设置和测试”。本节介绍了重要的信息,可以确保MySQL服务器正确工作。本节还描述了如何使尚未有密码的初始MySQL用户账户的安全。不管你是用二进制代码还是源码分发版来安装MySQL,这些过程均适用。

如果要运行MySQL基准脚本,必须使用支持MySQL的Perl。请参见2.13节,“Perl安装注意事项”。

论坛徽章:
0
13 [报告]
发表于 2008-04-15 11:39 |只看该作者

2.1. 一般安装问题

在安装MySQL前,你应该:

1.    确定是否MySQL将运行在你的平台上。

2.    选择安装的分发版。

3.    下载分发版并验证其完整性。

本节包含执行上述步骤必需的信息。之后,你可以按照本章中后面几节的说明来安装选择的分发版。

2.1.1. MySQL支持的操作系统
本节列出了可以运行MySQL的操作系统。

我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系统是可能的。(要求服务器支持线程。如果只是编译客户端代码,则只需要C++编译器)。我们主要在Linux(SuSE和Red Hat)、FreeBSD和Sun Solaris(版本8和9)上使用并开发本软件。

已经报告MySQL可以在下列操作系统/线程包的组合上成功地进行编译。注意,对于很多操作系统,原生的线程仅支持最新的版本。

·         有原生线程的AIX 4.x和5.x。请参见2.12.5.3节,“IBM-AIX注意事项”。

·         Amiga。

·         包括MIT-pthreads包的BSDI 2.x。请参见2.12.4.4节,“BSD/OS 2.x版注意事项”。

·         有原生线程的BSDI3.0,3.1和4.x。请参见2.12.4.4节,“BSD/OS 2.x版注意事项”。

·         有原生线程的Digital Unix 4.x。请参见2.12.5.5节,“Alpha-DEC-UNIX(Tru64)版注意事项”.。

·         包括MIT-pthreads包的FreeBSD 2.x。请参见2.12.4.1节,“FreeBSD注意事项”。

·         有原生线程的FreeBSD 3.x和4.x。请参见2.12.4.1节,“FreeBSD注意事项”。

·         有LinuxThreads的FreeBSD 4.x。请参见2.12.4.1节,“FreeBSD注意事项”。

·         有DCE线程或MIT-pthreads包的HP-UX 10.20。请参见2.12.5.1节,“HP-UX 10.20版注意事项”。

·         有原生线程的HP-UX 11.x。请参见2.12.5.2节,“HP-UX 11.x版注意事项”。

·         有LinuxThreads 0.7.1+或glibc 2.0.7+,适合各种CPU的Linux 2.0+。请参见2.12.1节,“Linux注意事项”。

·         Mac OS X。请参见2.12.2节,“Mac OS X注意事项”。

·         NetBSD 1.3/1.4 Intel和NetBSD 1.3 Alpha(需要GNU make)。请参见2.12.4.2节,“NetBSD注意事项”。

·         Novell NetWare 6.0。请参见2.6节,“在NetWare中安装MySQL”。

·         有原生线程的OpenBSD > 2.5。包括MIT-pthreads包的OpenBSD < 2.5。请参见2.12.4.3节,“OpenBSD 2.5版注意事项”。

·         OS/2 Warp 3, FixPack 29和OS/2 Warp 4, FixPack 4. 参见2.12.6节,“OS/2注意事项”。

·         有最新FSU Pthreads移植包的SCO OpenServer 5.0.X。请参见2.12.5.8节,“SCO UNIX和OpenServer 5.0.x版注意事项”。

·         SCO UnixWare 7.1.x。请参见2.12.5.9节,“SCO UnixWare 7.1.x和OpenUNIX 8.0.0版注意事项”。

·         SCO Openserver 6.0.x。请参见2.12.5.10节,“SCO OpenServer 6.0.x版注意事项”。

·         有原生线程的SGI Irix 6.x。请参见2.12.5.7节,“SGI Irix注意事项”。

·         SPARC和x86上有原生线程的Solaris 2.5和以上版本。请参见2.12.3节,“Solaris注意事项”。

·         包括MIT-pthreads包的SunOS 4.x。请参见2.12.3节,“Solaris注意事项”。

·         Tru64 Unix。请参见2.12.5.5节,“Alpha-DEC-UNIX(Tru64)版注意事项”。

·         Windows 9x、Me、NT、2000、XP和2003。请参见2.3节,“在Windows上安装MySQL”。

并非所有支持的平台同等适合运行MySQL。根据以下因素确定某个平台适合高负荷关键任务MySQL服务器的程度:

·         线程库的稳定性。可能某个平台的反应不错,但MySQL的稳定性取决于它所调用的线程库,不管其它部分是否完善。

·         内核和线程库利用均衡多处理器(SMP)系统的能力。换句话说,当进程创建一个线程时,应允许线程运行原进程所运行CPU之外的其它处理器。

·         内核和线程库运行在短范围频繁获取和释放互斥体而不需要过多地交换内容的多个线程的能力。如果执行pthread_mutex_lock()时产生的CPU时间太短,则会严重影响MySQL。如果不关注该问题,增加过多的CPU实际会降低MySQL的速度。

·         常规文件系统的稳定性和性能。

·         如果数据库表很大,文件系统处理大文件的能力和处理效率。

·         我们在该平台上使用MySQL AB的经验水平。如果我们熟悉一个平台,我们可以对具体平台进行优化并固定编译时间。我们还可以提供建议如何更好地为MySQL配置系统。

·         我们在类似配置下所完成的内部测试的数量。

·         在同一平台类似配置下成功运行MySQL的用户数。如果该数字很高,则说明遇到具体平台问题的几率要小得多。

根据前面的标准,允许MySQL的最好的平台是x86,安装SuSE Linux,使用2.4或2.6内核,和ReiserFS(或类似Linux分发版)和安装了 Solaris(2.7-9)的SPARC。FreeBSD排第三位,但我们真正希望一旦线程库得到改进,它也可以提高排名。从某一观点我们还希望提高其它MySQL目前正在上面编译、允许的平台的排名,但稳定性和性能上可以要求不同等级。这需要我们与MySQL所依赖的操作系统和库组件开发人员共同努力。如果你对改进某个组件感兴趣,可能影响其开发,需要更多的关于MySQL如何能运行得更好的说明,请向我们的MySQL internals发送邮件。请参见1.7.1.1节,“The MySQL邮件列表”。

请注意前面的对比并不是说一个操作系统总体上比另一个操作系统要好。我们只是讨论选择一个OS来专门运行MySQL。记住了这一点,如果考虑更多的因素,对比结果可能会不同。在某些情况下,一个OS比另一个OS好的原因只是我们已经为具体平台做出了更多的努力来进行测试和优化。我们只是陈述我们的观点帮助你选择运行MySQL的平台。

2.1.2. 选择要安装的MySQL分发版
2.1.2.1. 选择要安装的MySQL版本
2.1.2.2. 选择分发格式
2.1.2.3. 如何发布更新以及何时发布更新
2.1.2.4. 发布原则:发行版本中没有已知的缺陷
2.1.2.5. MySQL AB编译的MySQL二进制版本
准备安装MySQL时,你应确定使用哪个版本。MySQL的开发有几个发布系列,可以选择最适合你要求的一个版本。确定了安装的版本后,便可以选择分发版。有二进制或源码发布格式。
2.1.2.1. 选择要安装的MySQL版本
首先要作出决策,你是否想要使用最新的开发版本或最终的稳定版本。在MySQL开发过程中,同时存在多个发布系列,每个发布处在成熟度的不同阶段:

·         MySQL 5.2是最新开发的发布系列,是将执行新功能的系列。不久的将来可以使用Alpha发行,以便感兴趣的用户进行广泛的测试。

·         MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布;没有增加会影响稳定性的新功能。

·         MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布;没有增加会影响该系列的重要功能。

·         MySQL 4.0和3.23是旧的稳定(产品质量)发布系列。该版本不再使用,新的发布只用来修复特别严重的漏洞(以前的安全问题)。

我们不认为有完全的冻结版,因为任何版本均需要对漏洞进行修复和其它修复。对于“某种程度的冻结”,我们是指我们可以在产品发布中增加一些不会影响当前工作的小东西。自然,前一系列的相关漏洞修复会移植到后面的系列。

通常, 如果你是第一次开始使用MySQL或想要将它移植到一些还没有二进制分发版的系统上,我们推荐使用最终的稳定版本。目前是MySQL 5.1。我们已经使用MySQL基准对所有MySQL发布进行了检查,包括来自开发系列的发布,在发布前还使用基准套件来测试它。

如果你正在运行一个老的系统并且想要升级,但是又不想冒险进行非无缝升级,应该升级到最新版本中你正使用的相同的发布系列(只有版本号的最后部分比你使用的新)。我们已经试着仅修复致命缺陷,对那个版本进行了很小的相对安全的改动。

如果你想要使用产品发布系列中所没有的新功能,你可以使用开发系列的版本。请注意开发发布不如产品发布稳定。

如果你想要使用包含所有最新补丁和漏洞修复的最新源码,可以使用我们的BitKeeper库。这些库还没有发布,但可以预览代码,将来的发布基于这些代码。

MySQL的命名机制使用由3个数字和一个后缀组成的版本号。例如,像mysql-5.0.9-beta的版本号这样解释:

·         第1个数字(5)是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式。

·         第2个数字(0)是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。

·         第3个数字(9)是在此发行系列的版本号,随每个新分发版递增。通常你需要已经选择的发行(release)的最新版本(版本)。

每次更新后,版本字符串的最后一个数字递增。如果相对于前一个版本增加了新功能或有微小的不兼容性,字符串的第二个数字递增。如果文件格式改变,第一个数字递增。

后缀显示发行的稳定性级别。通过一系列后缀显示如何改进稳定性。可能的后缀有:

·         alpha表明发行包含大量未被彻底测试的新代码。已知的缺陷应该在新闻小节被记录。请参见附录D:MySQL变更史。在大多数alpha版本中也有新的命令和扩展。alpha版本也可能有主要代码更改等开发。但我们在发布前一定对其进行测试。

·         beta意味着该版本功能是完整的,并且所有的新代码被测试了,没有增加重要的新特征,应该没有已知的缺陷。当alpha版本至少一个月没有出现报导的致命漏洞,并且没有计划增加导致已经实施的功能不稳定的新功能时,版本则从alpha版变为beta版。

在以后的beta版、发布版或产品发布中,所有API、外部可视结构和SQL命令列均不再更改。

·         rc是发布代表;是一个发行了一段时间的beta版本,看起来应该运行正常。只增加了很小的修复。(发布代表即以前所称的gamma 版)

·         如果没有后缀,这意味着该版本已经在很多地方运行一段时间了,而且没有非平台特定的缺陷报告。只增加了关键漏洞修复修复。这就是我们称为一个产品(稳定)或“通用”版本的东西。

MySQL的命名机制于其它产品稍有不同。一般情况,我们可以很放心地使用已经投放市场两周而没有被相同发布系列的新版本所代替的版本。

MySQL所有版本都经过我们的标准测试和基准测试运行,以保证它们可相当安全地使用。因为标准测试不断扩充以检测以前发现的缺陷,测试套件一直在改进之中。

所有版本都至少已经用下列套件进行了测试:

·         一个内部测试套件

mysql-test目录包含一整套测试案例。我们针对每个二进制服务器进行这些测试。关于该测试套件的详细信息参见27.1.2节,“MySQL测试套件”。

·         MySQL基准套件

它运行一定范围的普通查询。它也是一个测试,检测最新的优化处理是否真的使代码更快。请参见7.1.4节,“MySQL基准套件”。

·         crash-me测试

这尝试决定数据库支持什么功能和它的能力与限制是什么。请参见7.1.4节,“MySQL基准套件”。

另一个测试是在内部生产环境中使用最新MySQL版本,至少在一台机器上。我们有超过100GB的数据可供使用。

2.1.2.2. 选择分发格式
选择了MySQL的安装版本后,要做的第二项决策是你是使用源码分发版还是二进制分发版。大多数情况,如果你的平台上已经有了一个二进制分发版,你可能使用二进制分发版。大多数平台可以使用原格式二进制分发版,例如Linux使用RPM文件,Mac OS X使用DMG安装软件包。也可以使用Zip文件或压缩tar文件。

选择二进制分发版的理由:

·         二进制分发版比源码分发版更容易安装。

·         为了满足不同用户的需求,我们提供了两种不同的二进制版本:一个是编译过的带非事务储存引擎(小的快速库),另一个配置了最重要的扩展选项,例如事务安全表。两个版本均从相同的源码分发版编译而来。所有本地MySQL客户端均可以连接任一版本的MySQL服务器。

扩展MySQL库分发版标有-max后缀,配置了与mysqld-max相同的选项。请参见5.1.2节,“mysqld-max扩展MySQL服务器”。

如果想要使用MySQL-Max RPM,必须首先安装标准MySQL-server RPM。

在某些环境下,最好安装源码分发版MySQL:

·         你想要在某个明显的位置安装MySQL。标准二进制分发版可以安装到任何地方,但你想更加灵活地将MySQL组件放到某个地方。

·         你想要将mysqld配置一些标准二进制分发版中未包括的一些特殊特征。下面是一些你想要使用的最常用的选项:

o        --with-innodb(在所有MySQL 5.1库版本中默认使用)

o        --with-berkeley-db(只适合部分平台)

o        --with-libwrap

o        --with-名d-z-libs(适合部分二进制)

o        --with-debug[=full]

·         你想要将mysqld配置一些标准二进制分发版中已经包括的一些特殊特征。例如,一般编译过的分发版支持所有字符集。如果你想要一个更小的MySQL服务器,可以重新编译只支持你需要的字符集。

·         你有一个专用编译器(例如pgcc)或想要使用更好地优化适用你的处理器的编译器选项。二进制分发版编译的选项适合同一处理器族的各种处理器。

·         你想要使用BitKeeper库中的最新源码,以访问所有最新漏洞修复。例如,如果你发现了漏洞并将它报告给MySQL开发小组,漏洞修复传递给源码库,你便可以访问它。发布实际发行后才会出现漏洞修复。

·         如果你想要阅读(或修改)构成MySQL的C和C++代码,你应该拿到源码分发版。源码总是最终的手册。

·         源码分发版也比二进制的分发版包含更多的测试和实例。

论坛徽章:
0
14 [报告]
发表于 2008-04-15 11:40 |只看该作者
2.1.2.3. 如何发布更新以及何时发布更新
MySQL进展的相当快,我们想要与其它MySQL用户分享它。当我们有一个看来其它人似乎需要的非常有用的功能时,我们就试着制作一个发行版本。

我们也尝试帮助那些需要很容易实现的功能的用户,我们也关注我们授权的用户想要什么,我们更特别关注我们支持的客户想要什么,并且尽力帮助他们。

没有人一定要下载一个新版本,新闻小节中将告诉你新版本是否有一些你确实想要的东西。请参见附录D:MySQL变更史。

当更新MySQL时,我们使用下列策略:

·         将发布每个系列。每次发布时,版本的最后一个数字为同一系列前一版本的基础上加1。

·         稳定的测试过的产品版本每年准备出现1-2次,但是如果发现小缺陷,只有缺陷修复的一个版本将被发行。

·         工作版本/对旧版本的漏洞修复文件每4-8周出现一次。

·         对一些平台的二进制分发版,主要版本由我们制作。其它人可以为其它系统制作二进制分发版,但是可能不多见。

·         我们一旦识别并修正了非紧急但烦人的缺陷,则立即将其发布,可以从公共BitKeeper库中立即得到修复代码,并将包含到下一发布版中。

在任何情况下,如果在一个发行中有一个致命缺陷,我们将尽快制作一个新版本来修复。(我们希望其它公司也这样做!)
2.1.2.4. 发布原则:发行版本中没有已知的缺陷
我们投入了大量的时间和工作来使我们的发布没有缺陷。我们从来没有发布过含有已知致命重复性缺陷的单一MySQL版本。(“致命”缺陷指能在正常应用中导致MySQL瘫痪的缺陷,对于正常查询产生错误答案,或有安全问题)。

我们已经将所有公开问题、缺陷和由设计决策决定的事宜记入文件。请参见A.8节,“MySQL中的已知事宜”。

我们的目标是修复一切可以修复的东西,而不会使稳定的MySQL版本变得不稳定。在某些情况,这意味着我们可以在开发版本中修复问题,而不是在稳定的 (产品) 版本。自然,我们会将这些问题记入文档,以便用户能知道。

下面描述了我们如何操作:

·         我们通过我们的客户支持列表、在http://bugs.mysql.com/ 缺陷数据库和MySQL外部邮件列表来监控缺陷。

·         当前版本中所有被报导的缺陷被输入缺陷数据库。

·         当我们修复缺陷,我们总是为其设计一次测试案例,并将其包括进测试系统中,以确保不会漏检使缺陷再现。(所有修复的缺陷中大约90%的具有测试案例)。

·         为添加到MySQL中的所有新功能创建测试案例。

·         我们开始构建新的MySQL发布前,我们确保修复了MySQL版本(3.23.x、4.0.x、4.1.x、5.0.x等等)中所有被报导的重复性缺陷。如果某些内容不能修复(由于MySQL内部的一些设计决策),我们在本手册中记录下来。请参见A.8节,“MySQL中的已知事宜”。

·         我们在所有支持二进制的平台(15+平台)上构建并运行我们的测试套件和基准套件。

·         如果在某个平台上测试或基准套件失败,我们不会公布二进制。如果问题是由于源码中的普通缺陷,我们将进行修复并在所有系统上构建并测试。

·         构建和测试过程需要2-3天。如果在该过程中我们收到致命缺陷相关报告(例如,会造成内核转储),我们将修复该问题并重新启动构建过程。

·         在http://dev.mysql.com/上公布二进制后,我们则向mysql发出公告消并announce邮件列表。请参见1.7.1.1节,“The MySQL邮件列表”。公告消息包含所有发布的更改列表和已知问题。只有部分发版不需要已知的问题部分。

·         为了让我们的用户快速访问最新MySQL功能,我们每4-8周产生一个新的MySQL发布。每天构建源码快照,可以从http://downloads.mysql.com/snapshots.php获得。

·         如果,尽管经过我们最大的努力,我们在发布后仍收到缺陷报告,即在某个具体平台上出现严重问题,我们将立即进行修复,并为该平台构建一个新的 'a'版本。由于我们的大用户群,可以很快地查出并解决此类问题。

·         我们为保证稳定版本所做的跟踪记录不错。在最近150个发布中,我们只需要对其中不到10个重新构建。其中有3个案例,缺陷为我们的构建机器上的glibc 库,花了很长时间来跟踪。

2.1.2.5. MySQL AB编译的MySQL二进制版本
作为MySQL AB的服务,我们提供了一套二进制MySQL分发版,已经在我们的站点上所列的系统或支持MySQL、友好地为我们提供访问的机器上的系统上编译过。

除了具体平台安装软件包格式提供的二进制分发版,我们还以压缩tar文件(.tar.gz文件)为多种平台提供了二进制分发版。请参见2.2节,“使用二进制分发版的标准MySQL安装”。

对于Windows分发版,参见2.3节,“在Windows上安装MySQL”。

使用脚本 Build-tools/Do-compile生成这些分发版,可以编译源码并使用scripts/make_binary_distribution创建二进制tar.gz文件。

通过下面的编译器和选项来配置并构建二进制分发版。可以查看各个库二进制tar文件分发版的脚本bin/mysqlbug内的变量COMP_ENV_INFO和 CONFIGURE_LINE来查看这些信息。

在MySQL AB开发系统上构建下面的二进制:
·         Linux 2.4.xx x86中的gcc 2.95.3:

CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

·         Linux 2.4.x x86中的icc(Intel C++ Compiler 8.1或更高版本):

CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-embedded-server --with-innodb

请注意Intel 编译器8.1版和更高版有不同的“纯”C(icc)驱动程序和C++(icpc)驱动程序;如果你使用icc 8.0版本或较早的版本来构建MySQL,需要设置CXX=icc。

·         Linux 2.4.xx Intel Itanium 2中的ecc (Intel C++ Itanium Compiler 7.0):

CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

·         Linux 2.4.xx Intel Itanium中的ecc(Intel C++ Itanium Compiler 7.0):

CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile

·         Linux 2.4.xx alpha中的ccc(Compaq C V6.2-505 / Compaq C++ V6.3-006):

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --disable-shared

·         Linux 2.x.xx ppc中的gcc 2.95.4:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         Linux 2.4.xx s390中的gcc 2.95.3:

CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

·         Linux 2.4.xx x86_64(AMD64)中的gcc 3.2.1:

CXX=gcc ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         Sun Solaris 8 x86中的gcc 3.2.3:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-inno

·         Sun Solaris 8 SPARC中的gcc 3.2:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 8 SPARC 64-bit中的gcc 3.2:

CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 9 SPARC中的gcc 2.95.3:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses --disable-shared

·         Sun Solaris 9 SPARC中的cc-5.0(Sun Forte 5.0):

CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared

·         IBM AIX 4.3.2 ppc中的gcc 3.2.3:

CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

·         IBM AIX 4.3.3 ppc中的xlC_r(IBM Visual Age C/C++ 6.0):

CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-innodb

·         IBM AIX 5.1.0 ppc中的gcc 3.3:

CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared

·         IBM AIX 5.2.0 ppc中的xlC_r(IBM Visual Age C/C++ 6.0):

CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-embedded-server --with-innodb

·         HP-UX 10.20 pa-risc1.1中的gcc 3.1:

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared

·         HP-UX 11.00 pa-risc中的aCC(HP ANSI C++ B3910B A.03.50):

CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         HP-UX 11.11 pa-risc2.0 64bit中的aCC(HP ANSI C++ B3910B A.03.33):

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         HP-UX 11.11 pa-risc2.0 32bit中的aCC(HP ANSI C++ B3910B A.03.33):

CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

·         HP-UX 11.22 ia64 64bit中的aCC(HP aC++/ANSI C B3910B A.05.50):

CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-embedded-server --with-innodb

·         Apple Mac OS X 10.2 powerpc中的gcc 3.1:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         FreeBSD 4.7 i386中的gcc 2.95.4:

CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared

·         使用LinuxThreads的FreeBSD 4.7 i386中的gcc 2.95.4:

CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R -D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads -L/usr/local/lib -llthread -llgcc_r" --disable-shared --with-embedded-server --with-innodb

·         QNX Neutrino 6.2.1 i386中的gcc 2.95.3qnx-nto 20010315:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

下面的二进制是在由其它用户提供给MySQL AB的第三方系统上构建而成。这是免费赠送;MySQL AB没有完全控制这些系统,因此我们只能对在这些系统上构建的二进制提供有限的支持。

·           SCO Unix 3.2v5.0.7 i386中的gcc 2.95.3:

CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared

·         SCO UnixWare 7.1.4 i386中的CC 3.2:

CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

·         CO OpenServer 6.0.0 i386中的CC 3.2:

CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared --with-readline

·         Compaq Tru64 OSF/1 V5.1 732 alpha中的cc/cxx(Compaq C V6.3-029i / DIGITAL C++ V6.1-027):

CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared --with-mysqld-ldflags=-all-static

·            SGI Irix 6.5 IP32中的gcc 3.0.1:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

·         FreeBSD/sparc64 5.0中的gcc 3.2.1:

CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

在MySQL AB过去提供的二进制软件包中应用了下面的编译选项。这些二进制不再进行更新,但是在这里列出了这些编译选项供参考。

·          Linux 2.2.xx SPARC中的egcs 1.1.2:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared

·         Linux 2.2.x x686中的gcc 2.95.2:

CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex

·         SunOS 4.1.4 2 sun4c中的gcc 2.7.2.1:

CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler

·         SunOS 5.5.1(及以上版本)sun4u中的egcs 1.0.3a或2.90.27或gcc 2.95.2和更新版:

·         CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex --enable-assembler

·         SunOS 5.6 i86pc中的gcc 2.8.1:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex

·         BSDI BSD/OS 3.1 i386中的gcc 2.7.2.1:

CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

·         BSDI BSD/OS 2.1 i386中的gcc 2.7.2:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

·         AIX 4.2中的gcc 2.7.2.2:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

如果你有更好的上述配置选项,可以向MySQL internals邮件列表发送邮件。请参见1.7.1.1节,“The MySQL邮件列表”。

在我们的站点中列出的MySQL 5.1发布的RPM分发版是由MySQL AB产生的。

如果你想要编译MySQL调试版本,应当在前面的configure命令中加上--with-debug或--with-debug=full,并去掉-fomit-frame-pointer选项。

论坛徽章:
0
15 [报告]
发表于 2008-04-15 11:40 |只看该作者
2.1.3. 怎样获得MySQL
检查MySQL下载页(http://dev.mysql.com/downloads/ )获取当前版本和下载指令信息。关于MySQL下载镜像站点的完整的最新列表,参见 http://dev.mysql.com/downloads/mirrors.html。你可以在此发现MySQL镜像站点和如何报告有问题的或过时的镜像站点的信息。
我们的主镜像站点位于http://mirrors.sunsite.dk/mysql/

2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性
2.1.4.1. 验证MD5校验和
2.1.4.2. 通过GnuPG进行签名检查
2.1.4.3. 使用RPM进行签名检查
下载了适合你的需求的MySQL安装软件包并在安装前,你应当确保它的完整性,没有被篡改。MySQL AB提供了3种完整性检查方法:
·         MD5校验和

·         使用GnuPG、GNU Privacy Guard对签名进行加密

·         对于RPM软件包,使用内嵌式RPM完整性验证机制

下面的章节描述了如何使用这些方法。

如果你注意到MD5校验和与GPG签名不匹配,首先应尝试多次下载相关安装软件包,可以从其它镜像站点。如果你反复尝试仍不能成功验证安装软件包的完整性,请将此类问题通知给我们,包括完整的安装软件包名和你使用的下载站点,在<webmaster@mysql.com>或<build@mysql.com>。不要使用缺陷-报告机制来报告下载问题。

2.1.4.1. 验证MD5校验和
下载MySQL安装软件包后,你应当确保它的MD5校验和与提供的MySQL下载页上的相匹配。每个安装软件包有唯一的校验和,可以用下面的命令来验证,其中package_name是你下载的安装软件包的名称:

shell> md5sum package_name示例:

  shell> md5sum mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz  aaab65abbec64d5e907dcd41b8699945  mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz你应当验证结果校验和(十六进制数字字符串)与下载页上相关安装软件包下面显示的校验和相匹配。

注释:一定要验证归档文件(例如,.zip或.tar.gz文件)的校验和,而不是其中包括的文件。

请注意并非所有操作系统支持md5sum命令。在一些操作系统上,只是称为md5,另一些根本不装载它。在Linux中,它是GNU Text Utilities安装软件包的一部分,适合各种平台。可以从http://www.gnu.org/software/textutils/下载源码。如果你已经安装了OpenSSL,还可以使用命令openssl md5 package_name。http://www.fourmilab.ch/md5/提供了DOS/Windows使用的md5命令行实用工具。winMd5Sum是一个图形MD5检查工具,可以从http://www.nullriver.com/index/products/winmd5sum获得。

2.1.4.2. 通过GnuPG进行签名检查
验证安装软件包完整性和真实性的另一个方法是使用加密签名。这比使用MD5校验和更可靠,但是需要更多的工作。

MySQL AB用GnuPG(GNU Privacy Guard)对下载MySQ软件包进行签名。GnuPG是开放源码,不同于Phil Zimmermann的闻名的Pretty Good Privacy (PGP)。关于GnuPG和如何获得并安装到你的系统的详细信息,请参见http://www.gnupg.org/。大多数Linux分发版装有默认安装的GnuPG。关于GnuPG的详细信息,参见 http://www.openpgp.org/。

要想验证具体安装软件包的签名,你首先需要获得MySQL AB公共GPG构建密钥的拷贝。可以从http://www.keyserver.net/下载密钥。你想要获得的密钥名为build@mysql.com。另外,可以从下面的文本直接剪切并粘贴密钥:

Key ID:pub  1024D/5072E1F5 2003-02-03     MySQL Package signing key (www.mysql.com) <build@mysql.com>Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5 Public Key (ASCII-armored): -----BEGIN PGP PUBLIC KEY BLOCK-----Version: GnuPG v1.0.6 (GNU/Linux)Comment: For info see http://www.gnupg.org mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZfw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNWhxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLVK2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnEkYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDIQJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefeprv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFja2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNvbT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQcuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3qzIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvucSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJYiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8JEg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/lxaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRiRjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fmLe11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqqa8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSafanFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOWI39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42LmuQT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt926s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZWhe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4An3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ===YJkx-----END PGP PUBLIC KEY BLOCK-----你可以使用gpg --import将构建密钥导入你的个人公共GPG钥匙圈(keyring)。例如,如果你把密钥保存到mysql_pubkey.asc文件中,导入命令应为:

shell> gpg --import mysql_pubkey.asc关于公共密钥如何工作的详细信息,请参阅GPG文档。

下载并导入公共构建密钥后,下载期望的MySQL安装软件包和相应的签名,也可以从下载页上获得。签名文件名与分发版文件相同,有 an .asc扩展名。例如:

分发文件
mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz

签名文件
mysql-st和ard-5.1.2-alpha-linux-i686.tar.gz.asc


确保两个文件保存在同一目录下,运行下面的命令来验证分发文件的签名:

shell> gpg --verify package_name.asc示例:

  shell> gpg --verify mysql-standard-5.1.2-alpha-linux-i686.tar.gz.asc  gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 5072E1F5  gpg: Good signature from "MySQL Package signing key (www.mysql.com) <build@mysql.com>"Good signature消息表示所有内容都很正确。你可以忽略任何insecure memory警告。

论坛徽章:
0
16 [报告]
发表于 2008-04-15 11:41 |只看该作者
2.1.4.3. 使用RPM进行签名检查
RPM软件包没有单独的签名。RPM软件包内置GPG签名和MD5校验和。可以运行下面的命令来验证安装软件包:

shell> rpm --checksig package_name.rpm示例:

shell> rpm --checksig MySQL-server-5.1.2-alpha-0.i386.rpmMySQL-server-5.1.2-alpha-0.i386.rpm: md5 gpg OK注释:如果你正使用RPM 4.1,并且出现关于(GPG) NOT OK (MISSING KEYS: GPG#5072e1f5)的抱怨,尽管你已经将MySQL公共构建密钥导入到你自己的GPG钥匙圈,你必须首先将密钥导入到RPM钥匙圈中。RPM 4.1不再使用你的个人GPG钥匙圈(或GPG本身)。RPM 4.1维护自己的钥匙圈,因为它是系统范围的应用程序,而用户GPG公共钥匙圈是具体的用户文件。要想将MySQL公共密钥导入RPM钥匙圈,要首先获得前面章节描述的密钥。然后使用rpm --import导入密钥。例如,如果你的公共密钥保存在mysql_pubkey.asc文件中,应使用下述命令导入公共密钥:

shell> rpm --import mysql_pubkey.asc如果你需要获得MySQL公共密钥,参见2.1.4.2节,“通过GnuPG进行签名检查”。

2.1.5. 安装布局
这节描述安装MySQL AB提供的二进制代码和源码分发时创建的默认目录布局。如果你安装其它供应商提供的分发,应使用其它布局。
在Windows中,MySQL 5.1的默认安装目录是C:\Program Files\MySQL\MySQL Server 5.1。(一些Windows用户宁愿安装到原来的默认安装目录 C:\mysql。然而,子目录布局仍然相同)。安装目录包括以下子目录:

目录
目录内容

bin
客户端程序和mysqld服务器

data
日志文件,数据库

Docs
文档

examples
示例程序和脚本

include
包含(头)文件

lib


scripts
实用工具脚本

share
错误消息文件


使用MySQL AB's Linux RPM分发进行安装后,将在以下系统目录产生文件:

目录
目录内容

/usr/bin
客户端程序和脚本

/usr/sbin
mysqld服务器

/var/lib/mysql
日志文件,数据库

/usr/share/doc/packages
文档

/usr/include/mysql
包含(头)文件

/usr/lib/mysql


/usr/share/mysql
错误消息和字符集文件

/usr/share/sql-bench
基准程序


在Unix中,可以在你选择的安装位置解压并安装tar文件二进制分发(typically /usr/local/mysql)并在该位置创建以下目录:

目录
目录内容

bin
客户端程序和mysqld服务器

data
日志文件,数据库

docs
文档,ChangeLog

include
包含(头)文件

lib


scripts
mysql_install_db

share/mysql
错误消息文件

sql-bench
基准程序


配置并编译完源码分发后,便开始安装。默认情况下,可以将文件安装到/usr/local,即在下面的子目录中:

目录
目录内容

bin
客户端程序和脚本

include/mysql
包含(头)文件

info
Info格式的文档

lib/mysql


libexec
mysqld服务器

share/mysql
错误消息文件

sql-bench
基准程序和crash-me测试

var
数据库和日志文件


在一个安装目录内,源码安装的布局在下列方面不同于二进制安装:

·         mysqld服务器被安装在“libexec”目录而不是“bin”目录内。

·         数据目录是“var”而非“data”。

·         mysql_install_db被安装在“bin”目录而非“scripts”内。

·         头文件和库目录是“include/mysql”和“lib/mysql”而非“include”和“lib”。

执行源码分发根目录下的scripts/make_binary_distribution脚本,你可以用编译过的源码分发版创建你自己的二进制安装。

论坛徽章:
0
17 [报告]
发表于 2008-04-15 11:41 |只看该作者

2.2. 使用二进制分发版的标准MySQL安装

后面几章包括如何在安装软件包格式适合的平台上平台安装MySQL。(即执行“二进制安装”)。也可以在多种平台上安装MySQL二进制分发版。关于适合所有平台的软件包的通用安装指令参见2.7节,“在其它类Unix系统中安装MySQL”。

关于二进制分发版的使用和如何获得的详细信息请参见2.1节,“一般安装问题”。

论坛徽章:
0
18 [报告]
发表于 2008-04-15 11:42 |只看该作者

2.3. 在Windows上安装MySQL

MySQL AB已经提供了Windows中安装的MySQL 3.21以上版本,并提供了每天下载MySQL的比率。本节描述在Windows中安装MySQL的过程。

使用Windows版本MySQL安装器,结合GUI配置向导,可以自动安装MySQL,创建选项文件,启动服务器并使默认用户账户安全。

如果你要升级已有的4.1.5版以前的MySQL,你必须执行以下步骤:

1.    获得并安装分发版。

2.    根据需要设置选项文件。

3.    选择想要使用的服务器。

4.    启动服务器。

5.    为初始MySQL账户指定密码。

该过程还适合安装软件包内不包括安装器的MySQL安装。

Windows版MySQL 5.1有3种分发格式:

·          二进制分发版包含一个设置程序,可以安装你需要的任何内容,因此可以立即启动服务器。

·          源码分发版包含所有使用Visual Studio 2003编译器来构建可执行程序的代码和支持文件。

一般来讲,你应当使用二进制分发版。它比其它的分发版使用起来要简单,不再需要其它工具来启动并运行MySQL。

本节描述了如何使用二进制分发版在Windows中安装MySQL。要想使用源码分发版安装,参见2.8.6节,“在Windows下从源码安装MySQL”。

2.3.1. Windows系统要求
要想在Windows中运行MySQL,你需要:

·         32位Windows操作系统,例如9x、Me、NT、2000、XP或Windows Server 2003。

基于Windows NT的操作系统(NT,2000,XP,2003),将MySQL服务器做为服务来运行。强烈建议使用基于Windows NT的操作系统。请参见2.3.12节,“以Windows服务方式启动MySQL”。

·         TCP/IP协议支持。

·         Windows版本MySQL二进制分发版,可以从http://dev.mysql.com/下载/下载。请参见2.1.3节,“怎样获得MySQL”。

注释:如果你从FTP下载分发版,我们建议使用充分的FTP客户端以保证续传,避免下载过程中文件被破坏。

·         可以读取 .zip文件的工具,以解压分发文件。

·         硬盘上有足够的空间保证根据你的需求来解包、安装和创建数据库(一般建议至少有200兆字节)。

你还可以有以下可选需求:

·         如果你计划通过ODBC连接MySQL服务器,你还需要一个连接器/ODBC驱动程序。请参见26.1节,“MySQL Connector/ODBC”。

·         如果表需要占用的空间大于4GB,则在NTFS或更新的文件系统上安装MySQL。当创建表时不要忘记使用MAX_ROWS和 AVG_ROW_LENGTH。请参见13.1.5节,“CREATE TABLE语法”。

2.3.2. 选择安装软件包
在Windows中安装MySQL时,有3种MySQL 5.1安装软件包可供选择:

·         基本安装:该安装软件包的文件名类似于mysql-essential-5.1.2-alpha-win32.msi,包含在Windows中安装MySQL所需要的最少的文件,包括配置向导。该安装软件包不包括可选组件,例如嵌入式服务器和基准套件。

·         完全安装:该安装软件包的文件名类似于mysql-5.1.2-alpha-win32.zip,包含在Windows中安装MySQL所需要的全部文件,包括配置向导。该安装软件包包括可选组件,例如嵌入式服务器和基准套件。

·         非自动安装文件:该安装软件包的文件名类似于mysql-noinstall-5.1.2-alpha-win32.zip,包含完整安装包中的全部文件,只是不包括配置向导。该安装软件包不包括自动安装器,必须手动安装和配置。

对于大多数用户,建议选择基本安装。

你的选择会影响你后面必须遵从的安装过程。如果你选择基本安装或完全安装,参见2.3.3节,“用自动安装器安装MySQL”。如果你选择非自动安装MySQL,参见2.3.6节,“通过非安装Zip文件安装MySQL”。

2.3.3. 用自动安装器安装MySQL
在Windows中安装MySQL时,新用户可以使用MySQL安装帮助和MySQL Configuration Wizard(配置向导)。MySQL安装和配置的方式是使新用户可以立即开始使用MySQL。
基本安装和完全安装中均包括MySQL安装帮助和配置向导,建议在大多数标准MySQL安装中选择。例外情况包括想在单个服务器上安装多个实例的用户和想完全控制服务器配置的高级用户。

论坛徽章:
0
19 [报告]
发表于 2008-04-15 11:42 |只看该作者
2.3.4. 使用MySQL安装向导
2.3.4.1. 前言
2.3.4.2. 下载并启动MySQL安装向导
2.3.4.3. 选择安装类型
2.3.4.4. 定制安装对话框
2.3.4.5. 配置对话框
2.3.4.6. MySQL安装向导所作的更改
2.3.4.7. 升级MySQL
2.3.4.1. 前言
MySQL安装帮助是MySQL服务器的安装器,使用最新的Microsoft Window安装器技术。结合使用MySQL安装帮助和配置向导,用户安装并 配置完MySQL服务器后便可以直接使用。

MySQL安装帮助是MySQL 5.1服务器分发的标准安装器。使用MySQL安装帮助安装MySQL之前,用户需要手动关闭并卸载已经安装的以前版本的MySQL。关于对以前版本进行升级的详细信息请参见 2.3.4.7节,“升级MySQL”。

最近版本的Windows包含了改进版本的Microsoft Windows安装器(MSI)。MSI已经成为Windows 2000、Windows XP和Windows Server 2003应用程序安装的事实标准。MySQL安装帮助中使用了该技术,使安装过程更加灵活、顺利。

Microsoft Windows安装器引擎随着Windows XP的更新而更新;使用以前Windows版本的用户可以参考Microsoft 知识库文章查阅关于升级到最新版Windows安装器引擎的资料。

此外,Microsoft最近已经引入了WiX(Windows 安装器 XML)工具包。这是Microsoft公认的开放源码项目。我们转换到WiX是因为它是一个开放源码项目,可以使用脚本更加灵活地处理整个Windows安装过程。

对MySQL装帮助的改进依赖于各用户的支持和反馈。如果你发现MySQL安装帮助缺少对你很重要的某些功能,或如果你发现某个缺陷,请使用我们的MySQL缺陷系统来索取功能或报告问题。

2.3.4.2. 下载并启动MySQL安装向导
可以从http://dev.mysql.com/downloads/下载MySQL服务器安装软件包。如果你下载的安装软件包在Zip文件中,你需要先提取文件。

启动帮助的过程取决于下载的安装软件包的内容。如果有setup.exe文件,双击启动安装过程。如果有.msi文件,双击启动安装过程。

2.3.4.3. 选择安装类型
有3种安装类型:Typical(典型安装)、Complete(完全安装)和Custom(定制安装)。

Typical(典型安装)安装只安装MySQL服务器、mysql命令行客户端和命令行实用程序。命令行客户端和实用程序包括mysqldump、myisamchk和其它几个工具来帮助你管理MySQL服务器。

Complete(完全安装)安装将安装软件包内包含的所有组件。完全安装软件包包括的组件包括嵌入式服务器库、基准套件、支持脚本和文档。

Custom(定制安装)安装允许你完全控制你想要安装的软件包和安装路径。关于定制安装的详细信息请参见2.3.4.4节,“定制安装对话框”。

如果你选择Typical(典型安装)或Complete(完全安装)安装并点击Next按钮,你将进入确认窗口确认选择并开始安装。如果你选择定制安装并点击Next按钮,你将进入定制安装对话框,参见2.3.4.4节,“定制安装对话框”。

2.3.4.4. 定制安装对话框
如果你想要更改MySQL安装帮助安装的安装路径或具体组件,应当选择Custom(定制安装)安装。
所有可用组件列入定制安装对话框左侧的树状视图内。未安装的组件用红色 X 图标表示;已经安装的组件有灰色图标。要想更改组件,点击该组件的图标并从下拉列表中选择新的选项。

可以点击安装路径右侧的Change...按钮来更改默认安装路径。

选择了安装组件和安装路径后,点击Next按钮进入确认对话框。

2.3.4.5. 配置对话框
选择了安装类型和可选安装组件后,则进入确认对话框。该对话框中将显示安装类型和安装路径供检查。

如果你满意设定值要想安装MySQL,点击Install(安装)按钮。要想更改设定值,点击Back按钮。要想退出MySQL安装帮助不再安装 MySQL,点击Cancel按钮。

完成安装后,将出现注册选项和MySQL网址。注册后便可以访问forums.mysql.com处的MySQL论坛,可以在bugs.mysql.com报告缺陷,并可以注册为时事新闻订户。在安装器的最后一个窗口内,提供了安装摘要,并提供选项以启动MySQL Configuration Wizard(配置向导),可以用来创建配置文件,安装MySQL服务并进行安全配置。

2.3.4.6. MySQL安装向导所作的更改
点击Install(安装)按钮后,MySQL安装帮助开始安装过程,并对系统进行下面章节描述的更改。
更改注册表

在典型安装中,MySQL安装帮助在HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB创建Windows注册键值。

MySQL安装帮助根据正安装的服务器的主要版本创建一个键值,例如 MySQL服务器5.1。它包含两个字符串值,Location和Version。Location字符串包含安装目录。在默认安装中,它包含C:\Program Files\MySQL\MySQL Server 5.1\。Version字符串包含发布号。例如,安装MySQL Server 5.1.2-alpha,键值包含一个5.1.2-alpha值。

这些注册键值用来帮助外部工具识别MySQL服务器的安装位置,不需要扫描整个硬盘来确定MySQL服务器的安装路径。运行服务器时不需要注册键值,使用noinstall Zip文件时不创建注册键值。

更改启动菜单

MySQL安装帮助在Windows 启动菜单中创建一条新的条目,使用MySQL菜单,根据安装的MySQL的主版本来命名。例如,如果安装了MySQL 5.1, MySQL安装帮助在启动菜单中创建MySQL Server 5.1部分。

将在新启动菜单部分创建下面的条目:

·         MySQL命令行客户端:这是mysql命令行客户端的快捷方式,对其进行配置以连接为root用户。当连接时快捷方式提示输入root用户密码。

·         MySQL服务器实例配置向导:这是MySQL Configuration Wizard(配置向导)的快捷方式。使用该快捷方式来配置新安装的服务器,或重新配置已有的服务器。

·         MySQL文档:可以连接到保存在MySQL服务器安装目录下的文档。采用基本安装方式安装MySQL服务器时,该选项不可用。

更改文件系统

默认情况下,MySQL安装帮助将MySQL 5.1服务器安装到C:\Program Files\MySQL\MySQL Server 5.1,其中Program Files是系统应用程序的默认位置,5.1是MySQL服务器的主要版本。这是建议的MySQL服务器的新安装位置,替换了前面的默认位置c:\mysql。

默认情况下,所有MySQL应用程序保存到目录C:\Program Files\MySQL下,其中Program Files是应用程序在Windows中的默认安装位置。开发机器上的典型MySQL安装应为:

C:\Program Files\MySQL\MySQL Server 5.1C:\Program Files\MySQL\MySQL Administrator 1.0C:\Program Files\MySQL\MySQL Query Browser 1.0该方法使管理和维护具体系统上安装的MySQL应用程序更加容易。

2.3.4.7. 升级MySQL
使用MSI的升级功能,MySQL安装帮助可以自动执行服务器升级。这意味着安装新版本前,不需要手动卸载前面安装的程序。安装新版本前,安装器自动关闭并卸载前面安装的MySQL服务。

只有在主版本号和次要版本号相同的安装之间进行升级时,才能自动进行升级。例如,可以自动从MySQL 4.1.5升级到MySQL 4.1.6,但是不能从MySQL 5.0升级到MySQL 5.1。

参见2.3.15节,“在Windows下升级MySQL”。

论坛徽章:
0
20 [报告]
发表于 2008-04-15 11:43 |只看该作者
2.3.5. 使用配置向导
2.3.5.1. 前言
2.3.5.2. 启动MySQL配置向导
2.3.5.3. 选择维护选项
2.3.5.4. 选择配置类型
2.3.5.5. 服务器类型对话框
2.3.5.6. 数据库使用情况对话框
2.3.5.7. InnoDB表空间对话框
2.3.5.8. 并发连接对话框
2.3.5.9. 联网选项对话框
2.3.5.10. 字符集对话框
2.3.5.11. 服务选项对话框
2.3.5.12. 安全选项对话框
2.3.5.13. 配置对话框
2.3.5.14. my.ini文件的位置
2.3.5.15. 编辑my.ini文件
2.3.5.1. 前言
MySQL Configuration Wizard(配置向导)可以帮助自动配置Windows中的服务器。MySQL Configuration Wizard(配置向导)问你一系列问题,然后将回答放到模板中生成一个my.ini文件,该文件与你的安装一致。
MySQL Configuration Wizard(配置向导)包含在MySQL 5.1服务器中,目前只适用于Windows用户。

MySQL Configuration Wizard(配置向导)在很大程度上是MySQL AB经过多年从许多用户收到的反馈的结果。然而,如果你发现它缺少某些对你很重要的功能,或如果你发现一个缺陷,请使用我们的MySQL 缺陷系统来索取功能或报告问题。

2.3.5.2. 启动MySQL配置向导
一般情况当MySQL安装帮助退出时,从MySQL安装帮助启动MySQL Configuration Wizard(配置向导)。还可以点击Windows启动菜单中MySQL服务器实例配置向导条目中的MySQL部分来启动MySQL Configuration Wizard(配置向导)。
并且,还可以进入MySQL安装bin目录直接启动MySQLInstanceConfig.exe文件。

2.3.5.3. 选择维护选项
如果MySQL Configuration Wizard(配置向导)检查到my.ini文件,你可以选择重新配置已有的服务器,或通过删除my.ini文件并停止、卸载MySQL服务来卸载服务器实例。
要想重新配置已有的服务器,选择Re-configure Instance选项并点击Next按钮。已有的my.ini文件重新命名为mytimestamp.ini.bak,其中timestamp是my.ini文件创建是的日期和时间。要想卸载已有的服务器实例,选择Remove Instance选项并点击Next按钮。

如果选择了Remove Instance选项,则进入确认窗口。点击Execute按钮:MySQL Configuration Wizard(配置向导)停止并卸载MySQL服务,然后删除my.ini文件。服务器安装和自己的data文件夹不删除。

如果选择了Re-configure Instance选项,则进入配置类型对话框,可以选择你想要配置的安装类型。

2.3.5.4. 选择配置类型
当启动MySQL Configuration Wizard(配置向导)重新安装MySQL,或为已有安装选择Re-configure Instance选项,则进入配置类型对话框。

可以选择两种配置类型:Detailed Configuration(详细配置)和Standard Configuration(标准配置)。Standard Configuration(标准配置)选项适合想要快速启动MySQL而不必考虑服务器配置的新用户。详细配置选项适合想要更加细粒度控制服务器配置的高级用户。

如果你是MySQL的新手,需要配置为单用户开发机的服务器,Standard Configuration(标准配置)应当适合你的需求。选择Standard Configuration(标准配置)选项,则 MySQL Configuration Wizard(配置向导)自动设置所有配置选项,但不包括服务选项和安全选项。

Standard Configuration(标准配置)设置选项可能与安装MySQL的系统不兼容。如果系统上已经安装了MySQL和你想要配置的安装,建议选择详细配置。

要想Standard Configuration(标准配置),请分别参阅2.3.5.11节,“服务选项对话框”和2.3.5.12节,“安全选项对话框”的服务选项和安全选项。

2.3.5.5. 服务器类型对话框
可以选择3种服务器类型,选择哪种服务器将影响到MySQL Configuration Wizard(配置向导)对内存、硬盘和过程或使用的决策。
·         Developer Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行着多个桌面应用程序。将MySQL服务器配置成使用最少的系统资源。

·         Server Machine(服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起运行,例如FTP、email和web服务器。MySQL服务器配置成使用适当比例的系统资源。

·         Dedicated MySQL Server Machine(专用MySQL服务器):该选项代表只运行MySQL服务的服务器。假定运行没有运行其它应用程序。MySQL服务器配置成使用所有可用系统资源。

2.3.5.6. 数据库使用情况对话框
通过Database Usage(数据库使用)对话框,你可以指出创建MySQL表时使用的表处理器。通过该选项,你可以选择是否使用InnoDB储存引擎,以及InnoDB占用多大比例的服务器资源。
·         Multifunctional Database(多功能数据库):选择该选项,则同时使用InnoDB和MyISAM储存引擎,并在两个引擎之间平均分配资源。建议经常使用两个储存引擎的用户选择该选项。

·         Transactional Database Only(只是事务处理数据库):该选项同时使用InnoDB和MyISAM 储存引擎,但是将大多数服务器资源指派给InnoDB储存引擎。建议主要使用InnoDB只偶尔使用MyISAM的用户选择该选项。

·         Non-Transactional Database Only(只是非事务处理数据库):该选项完全禁用InnoDB储存引擎,将所有服务器资源指派给MyISAM储存引擎。建议不使用InnoDB的用户选择该选项。

2.3.5.7. InnoDB表空间对话框
有些用户可能想要将InnoDB表空间文件放到不同的位置,而不放到MySQL服务器数据目录。如果你的系统有较大的空间或较高性能的储存设备(例如RAID储存系统),则最好将表空间文件单独放到一个位置。
要想更改InnoDB表空间文件的默认位置,从驱动器下拉列表选择一个新的驱动器,并从路径下拉列表选择新的路径。要想创建路径,点击 ...按钮。

如果你要更改已有服务器的配置,更改路径前你必须点击Modify按钮。此时启动服务器之前,你必须将已有表空间文件移到新位置。

2.3.5.8. 并发连接对话框
限制所创建的与MySQL服务器之间的并行连接数量很重要,以便防止服务器耗尽资源。在Concurrent Connections(并行连接)对话框中,可以选择服务器的使用方法,并根据情况限制并行连接的数量。还可以手动设置并行连接的限制。
·         Decision Support(决策支持)(DSS)/OLAP:如果服务器不需要大量的并行连接可以选择该选项。假定最大连接数目设置为100,平均并行连接数为20。

·         Online Transaction Processing(联机事务处理)(OLTP):如果你的服务器需要大量的并行连接则选择该选项。最大连接数设置为500。

·         Manual Setting(人工设置):选择该选项可以手动设置服务器并行连接的最大数目。从前面的下拉框中选择并行连接的数目,如果你期望的数目不在列表中,则在下拉框中输入最大连接数。

2.3.5.9. 联网选项对话框
在Networking Options(网络选项)对话框中可以启用或禁用TCP/IP网络,并配置用来连接MySQL服务器的端口号。
默认情况启用TCP/IP网络。要想禁用TCP/IP网络,取消选择Enable TCP/IP Networking选项旁边的检查框。

默认使用3306端口。要想更访问MySQL使用的端口,从下拉框选择一个新端口号或直接向下拉框输入新的端口号。如果你选择的端口号已经被占用,将提示确认选择的端口号。

2.3.5.10. 字符集对话框
MySQL服务器支持多种字符集,可以设置适用于所有表、列和数据库的默认服务器字符集。使用Character Set(字符集对话框)来更改 MySQL服务器的默认字符集。
·         Standard Character Set(标准字符集):如果想要使用Latin1做为默认服务器字符集,则选择该选项。Latin1用于英语和许多西欧语言。

·         Best Support For Multilingualism(支持多种语言):如果想要使用UTF8做为默认服务器字符集,则选择该选项。UTF8可以 将不同语言的字符储存为单一的字符集。

·         Manual Selected Default Character Set/Collation(人工选择的默认字符集/校对规则):如果想要手动选择服务器的默认字符集,请选择该项。从下拉列表中选择期望的字符集。

2.3.5.11. 服务选项对话框
在基于Windows NT的平台上,可以将MySQL服务器安装成服务。安装成服务,系统启动时可以自动启动MySQL服务器,甚至出现服务故障时可以随Windows自动启动。

默认情况,MySQL Configuration Wizard(配置向导)将MySQL服务器安装为服务,服务名为MySQL。如果你不想安装服务,取消Install As Windows Service选项旁边的选择框。可以从下拉框选择新的服务名或在下拉框输入新的服务名来更改服务名。

要想将MySQL服务器安装为服务,但是不自动启动,不选中Launch the MySQL Server Automatically选项旁边的检查框。

2.3.5.12. 安全选项对话框
强烈建议为你的MySQL服务器设置一个root密码,默认情况MySQL Configuration Wizard(配置向导)要求你设置一个root密码。如果你不想设置root密码,不选中Modify Security Settings(修改安全设定值)选项旁边的选择框。

要想设置root密码,在New root password(输入新密码)和Confirm(确认)两个框内输入期望的密码。如果重新配置已有的服务器,你还需要Current root password(当前root密码)框内输入已有的root密码。

要想防止通过网络以root登录,选中Root may only connect from localhost(只允许从本机登陆连接root)选项旁边的框。这样可以提高root账户的安全。

要想创建一个匿名用户账户,选中Create An Anonymous Account(创建匿名账户)选项旁边的框。创建匿名账户会降低服务器的安全,并造成登录和许可困难。因此不建议。

2.3.5.13. 配置对话框
MySQL Configuration Wizard(配置向导)的最后一个对话框是Confirmation(确认)对话框。要想启动配置过程,点击Execute。要想返回要想到前面的对话框,点击Back按钮。要想不配置服务器即退出MySQL Configuration Wizard(配置向导),点击Cancel按钮。
点击Execute按钮后,MySQL Configuration Wizard(配置向导)执行一系列的任务,执行过程将显示在屏幕上。

MySQL Configuration Wizard(配置向导)首先使用MySQL AB开发人员和工程师准备的模板根据你的选择确定配置文件选项。该模板的名称为my-template.ini,位于服务器安装目录中。

MySQL Configuration Wizard(配置向导)将这些选项写入到一个my.ini文件中。my.ini文件的最终位置显示在写配置文件任务的旁边。

如果选择为MySQL服务器创建一个服务,MySQL Configuration Wizard(配置向导)则创建并启动服务。如果你重新配置已有的服务,MySQL Configuration Wizard(配置向导)则根据你的配置更改重新启动服务。

如果选择设置root密码,MySQL Configuration Wizard(配置向导)则连接服务器,设置新root密码并应用你选择的其它安全设定值。

MySQL Configuration Wizard(配置向导)完成任务后,则显示一个概要。点击Finish按钮退出MySQL Configuration Wizard(配置向导)。

2.3.5.14. my.ini文件的位置
MySQL Configuration Wizard(配置向导)将my.ini文件放到MySQL服务器的安装目录中。这样可以帮助将配置文件与具体服务器实例关联起来。
要想确保MySQL服务器知道从哪里查找my.ini文件,即做为服务安装的一部分传递给MySQL服务器的部分:--defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini",其中C:\Program Files\MySQL\MySQL Server 5.1 被MySQL服务器的安装路径替代。

--defaults-file指导MySQL服务器读取具体的配置文件。

2.3.5.15. 编辑my.ini文件
要想修改my.ini文件,用文本编辑器打开并进行必要的修改。你还可以用MySQL Administrator实用工具修改服务器配置。
MySQL客户端和实用程序,例如mysql命令行客户端和mysqldump不能将my.ini文件放到服务器安装目录中。要想配置客户端和实用工具,根据Windows 版本,在C:\Windows或C:\WINNT目录下创建一个新的my.ini文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP