bitscn.com 以下是安装mysql源码分发版的更详细的描述:
1. 为mysqld增加一个登录用户和组:
2. shell> groupadd mysql3. shell> useradd -g mysql mysql这些命令将增加mysql组和mysql用户。不同版本的unix中,useradd 和groupadd的语法可能会稍有不同。还可以称为adduser和addgroup。
你可能会将这些用户和组命名为mysql之外的名称。如果是这样,在下面的步骤中替换为相应的名称。
4. 挑选一个你想解开分发包的目录,进入该目录。
5. 从2.1.3节,怎样获得mysql中列出的站点之一获得一个分发文件。
6. 在当前目录下解包分发版:
7. shell> gunzip 使用gnu tar,则不再需要gunzip。你可以用下面的命令来解包和提取分发:
shell> tar zxvf /path/to/mysql-version-os.tar.gz8. 进入解包分发版的顶级目录:
9. shell> cd mysql-version请注意目前必须从顶级目录配置和构建mysql。你不能在其它目录中构建。
10.配置发布版并且编译:
11. shell> ./configure --prefix=/usr/local/mysql12. 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/mysql17.如果还没有安装的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 var22. shell> chgrp -r mysql .第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。
23.如果你喜欢在引导机器时自动启动mysql,你可以拷贝support-files/mysql.server文件到你系统有启动文件的地方。更多的信息可以在support-files/mysql.server脚本中和2.9.2.2节,自动启动和停止mysql中找到。
24.如果安装了dbi和dbd::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-constructorso egcs 1.0.3a:
o cc=gcc cxx=gcc cxxflags=-o3 -felide-constructors /o -fno-exceptions -fno-rttio gcc 2.95.2:
o cflags=-o3 -mpentiumpro cxx=gcc cxxflags=-o3 -mpentiumpro /o -felide-constructors -fno-exceptions -fno-rttio 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网址http://www.mysql.com/提供的二进制均已经编译过并进行了优化,对于大多数用户应当比较完善。请参见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可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。请参见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节,具体操作系统相关的注意事项 bitscn.com