Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103421407
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-05-11 17:26:50

2.3.15. 在Windows下升级MySQL

本节列出了在Windows中升级MySQL应采取的步骤。

1.    进行升级前你应先备份当前的MySQL安装。请参见5.9.1节,“数据库备份”

2.    http://dev.mysql.com/downloads/下载最新WindowsMySQL

3.    升级MySQL前,必须停止服务器。

如果服务器安装为服务,必须在命令提示符下在命令行中用下面的命令停止服务:

C\> NET STOP MYSQL

如果MySQL服务器不是服务,使用下面的命令停止服务器:

C\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin -u root shutdown

4.    当从以前至的4.1.5版本升级到MySQL 5.1,或从Zip文件安装的MySQL升级到MySQL Installation Wizard安装帮助)安装的MySQL时,你必须手动卸载前面安装的MySQL服务。

要想卸载MySQL服务,使用下面的命令:

C\> C:\mysql\bin\mysqld --remove

如果你不想卸载已有的服务,MySQL Installation Wizard(安装帮助)则不会正确安装新的MySQL服务。

5.    如果你使用MySQL Installation Wizard(安装帮助),按照2.3.4节,“使用MySQL安装向导”的描述来启动帮助。

6.    如果用Zip文件安装MySQL,应提取文件。你可以覆盖已有的MySQL安装(通常位于C\mysql),或将它安装到其它目录,例如 C\mysql4。建议覆盖原有的安装。

7.    重新启动服务器。如果你运行MySQL服务,则使用NET START MySQL,还可以直接调用mysqld

8.    关于在Windows之外的操作系统升级MySQL的详细信息,请参阅2.10节,“升级MySQL”

9.    如果遇到错误,参见 2.3.14节,“在Windows环境下对MySQL安装的故障诊断与排除”

2.3.16. Windows版MySQL同Unix版MySQL对比

已经证明,WindowsMySQL很稳定。WindowsMySQL的功能与相应的Unix版相同,只有以下例外:

·         Windows 95和线程

Windows 95创建一个线程时大约需要200字节的主内存。MySQL的每个连接都会创建一个新线程,因此如果你的服务器正处理许多连接,你不应当在Windows 95中运行mysqld

·         有限的端口数目

Windows系统有大约4,000个端口供客户端连接,某个端口的连接关闭后,在能够重新利用该端口前,需要24分钟。在客户端频繁连接并从服务器上断开时,在可以重新使用关闭的端口前,有可能用完了所有可用的端口。如果发生这种情况,MySQL服务器不会响应,即使它仍在运行。请注意机器上运行的其它应用程序也可以使用端口,此时可供MySQL使用的端口数要少。

详细信息参见

·         并行读

MySQL依靠pread()pwrite()系统调用来同时使用INSERTSELECT。目前我们使用互斥来竞争pread()pwrite()。我们将来想用虚拟接口替换文件级接口,因此要想更快,我们可以在NT2000XP上使用readfile()/writefile()接口。目前MySQL 5.1可以打开的文件的限制数目为2,048,意味着在Windows NT2000,XP2003上可以运行的并行线程不如Unix上多。

·         阻塞读

MySQL为每个连接使用阻塞读取,如果启用了命名管道连接,其含义如下:

o        连接不会在8小时后自动断开,而在UnixMySQL中会发生。

o        如果连接被挂起,不杀掉MySQL则不会将其中断。

o        mysqladmin kill不会杀掉睡眠中的连接。

o        只要有睡眠连接,mysqladmin shutdown不会中断。

我们计划在将来修复该问题。

·         ALTER TABLE

执行ALTER TABLE语句时,将该表锁定不让其它线程使用。在Windows中,你不能删除正被另一个线程使用的文件。在将来,我们会找出办法解决该问题。

·         DROP TABLE

Windows中对一个被MERGE表应用的表执行DROP TABLE不会实现,因为MERGE处理器将表从MySQL上层映射隐藏起来。由于Windows不允许删除打开的文件,必须在删除表之前首先清空所有MERGE(使用FLUSH TABLES)或删掉MERGE表。

·         DATA DIRECTORY and INDEX DIRECTORY

Windows中将忽略DATA DIRECTORYINDEX DIRECTORY选项,因为Windows不支持符号连接。在具有非功能realpath()调用的系统中,这些选项也被忽略。

·         DROP DATABASE

你不能删掉正被线程使用的数据库。

·         Task Manager(任务管理器)杀掉MySQL

你不能从Task Manager(任务管理求)或使用Windows 95shutdown工具来杀掉MySQL。你必须通过mysqladmin shutdown停止它。

·         大小写名

由于Windows对文件名大小写不敏感。因此在WindowsMySQL数据库名和表名对大小写也不敏感。唯一的限制是在同一个语句中,必须同时使用大写或小写指定数据库名和表名。请参见9.2.2节,“识别符大小写敏感性”

·         \’路径名间隔符

Windows中的路径名用‘\’符间隔开,在MySQL中还是转义字符。如果你使用LOAD DATA INFILESELECT ... INTO OUTFILE,用‘/’符使用Unix-类文件名:

mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;

你还可以使用双‘\’符:

mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;

·         管道问题。

管道不能在Windows命令行提示符下可靠地工作。如果管道包括字符^Z/CHAR(24)Windows认为遇到了文件末尾并中断程序。

这主要是按照如下所示使用二进制日志的主要问题:

C\>mysqlbinlog binary-log-name | mysql --user=root

如果使用日志时出现问题,怀疑是由于^Z / CHAR(24)字符,你可以使用下面的程序:

C:\> mysqlbinlog binary-log-file --result-file=/tmp/bin.sql
C:\> mysql --user=root --execute "source /tmp/bin.sql"

后面的命令还可以用来可靠读取任何包含二进制数据的SQL文件。

·         Access denied for user错误

如果你试图运行MySQL客户端程序来连接同一机器上运行的服务器,但是遇到错误Access denied for user 'some-user'@'unknown' to database 'mysql',这意味着MySQL不能正确识别你的主机名。

要解决该问题,你应当创建一个名为\windows\hosts包含下面信息的文件:

127.0.0.1       localhost

这儿有一些公开问题,提供给想要帮助我们改进Windows中的MySQL的人们:

·         增加宏来使用Windows提供的更快的线程安全增/减方法。

2.4. 在Linux下安装MySQL

建议在Linux中使用RPM包来安装MySQLMySQL RPM目前已经嵌入到SuSE Linux 7.3系统中,但是应当能在大多数支持rpm和使用glibcLinux版本中工作。要想获得RPM软件包,参见2.1.3节,“怎样获得MySQL”

MySQL AB不提供与具体平台相关的RPM;具体平台相关的RPM和通用RPM之间的区别是具体平台相关RPM为目标平台而构建,为动态连接。而通用RPMLinux线程之间是静态连接。

注释:通常由其它供应商提供MySQLRPM分发版。其特征和功能与MySQL AB所构建的不同,该手册中的指令不一定适合安装其它供应商提供的MySQLRPM分发版。此时应咨询供应商的说明。

如果RPM文件有问题(例如,如果你收到错误“Sorry, the host 'xxxx' could not be looked up),参见2.12.1.2节,“Linux二进制分发版说明”

在大多数情况,你只需要安装MySQL-serverMySQL-client软件包来安装MySQL。在标准安装中不需要其它的包。如果你想要运行含更多功能的MySQL-Max服务器,还应当安装MySQL-Max RPM。必须先安装M MySQL-server RPM再安装该模块。请参见5.1.2节,“mysqld-max扩展MySQL服务器”

如果安装MySQL软件包时出现从属错误(例如,“error: removing these packages would break dependencies: libmysqlclient.so.10 is needed by ..),你还应当安装包MySQL-shared-compat,其中包括两个向后兼容的共享库(MySQL 4.0libmysqlclient.so.12MySQL 3.23libmysqlclient.so.10)

许多Linux分发版包含了MySQL 3.23,通常动态连接应用程序以节省硬盘空间。如果这些共享库在单独的包内(例如,MySQL-shared),只需要安装这些包并升级MySQL服务器和客户端软件包(为静态连接,不依赖共享库)对于包含与MySQL服务器相同软件包中的共享库的分发版(例如,Red Hat Linux),你可以安装3.23 MySQL-shared RPM,或使用MySQL-shared-compat包。

可以使用以下RPM包:

·         MySQL-server-VERSION.i386.rpm

MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 注释:在MySQL 4.0.10之前,服务器RPM文件被称为MySQL-VERSION.i386.rpm。也就是说,名称中不含有-server

·         MySQL-Max-VERSION.i386.rpm

MySQL-Max服务器。该服务器具有其它功能,这是MySQL-server RPM不具备的。你必须首先安装MySQL-server RPM,因为MySQL-Max RPM依赖于它。

·         MySQL-client-VERSION.i386.rpm

标准MySQL客户端程序。你可能总是要安装该软件包。

·         MySQL-bench-VERSION.i386.rpm

测试和基准。需要PerlDBD::mysql模块。

·         MySQL-devel-VERSION.i386.rpm

库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要。

·         MySQL-shared-VERSION.i386.rpm

该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL

·         MySQL-shared-compat-VERSION.i386.rpm

该软件包包括MySQL 3.23MySQL 4.0的共享库。如果你安装了应用程序动态连接MySQL 3.23,但是你想要升级到MySQL 4.0而不想打破库的从属关系,则安装该软件包而不要安装MySQL-shared。从MySQL 4.0.13起包含该安装软件包。

·         MySQL-embedded-VERSION.i386.rpm

嵌入式MySQL服务器库(MySQL 4.0)

·         MySQL-VERSION.src.rpm

包含以前所有软件包的源码。可用来在其它架构上重建RPM(例如,AlphaSPARC)

要想看到RPM软件包内的所有文件(例如,MySQL-server RPM),运行:

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

要想执行标准最小安装,运行:

shell> rpm -i MySQL-server-VERSION.i386.rpm
shell> rpm -i MySQL-client-VERSION.i386.rpm

要想只安装客户端软件包,运行:

shell> rpm -i MySQL-client-VERSION.i386.rpm

RPM提供在安装软件包前验证其完整性和真实性的功能。如果你要想了解关于该功能的更多信息,参见2.1.4节,“通过MD5校验和或GnuPG验证软件包的完整性

服务器RPM将数据放入/var/lib/mysql目录。RPM还为mysql用户创建登录账户(如果还没有),用来运行MySQL服务器,并在/etc/init.d/创建相应条目,以便在引导时自动启动服务器。(这意味着如果你已经安装并且已经更改启动脚本,你可能要复制脚本,以便你安装新RPM时 不会丢掉脚本)。关于系统启动时如何自动启动MySQL的详细信息,参见 2.9.2.2节,“自动启动和停止MySQL”

如果想要在旧的不支持/etc/init.d(直接或通过符号连接)初始化脚本的Linux分发版中安装MySQL RPM,你应当创建一个指向初始化脚本实际安装的位置的符号连接。例如,如果安装位置为/etc/rc.d/init.d,安装RPM前使用这些命令创建/etc/init.d,作为指向该位置的符号连接:

shell> cd /etc
shell> ln -s rc.d/init.d

目前主要Linux分发版应当支持使用/etc/init.d的新目录布局,因为需要LSB(Linux标准基)兼容性。

如果你安装的RPM文件包括MySQL-server,安装后MySQLd服务器应当能启动并运行。你应当能使用MySQL启动。

如果出现问题,可以从二进制安装部分找到详细信息。2.7节,“在其它类Unix系统中安装MySQL”

注释:MySQL授权表中的账户开始没有密码。启动服务器后,应当按照2.9节,“安装后的设置和测试”中的说明为它们设置密码。

2.5.在Mac OS X中安装MySQL

可以在Mac OS X 10.2.x(Jaguar)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装MySQL。请注意该软件包不支持旧版本的Mac OS X(例如,10.1.x)

安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件。应当安装图像并显示其内容。

要想获得MySQL,参见2.1.3节,“怎样获得MySQL”

注释:在继续安装前,一定要使用MySQL管理器应用程序(Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服务器实例。

要想安装MySQL PKG文件,双击软件包图标。将启动Mac OS X安装软件包安装器,将指导你完成MySQL安装。

Mac OS X安装软件包的安装器中有一个缺陷,你会在目标盘选择对话框中发现该错误消息:

You cannot install this software on this disk. (null)

如果出现该错误,只需要点击Go Back按钮返回前面的窗口。然后点击Continue再次选择目标盘,此时应当可以正确地选择目标盘。我们已经向Apple报告了该缺陷,它正在调查该问题。

MySQLMac OS X PKG安装到/usr/local/mysql-VERSION,并且还会安装一个符号连接,/usr/local/mysql,指向新的位置。如果有/usr/local/mysql目录,首先将它改名为/usr/local/mysql.bak。安装完后,安装器执行mysql_install_dbMySQL数据库中创建授权表。

安装布局与tar文件二进制分发版类似;所有MySQL二进制代码位于目录/usr/local/mysql/bin中。默认情况,MySQL套接字文件创建为/tmp/mysql.sock。请参见2.1.5节,“安装布局”

MySQL安装需要Mac OS Xmysql用户账户。在Mac OS X 10.2及以上版本中,默认情况应存在mysql用户账户。

如果正运行Mac OS X服务器,需要安装MySQL。随Mac OS X服务器版本安装的MySQL版本如下表所示:

Mac OS X服务器版本

MySQL版本

10.2-10.2.2

3.23.51

10.2.3-10.2.6

3.23.53

10.3

4.0.14

10.3.2

4.0.16

10.4.0

4.1.10a

本节只覆盖官方MySQL Mac OS X PKG版本。一定要阅读Apple关于MySQL安装的帮助信息:运行“帮助视图”应用程序,选择“Mac OS X服务器”帮助,搜索“MySQL”,阅读标题为“安装MySQL”的内容。

对于Mac OS X服务器上已经安装的MySQL版本,如果早于4.0,应特别注意应当使用mysqld_safe而不是safe_mysqld来启动mysqld

如果你前面在Mac OS X上安装了从下载的Marc LiyanageMySQL软件包,你可以只使用该页给出的二进制安装布局按照更新说明来安装。

如果你从Marc3.23.xx 版本或从Mac OS XMySQL服务器版本升级到官方MySQL PKG,你还需要将已有MySQL授权表转换为当前格式,因为已经加了许多新的安全权限。请参见2.10.2节,“升级授权表”

如果你想在系统启动过程中自动启动MySQL,你还需要安装MySQL Startup Item。在MySQL 5.1,它是Mac OS X安装盘映像的一部分,是一个独立的安装软件包。只需要双击MySQLStartupItem.图标并按照说明来安装。

请注意Startup Item只需要安装一次!不需要在以后每次升级MySQL软件包时都安装它。

MySQL 5.1Startup Item安装在/Library/StartupItems/MySQLCOM(MySQL 4.1.2以前的版本,安装位置为/Library/StartupItems/MySQL,但与Mac OS X服务器安装的MySQL Startup Item冲突)Startup Item安装时在系统配置文件/etc/hostconfig中加入变量MySQLCOM=-YES-。如果你想要disable自动启动MySQL,只需要将该变量更改为MySQLCOM=-NO-

Mac OS X服务器上,默认MySQL安装使用/etc/hostconfig文件中的变量MySQLMySQL AB Startup Item安装器将其设置为MySQL=-NO-禁用该变量。这样可以避免启动时间与MySQL AB Startup Item使用的MySQLCOM变量冲突。但是,不会关闭运行的MySQL服务器。你应当自己关闭。

安装完后,可以在终端窗口运行下面的命令来启动MySQL。你必须具有管理员权限来执行该任务。

如果你已经安装的Startup Item

shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

(Enter your password, if necessary)

(Press Control-D or enter "exit" to exit the shell)

如果不使用Startup Item,输入下面的命令序列:

shell> cd /usr/local/mysql

shell> sudo ./bin/mysqld_safe

(Enter your password, if necessary)

(Press Control-Z)

shell> bg

(Press Control-D or enter "exit" to exit the shell)

你应当能够连接MySQL服务器,例如,通过运行/usr/local/mysql/bin/mysql来连接。

注释:MySQL授权表中的账户开始没有密码。启动服务器后,应当按照2.9节,“安装后的设置和测试”中的说明来设置密码。

你可以为外壳源文件起一个别名,使它更容易访问常用的程序,例如从命令行运行mysqlmysqladmintcsh语法为:

aliasMySQL /usr/local/mysql/bin/mysql
aliasMySQLadmin /usr/local/mysql/bin/mysqladmin

对于bash,使用:

aliasMySQL=/usr/local/mysql/bin/mysql
aliasMySQLadmin=/usr/local/mysql/bin/mysqladmin

最好是在PATH环境变量中加入/usr/local/mysql/bin。例如,如果外壳命令是tcsh,在$HOME/.tcshrc文件中加入下面一行:

setenv PATH ${PATH}:/usr/local/mysql/bin

如果根目录中没有.tcshrc文件,则用文本编辑器创建该文件。

如果你对已有的安装进行升级,请注意安装新MySQL PKG时不会卸载旧的安装目录。遗憾的是,Mac OS X安装器尚未提供功能来正确升级前面安装的软件包。

要想在新安装中使用已有的数据库,你需要将旧数据目录中的内容复制到新的数据目录。执行该操作时,确保关闭新、旧服务器。将以前安装的MySQL数据库文件拷贝过来并成功启动新的服务器后,应当卸载旧的文件以节省硬盘空间。并且,还应当卸掉位于/Library/Receipts/mysql-VERSION.pkg的旧版本Package Receipt目录。

2.6. 在NetWare中安装MySQL

MySQL装入到NetWare首先由Novell实现。Novell客户应当满意,NetWare 6.5中捆绑了SQL二进制,并具有自动商业使用许可,用于运行该版本NetWare的所有服务器。

NetWareMySQL使用NetWareMetrowerks CodeWarrior和专用跨编译版GNU自动工具编译而成。

可以从http://dev.mysql.com/downloads/获得最新的二进制软件包NetWare。请参见2.1.3节,“怎样获得MySQL”

为了使MySQL驻留在主机上,NetWare服务器必须满足以下要求:

·         安装的 Latest Support Pack(最新支持补丁)。

·         系统必须满足Novell的最低要求以运行相关版本的NetWare

·         MySQL数据及其二进制,必须安装到NSS卷内;不支持传统卷。

要想在NetWare下安装MySQL,遵从下面的步骤:

1.    如果你对前面的安装进行升级,停止MySQL服务器。应使用下面的命令从服务器控制台完成:

2.            SERVER:  mysqladmin -u root shutdown

3.    从客户端登录到目标服务器上,访问安装MySQL的位置。

4.    将二进制软件包Zip文件提取到服务器上。一定要使用Zip文件中的路径。简单地将文件提取到SYS\是很安全的。

如果你从前面的安装升级,你可能需要复制数据目录(例如,SYS:MYSQL\DATA)my.cnf(如果你已经定制)。然后你可以删除旧版本的MySQL

5.    你可以将目录重新命名为更加一致和易于使用的名称。在本手册的例子中使用SYSMYSQL来指向安装目录。

请注意在NetWare上安装MySQL不会检测到是否已经安装了NetWare发布之外的MySQL版本。因此,如果你已经在SYS\MYSQL安装了从网站上下载的最新MySQL版本(例如,MySQL 4.1或更新版本),在升级NetWare服务器之前,必须重新命名文件夹;否则,SYS\MySQL中的文件会被NetWare Support Pack中的版本所覆盖。

6.    在服务器控制台中,加入含有 MySQL NLM的目录的搜索路径。例如:

7.            SERVER:  SEARCH ADD SYS:MYSQL\BIN

8.    初始化数据目录和授权表,如果需要,应在服务器控制台执行mysql_install_db

9.    在服务器控制台使用mysqld_safe启动MySQL服务器。

10.要完成安装,还应当在autoexec.ncf中加入以下命令。例如,如果MySQL安装在SYSMYSQL中,你想让MySQL自动启动,可以加入以下行:

11.         #Starts the MySQL 5.1.x database server
12.        SEARCH ADD SYS:MYSQL\BIN
13.        MYSQLD_SAFE

如果MySQL运行在NetWare 6.0,我们强烈建议你在命令行中使用--skip-external-locking选项:

#Starts the MySQL 5.1.x database server
SEARCH ADD SYS:MYSQL\BIN
MYSQLD_SAFE --skip-external-locking

还需要使用CHECK TABLEREPAIR TABLE来替代myisamchk,因为myisamchk使用外部锁。已经知道外部锁在NetWare 6.0中有问题;在NetWare 6.5中已经解决了该问题。

NetWare中的mysqld_safe提供了窗口保留功能。当卸载(关闭)mysqld_safe NLM时,默认情况窗口不会消失。相反,会提示用户输入:

**

如果你想让NetWare自动关闭窗口,在mysqld_safe使用--autoclose选项。例如:

#Starts the MySQL 5.1.x database server
SEARCH ADD SYS:MYSQL\BIN
MYSQLD_SAFE --autoclose

14.当首次安装或从前面的版本升级MySQL 5.1版时,应下载并安装最新的相应Perl模块和PHP扩展名:

·         Perl for NetWare:

·         PHP for NetWare:

 (MySQL 4.1PHP 5扩展名适用于MySQL 5.1)

5.1.3节,“mysqld_safe:MySQL服务器启动脚本”中详细描述了NetWare中的mysqld_safe的行为。

如果服务器上已经安装了MySQL,一定要检查autoexec.ncf中已有的MySQL启动命令,如果需要则编辑或删除这些命令。

注释:MySQL授权表中的初始账户没有密码。启动服务器后,你应当使用2.9节,“安装后的设置和测试”中的说明来设置密码。

2.7. 在其它类Unix系统中安装MySQL

本节介绍在各种平台上安装tar压缩文件格式的MySQL二进制分发版(文件有.tar.gz 扩展名)。详细目录参见2.1.2.5节,“MySQL AB编译的MySQL二进制版本”

要想获得MySQL,参见2.1.3节,“怎样获得MySQL”

MySQLtar文件二进制分发版的文件名格式为mysql-VERSION-OS.tar.gz,其中VERSION是版本号(例如,5.1.2-alpha)OS表示分发版安装的操作系统类型(例如,pc-linux-i686)

除了这些通用软件包,我们还为各平台提供了具体的二进制安装软件包。关于如何安装的详细信息参见2.2节,“使用二进制分发版的标准MySQL安装”

你需要下面的工具来安装MySQL tar文件二进制分发版:

·         GNU gunzip解压缩分发版。

·         一个适当的tar解包分发版。 GNU tar已知可以。一些操作系统中含有预安装的tar,已知有问题。例如,已知Mac OS X tarSun tar对于长文件名有问题。在Mac OS X中,你可以使用预安装的gnutar程序。在其它系统中若tar不完善,你应当首先安装GNU tar

如果你遇到问题,在把问题寄到MySQL邮件目录时,请一定使用mysqlbug,就算问题不是一个缺陷,mysqlbug也会收集系统信息,将有助于其它人解决你的问题。不使用mysqlbug,你将减少得到你问题的一个解决方案的可能性!在你解包分发版后,你会在“bin目录下找到mysqlbug。请参见1.7.1.3节,“如何通报缺陷和问题”

必须执行以便安装并使用MySQL二进制分发版的基本命令是:

shell> groupadd mysql

shell> useradd -g mysql mysql

shell> cd /usr/local

shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -

shell> ln -s full-path-to-mysql-VERSION-OS mysql

shell> cd mysql

shell> scripts/mysql_install_db --user=mysql

shell> chown -R root  .

shell> chown -R mysql data

shell> chgrp -R mysql .

shell> bin/mysqld_safe --user=mysql &

注释:该过程未设置MySQL账户的密码。完成下面的过程后,继续执行想2.9节,“安装后的设置和测试”

下面为安装二进制分发版的更详细的描述:

1.    mysqld增加一个登录用户和组:

2.            shell> groupadd mysql

3.            shell> useradd -g mysql mysql

这些命令将增加MySQL组和MySQL用户。不同版本的Unix中,useraddgroupadd的语法可能会稍有不同。还可以称为adduseraddgroup

你可能会将这些用户和组命名为mysql之外的名称。如果是这样,在下面的步骤中替换为相应的名称。

4.    挑选一个你想解开分发包的目录,进入该目录。在下面的例子中,我们将分发解包在“/usr/local”下(因此,下列说明假设你有权限在“/usr/local”中创建文件和目录,如果该目录被保护,你需要以root实施安装)

5.            shell> cd /usr/local

6.    2.1.3节,“怎样获得MySQL”中列出的站点之一获得一个分发文件。对于一个给定的版本,所有平台的二进制分发版均从相同的MySQL源码分发版构建。

7.    解包分发版,将创建安装目录。然后生成到该目录的一个符号链接:

8.            shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -

9.            shell> ln -s full-path-to-mysql-VERSION-OS mysql

tar命令创建mysql-VERSION-OS目录。ln命令生成到该目录的一个符号链接。这让你更容易地把安装目录指定为/usr/local/mysql

使用GNU tar,则不再需要gunzip。可以用下面的命令替换第一行来解包和提取分发版:

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

10.进入安装目录:

11.       shell> cd mysql

你会在mysql目录下发现几个文件和子目录,对安装目的最重要的是“bin”和“scripts”子目录。

·         bin

这个目录包含客户端程序和服务器,你应该把这个目录的完整路径加到PATH环境变量,以便shell能正确的找到MySQL程序。请参见附录F:环境变量

·         scripts

这个目录包含mysql_install_db脚本,用来初始化mysql数据库的 授权表,其中贮存了服务器访问允许。

12.如果还没有安装MySQL,必须创建MySQL授权表:

13.        shell> scripts/mysql_install_db --user=mysql

如果你用root运行命令,应当使用--user选项。选项的值应与你在第一步为运行服务器所创建的登录账户相同。如果你用该用户登录来运行命令,可以省略--user选项。

创建或升级授权表后,需要手动重新启动服务器。

14.将程序二进制的所有权改为root数据目录的所有权改为运行mysqld 的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:

15.        shell> chown -R root  .

16.        shell> chown -R mysql data

17.        shell> chgrp -R mysql .

第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。

18.如果你喜欢在引导机器时自动启动MySQL,可以拷贝support-files/mysql.server文件到系统有启动文件的地方。更多的信息可以在support-files/mysql.server脚本中和2.9.2.2节,“自动启动和停止MySQL”中找到。

19.如果安装了DBIDBD::mysql Perl模块,可以使用bin/mysql_setpermission脚本增加新账户。关于说明,参见 2.13节,“Perl安装注意事项”

20.如果你想使用mysqlaccess而在某个非标准的地点有MySQL分发版,你必须改变地点,在那儿mysqlaccess期望找到mysql客户端。编辑“bin/mysqlaccess”脚本,大约在第18行,寻找类似下面的行:

21.          $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable

改变路径以反映出mysql实际存储在你系统上的地点。如果不这样做,当运行mysqlaccess时,你将遇到一个broken pipe的错误。

在所有东西被解包并且安装以后,你应该初始化并且测试你的分发版。

可以用下列命令启动MySQL服务器:

shell> bin/mysqld_safe --user=mysql &

关于mysqld_safe的详细信息参见5.1.3节,“mysqld_safe:MySQL服务器启动脚本”

注释:MySQL授权表中的账户开始没有密码。启动服务器后,应当使用2.9节,“安装后的设置和测试”中的说明来设置密码。

2.8. 使用源码分发版安装MySQL

安装源码之前,首先检查我们的二进制是否适合你的平台,是否可以工作。我们做了大量的工作确保我们的二进制用最合适的选项来构建。

要获得MySQLa 源码分发版,参见2.1.3节,“怎样获得MySQL”

MySQL源码分发版为tar压缩文件,文件名格式为mysql-VERSION.tar.gz,其中 VERSION是版本号,例如5.1.2-alpha

你需要下列工具构造并安装MySQL源码:

·         GNU gunzip解压缩该分发版。

·         一个适当的tar解包分发版。GNU tar已知可以。一些操作系统中含有预安装的tar,已知有问题。例如,已知Mac OS X tarSun tar对于长文件名有问题。在Mac OS X中,你可以使用预安装的gnutar程序。在其它系统中若tar不完善,你应当首先安装GNU tar

·         一个能工作的ANSI C++编译器。gcc> = 2.95.2egcs> = 1.0.2egcs 2.91.66SGI C++SunPro C++是一些已知能工作的编译器。当使用gcc时,不需要libg++gcc2.7.x有一个缺陷,使得它可能不能编译一些完全合法的C++文件,例如“sql/sql_base.cc”。如果你仅有gcc2.7.x,你必须升级gcc才能编译MySQL。已知gcc 2.8.1在某些平台上有一些问题,因此如果平台上有新的编译器,则不要使用gcc 2.8.1

编译MySQL 3.23.x时,建议使用gcc 2.95.2或更新版。

·         一个优秀的make程序。总是推荐GNU make且有时必须使用。如果你有问题我们推荐试一试GNU make3.75或更新版

如果你使用的gcc版本足够新,可以识别-fno-exceptions选项,则使用该选项非常重要。否则,你编译二进制时出现问题。我们建议你同时使用-felide-constructors-fno-rtti选项。当有疑问时,执行下面操作:

CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
       -fno-exceptions -fno-rtti" ./configure \
       --prefix=/usr/local/mysql --enable-assembler \
       --with-mysqld-ldflags=-all-static

在大多数系统中,可以得到快速、稳定的二进制。

如果你遇到问题,在把问题邮寄到MySQL邮件目录时,请总是使用mysqlbug,就算问题不是一个缺陷,mysqlbug收集系统信息,将有助于其它人解决你的问题。不使用mysqlbug,你将减少得到问题的解决方案的可能性!在解包分发版后,你会在“bin目录下找到mysqlbug。请参见1.7.1.3节,“如何通报缺陷和问题”

2.8.1. 源码安装概述

你必须执行的安装MySQL源码分发版的基本命令是:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

如果从一个源码RPM开始,那么执行如下命令:

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

这样你制作一个可以安装的二进制RPM。对于旧版本的RPM,你可能需要替换用rpm替换命令rpmbuild

注释:该过程不为任何MySQL账户设置密码。完成下面的过程后,根据2.9节,“安装后的设置和测试”进行安装后的设置和测试。

以下是安装MySQL源码分发版的更详细的描述:

1.    mysqld增加一个登录用户和组:

2.            shell> groupadd mysql
3.            shell> useradd -g mysql mysql

这些命令将增加MySQL组和 MySQL用户。不同版本的Unix中,useradd groupadd的语法可能会稍有不同。还可以称为adduseraddgroup

你可能会将这些用户和组命名为mysql之外的名称。如果是这样,在下面的步骤中替换为相应的名称。

4.    挑选一个你想解开分发包的目录,进入该目录。

5.    2.1.3节,“怎样获得MySQL”中列出的站点之一获得一个分发文件。

6.    在当前目录下解包分发版:

7.            shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -

该命令创建mysql-VERSION 目录。

使用GNU tar,则不再需要gunzip。你可以用下面的命令来解包和提取分发:

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

8.    进入解包分发版的顶级目录:

9.            shell> cd  mysql-VERSION

请注意目前必须从顶级目录配置和构建MySQL。你不能在其它目录中构建。

10.配置发布版并且编译:

11.        shell> ./configure --prefix=/usr/local/mysql
12.        shell> make

当你运行configure时,你可能想要指定一些选项,运行./configure --help得到一个选项列表。2.8.2节,“典型配置选项讨论一些很有用的选项。

如果configure失败,你将向MySQL邮件目录发送包含你认为能帮你解决该问题的包含“config.log”中所有行的邮件,也要包括configure的最后几行输出。用mysqlbug脚本邮寄错误报告。请参见1.7.1.3节,“如何通报缺陷和问题”

如果编译失败,参见2.8.4节,“处理MySQL编译问题”寻求帮助。

13.安装分发版:

14.        shell> make install

如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。例如:

shell> cp support-files/my-medium.cnf /etc/my.cnf

可能你需要用root用户运行这些命令。

如果想要配置为支持InnoDB表,应当编辑/etc/my.cnf文件,去掉innodb_...开始选项行前面的#符,并将选项值改为你想要的。请参见4.3.2节,“使用选项文件”15.2.3节,“InnoDB配置”

15.进入安装目录:

16.        shell> cd /usr/local/mysql

17.如果还没有安装的MySQL,必须创建MySQL授权表:

18.        shell> bin/mysql_install_db --user=mysql

如果用root运行命令,应当使用--user选项。选项的值应与你在第一步为运行服务器所创建的登录账户相同。如果用该用户登录来运行命令,可以省略--user选项。

mysql_install_db创建MySQL授权表后,需要手动重新启动服务器

19.将程序二进制的所有权改为root数据目录的所有权改为你运行mysqld的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:

20.        shell> chown -R root  .
21.        shell> chown -R mysql var
22.        shell> chgrp -R mysql .

第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。

23.如果你喜欢在引导机器时自动启动MySQL,你可以拷贝support-files/mysql.server文件到你系统有启动文件的地方。更多的信息可以在support-files/mysql.server脚本中和2.9.2.2节,“自动启动和停止MySQL”中找到。

24.如果安装了DBIDBD::mysql Perl模块,可以使用bin/mysql_setpermission脚本增加新账户。关于说明,参见2.13节,“Perl安装注意事项”

在所有东西被安装以后,你应当使用该命令初始化并且测试你的分发版:

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

如果这个命令提示mysqld daemon ended并马上失败,那么你能在数据目录中的文件“hostname'.err”找到一些信息。

关于mysqld_safe的详细信息参见5.1.3节,“mysqld_safe:MySQL服务器启动脚本”

注释:MySQL授权表中的账户开始没有密码。启动服务器后,你应当使用2.9节,“安装后的设置和测试”中的说明来设置密码。

2.8.2. 典型配置选项

configure脚本给你一个很大的控制权来控制如何配置MySQL源码分发版。一般使用configure命令行的选项来进行。你也可以用某些环境变量作用于configure。请参见附录F:环境变量。要查看configure支持的选择列表,可以运行命令:

shell> ./configure --help
  • 如果只编译MySQL客户端库和客户端程序而不是服务器,使用--without-server选项:
  • shell> ./configure --without-server

如果你没有C++编译器,则不能编译mysql(有一个客户端程序需要C++)。在这种情况下,你可以去掉configure里面测试C++编译器的代码,然后运行带有 --without-server选项的./configure。编译步骤步将仍然尝试构造mysql,但是你可以忽略任何关于“mysql.cc”的警告。(如果make停止,试试make -k告诉它即使出错继续剩下的构造步骤)。

·         如果你想要构建嵌入式MySQL (libmysqld.a),你应当使用--with-embedded-server选项。

  • 如果你不想要位于“/usr/local/var”目录下面的日志(log)文件和数据库,使用类似于下列configure命令的一个:
  • shell>./configure--prefix=/usr/local/mysql
  • shell>./configure--prefix=/usr/local
  •        localstatedir=/usr/local/mysql/data

第一个命令改变安装前缀以便将所有内容安装到“/usr/local/mysql”下面而非 默认的“/usr/local”。第二个命令保留默认安装前缀,但是覆盖了数据库目录默认目录(通常是“/usr/local/var)并且把它改为/usr/local/mysql/data。编译完MySQL后,可以通过选项文件更改这些选项。请参见4.3.2节,“使用选项文件”

  • 如果你正在使用Unix并且你想要MySQL的套接字位于 默认位置以外的某个地方(通常在目录“/tmp”或“/var/run”,使用象这样的configure的命令:
  • shell> ./configure\-- with-unix-socket-
  • path=/usr/local/mysql/tmp/mysql.sock

注意给出的文件名必须是一个绝对路径。你还可以在以后使用MySQL选项文件更改mysql.sock的位置。请参见A.4.5节,“如何保护或更改MySQL套接字文件/tmp/mysql.sock

  • 如果你想编译静态链接程序(例如,制作二进制分发版、获得更快的速度或与解决与RedHat分发版的一些问题),像这样运行configure

·                shell>./configure --with-client-ldflags=-all-static\

·                        --with-mysqld-ldflags=-all-static

  • 如果你正在使用gcc并且没有安装libg++libstdc++,你可以告诉configure使用gcc作为C++编译器:
  • shell> CC=gcc  CXX=gcc  ./configure

当你使用gcc作为C++编译器用时,它将不试图链接libg++libstdc++。即使你安装了这些库,这样也很好,因为过去使用MySQL时,它们的部分版本会出现一些奇怪的问题。

下面列出了一些经常使用的编译器和环境变量设定值。

o        gcc 2.7.2

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"

o        egcs 1.0.3a

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors \
o                     -fno-exceptions -fno-rtti"

o        gcc 2.95.2

o                     CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
o                     -felide-constructors -fno-exceptions -fno-rtti"

o        pgcc 2.90.29 或更新版:

o                     CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
o                     CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
o                     -felide-constructors -fno- exceptions -fno-rtti"

在大多数情况,在configure行使用前面列出的选项并加入下面的选项,可以得到合理的优化的MySQL二进制:

--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static

换句话说,对于所有最近的gcc版,整个configure行应为:

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

我们在MySQL网址提供的二进制均已经编译过并进行了优化,对于大多数用户应当比较完善。请参见2.1.2.5节,“MySQL AB编译的MySQL二进制版本”。其中有一些配置设定值,可以选用来构建更快的二进制,但是只适用高级用户。请参见7.5.4节,“编译和链接怎样影响MySQL的速度”

如果构造失败并且产生有关编译器或链接器的错误,不能创建共享库“libmysqlclient.so.#(#”是一个版本号), 你可以通过为configure指定--disable-shared选项来解决此问题。在这种情况下,configure将不构造一个共享libmysqlclient.so.#库。

  • 默认地,MySQL使用latin1(cp1252)字符集。为了改变 默认设置,使用--with-charset选项:
  • shell> ./configure -- with-charset=CHARSET

CHARSET可以是big5cp1251cp1257czechdanishdec8doseuc_krgb2312gbkgerman1hebrewhp8hungariankoi8_rukoi8_ukrlatin1latin2sjisswe7tis620ujisusa7win1251ukr。请参见5.10.1节,“数据和排序用字符集”

可以指定默认校对规则。MySQL默认使用latin1_swedish_ci校对规则。要想更改,使用--with-collation选项:

shell> ./configure --with-collation=COLLATION

要想更改字符集和校对规则,要同时使用--with-charset--with-collation选项。 校对规则必须是字符集的合法校对规则。(使用SHOW COLLATION语句来确定每个字符集使用哪个校对规则)

如果想在服务器和客户端之间变换字符,你应该看一下SET OPTION CHARACTER SET命令。请参见13.5.3节,“SET语法”

警告:如果你在创建了任何数据库表之后改变字符集,你将必须对每个表运行myisamchk -r -q --set-character-set=charset,否则索引可能不正确地排序。(如果安装了MySQL,创建一些表,然后重新配置MySQL使用一个不同的字符集并且重新安装它,这时就可能发生这种情况。)

通过configure选项--with-extra-charsets=LIST,你可以定义在服务器中再定义哪些字符集。LIST 指下面任何一项:

o        空格间隔的一系列字符集名

o        complex -,以包括不能动态装载的所有字符集

o        all –,以将所有字符集包括进二进制

  • 为了配置MySQL带有调试代码,使用--with-debug选项:
  • shell> ./configure --with-debug

这导致包含一个安全的内存分配器,能发现一些错误和并提供关于正在发生的事情的输出。请参见E.1节,“调试MySQL服务器”

·         如果客户端程序使用线程,还必须使用--enable-thread-safe-client配置选项来编译线程安全版的MySQL客户端库。将创建一个libmysqlclient_r库,可以用来连接应用程序线程。请参见25.2.15节,“如何生成线程式客户端”

·         可以使用--with-big-tables选项构建支持大数据库表的MySQL

该选项使变量用来将表行数保存到unsigned long long中而不是unsigned long。结果是允许表有大约1.844E+19 ((232)2)行而不是232 (~4.295E+09) 行。在以前,要完成该功能必须手动将-DBIG_TABLES传递给编译器。

属于特定系统的选项可在本章特定系统的小节里找到。请参见2.12节,“具体操作系统相关的注意事项”
阅读(1020) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~