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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-05-11 17:27:37

2.8.3. 从开发源码树安装

注意:如果你想帮助我们测试新代码,应当阅读本节。如果你只想在系统上安装并运行MySQL,应当使用标准发布分发版(二进制或源码分发版)

要想获得我们的最新开发源码树,应使用说明:

1.    免费客户端。

2.    Unix上安装免费客户端:

3.            shell> sh bk-client.shar
4.            shell> cd bk_client-1.1
5.            shell> make all
6.            shell> PATH=$PWD:$PATH

Windows上的安装方法:

·         下载并安装Cygwin

·         确保gccmake已经安装到Cygwin。可以用which gccwhich make命令进行测试。如果任何一个没有安装,运行 Cygwin安装包管理器,选择gccmake安装。

·         Cygwin中,运行:

·                      shell> sh bk-client.shar
·                      shell> cd bk_client-1.1

然后编辑Makefile并将行s $(CC) $(CFLAGS) -o sfio -lz sfio.c更改为:

$(CC) $(CFLAGS) -o sfio sfio.c -lz

现在运行make命令并设置路径:

shell> make all
shell> PATH=$PWD:$PATH

7.    安装BitKeeper免费客户端后,首先进入工作目录,然后使用以下命令在本地复制MySQL 5.1

8.            shell> sfioball -r+ bk://mysql.bkbits.net/mysql-5.1 mysql-5.1

一般情况,你不需要自己构建文档,因为我们已经在http://dev.mysql.com/doc/提供了许多格式。我们每天更新你可以下载的格式(HTMLPDF),因此你没有必要从MySQLdoc树中的DocBook XML基本格式来创建。如果你想要复制文档库,使用下面的命令:

shell> sfioball -r+ bk://mysql.bkbits.net/mysqldoc mysqldoc

在前面的例子中,在当前目录的MySQL-5.1/子目录中设置源码树。

如果你位于防火墙后面,只能初始化HTTP连接,还可以通过HTTP使用BitKeeper

如果需要使用代理服务器,设置环境变量http_proxy指向代理:

shell> export http_proxy=""

当复制库时用http://替换bk//。例如:

shell> sfioball -r+  mysql-5.1

下载源码树可能需要一段时间,取决于连接速度。请耐心等待。

9.    要想更新本地MySQL 5.1库复制,使用命令:

10.        shell> update bk://mysql.bkbits.net/mysql-5.1

11.你需要GNU makeautoconf 2.58 (或更新版)automake 1.8libtool 1.5m4来运行后面的命令。尽管许多操作系统安装了make,很可能编译失败,出现许多奇怪的缺陷消息。因此,强烈建议你使用GNU make(有时名为gmake)

幸运的是,大量的操作系统预装了GNU工具链或提供了可安装软件包。你可以随时从下面的地址下载:

·        

·        

·        

·        

·        

要想配置MySQL 5.1,你还需要GNU bison 1.75或更新版。旧版本的bison会报告错误:

sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded

注释:实际上并没有超出最大表空间;这是由旧版本的bison缺陷造成的该问题。

下面的例子显示了配置源码树需要的典型命令。第一个cd命令将位置改为树的顶级目录;用相应目录名替换MySQL-5.1

shell> cd mysql-5.1
shell> bk -r edit
shell> aclocal; autoheader
shell> libtoolize --automake --force
shell> automake --force --add-missing; autoconf
shell> (cd innobase; aclocal; autoheader; autoconf; automake)
shell> (cd bdb/dist; sh s_all)
shell> ./configure  # Add your favorite options here
shell> make

对于下面的命令,可以使用BUILD/autorun.sh作为快捷方式:

shell> aclocal; autoheader
shell> libtoolize --automake --force
shell> automake --force --add-missing; autoconf
shell> (cd innobase; aclocal; autoheader; autoconf; automake)
shell> (cd bdb/dist; sh s_all)

使用将目录改为innobasebdb/dist目录的命令行来配置InnoDB Berkeley DB (BDB)储存引擎。如果你不需要InnoDBBDB支持,你可以省略这些命令行。

如果在该阶段你遇到一些奇怪的错误,请确认你是否已经安装了 libtool

标准配置脚本位于BUILD/子目录。你会发现使用BUILD/compile-pentium-debug脚本比使用前面的外壳命令要方便得多。要想在不同的架构上编译,可以修改脚本,即去掉Pentium相关标志。

12.构建完成后,运行make install。在产品机器上运行时应注意;该命令会覆盖你正使用的版本。如果你安装了另一个MySQL,我们建议你使用 与你的产品服务器上不同的--prefix--with-tcp-port--unix-socket-path选项值来运行./configure

13.强制运行新安装和尝试会破坏新功能。应先运行make test。请参见27.1.2节,“MySQL测试套件”

14.如果你已经进入make阶段而分发版不编译,请报告给我们的中的缺陷数据库。如果你已经安装了GNU工具的最新版本,如果视图处理配置文件时出错,请报告给我们。但是,如果你执行aclocal并且遇到command not found error或类似问题,不要报告给我们。而是应确保安装了所有必要的工具,并且PATH变量设置正确,保证外壳命令可以找到它们。

15.复制完库(sfioball)获得源码树后,你应当定期更新库(update)

16.你可以检查树的更改史,浏览源码树中的BK/ ChangeLog文件并查看ChangeSet描述找到所有不同点。要想检查特殊的更改集,必须使用sfioball命令提取源码树的两次不同的修订,然后使用外部diff命令来比较。如果你看到有疑问的奇怪的不同之处或代码,一定要向MySQL internals邮件列表发送邮件。请参见1.7.1.1节,“The MySQL邮件列表”。并且,如果你有更好的思想,请向上述地址发送邮件。

17.BitKeeper免费客户端预装了源码。免费客户端可用的唯一文档是源码本身。

你还可以在线浏览更改集、注释和源码。要想浏览MySQL 5.1的相关信息,请到

2.8.4. 处理MySQL编译问题

所有MySQL程序在SolarisLinux上使用gcc编译并且没有任何警告。在其它系统上,由于系统包含文件的差别可能会发生警告。对于使用MIT-pthreads时发生的警告。请参见2.8.5节,“MIT-pthreads注意事项”。其它问题,检查下面的表。

许多问题的解决方案涉及重新配置。如果你确实需要重新配置,注意下列事项:

  • 如果configure在它已经被运行了以后运行,它可以使用先前收集的信息。这个信息存储在“config.cache”里面。当configure启动时,它寻找该文件而且如果它存在,假定信息仍然是正确的,读入它的内容。当你重新配置时,该假设无效。
  • 每次运行configure的时候,必须运行make再重新编译。然而, 你可能想要把先前构造的老的目标文件删除,因为它们使用不同的配置选项编译而成。

为了防止使用旧的配置信息或目标文件,重新运行configure前运行这些命令:

shell> rm  config.cache

shell> make clean

另外,你可以运行make distclean

下表描述了一些最常发生的编译MySQL的问题:

  • 如果在编译“sql_yacc.cc”时,遇到如下错误,可能是存储器或交换空间溢出:
·                Internal compiler error: program cc1plus got fatal signal 11
·                Out of virtual memory
·                Virtual memory exhausted

该问题是gcc要求大量的内存编译带有嵌入函数(inline function)的“sql_yacc.cc”。试试以--with-low-memory选项运行configure

shell> ./configure -- with-low-memory

如果你正在使用gcc,该选项使得将-fno-inline加到编译行,如果你正使用其它的编译器,则加入-O0。你应该试一试--with-low-memory选项,即使你有特别多的存储器和交换空间,而你认为不可能运行得溢出。这个问题甚至会在很慷慨的硬件配置的系统上出现,通常用--with-low-memory选项修正它。

  • 默认情况,configure选则c++作为编译器并用-lg++选项的GNU c++链接。如果你正在使用gcc,这个特性在配置期间导致如下问题:

·                configure: error: installation or configuration problem:

·                C++ compiler cannot create executables.

也可能在编译期间看到g++libg++libstdc++相关的问题。

这些问题的一个原因是你可能没有g++,或可能有g++但无libg++libstdc++。看一下“config.log”文件。它应该包含c++编译器不能工作的准确原因!为了解决这些问题,可以使用gcc作为C++编译器。试试设置环境变量CXX"gcc -O3"。例如:

shell> CXX="gcc -O3" ./configure

可以工作,因为gccg++一样编译C++源码,但 默认地它不链接libg++libstdc++

解决这些问题的其它方法当然是安装g++libg++libstdc++。然而,我们建议不要在MySQL中使用libg++libstdc++因为只会增加mysqld二进制空间而不会带来任何好处。部分版本的库在过去曾经给用户带来一些奇怪的问题。

·         如果你的编译以下面任何错误而失败,必须升级make版本到GNUmake

·                making all in mit-pthreads
·                make: Fatal error in reader: Makefile, line 18:
·                Badly formed macro assignment

或:

make: file `Makefile' line 18: Must be a separator (:

或:

pthread.h: No such file or directory

已知SolarisFreeBSDmake程序有问题。

已知GNU make 3.75能工作。

·         如果你想要定义CC++编译器所使用的标志,把标志加到CFLAGSCXXFLAGS环境变量中即可。也可以使用CCCXX来指定编译器名字。例如:

·                shell> CC=gcc
·                shell> CFLAGS=-O3
·                shell> CXX=gcc
·                shell> CXXFLAGS=-O3
·                shell> export CC CFLAGS CXX CXXFLAGS

对于已经知道在不同系统上有用的标志定义列表,参见2.1.2.5节,“MySQL AB编译的MySQL二进制版本”

·         如果你遇到象如下的一条错误消息,则需要升级gcc编译器:

·                client/libmysql.c:273: parse error before `__attribute__'

gcc2.8.1已知可以工作,但是我们推荐使用gcc 2.95.2egcs 1.0.3a

·         如果编译mysqld时显示例如下面的那些错误, configure没有正确地检测传到accept()getsockname()getpeername()最后参数的类型:

·                cxx: Error: mysqld.cc, line 645: In this statement, the referenced
·                     type of the pointer value ''length'' is ''unsigned long'',
·                     which is not compatible with ''int''.
·                new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);

为了修正它,编辑“config.h”文件(它由configure生成)。寻找这些行:

/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX
  • 更改XXXsize_tint,取决于你的操作系统。(注意:每次运行configure都必须这样做,因为configure重新生成“config.h”)
  • sql_yacc.cc”文件由“sql_yacc.yy”生成。通常构造过程不需要创造“sql_yacc.cc”,因为MySQL有一个已经生成的拷贝,然而,如果你确实需要再创建它,可能会碰到这个错误:

·                "sql_yacc.yy", line xxx fatal: default action causes potential...

这是一个yacc版本不完善的迹象。你可能需要安装bisonGNUyacc)并使用它。

·         Debian Linux 3.0, 如果你编译的MySQL 5.1要支持Berkeley DB,需要安装gawk代替默认的mawk

·         如果你需要调试mysqldMySQL客户端,运行configure,使用--with-debug选项,然后重新编译并且将客户端程序链接到新的客户端库。请参见E.2节,“调试MySQL客户端”

·         如果你在Linux(例如,SuSE Linux 8.1Red Hat Linux 7.3)下遇到类似下面的编译错误:

·                libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from
·                incompatible pointer type
·                libmysql.c:1329: too few arguments to function `gethostbyname_r'
·                libmysql.c:1329: warning: assignment makes pointer from integer
·                without a cast
·                make[2]: *** [libmysql.lo] Error 1

默认情况,configure脚本试图使用g++ GNU C++编译器来确定正确的参数。如果未安装g++将会产生错误的结果。有两种方法可以解决该问题:

o        确保安装了GNU C++ g++。在某些Linux分发版上,需要安装的软件包叫做gpp;在其它分发版上名为gcc-c++

o        使用gcc作为C++ 编译器,将CXX环境变量设置为gcc

o                     export CXX="gcc"

请注意之后需要再次运行configure

2.8.5. MIT-pthreads注意事项

这节描述使用MIT-pthreads时所涉及的一些问题。

Linux上,应该不使用MIT-pthreads而是安装LinuxThreads!参见2.12.1节,“Linux注意事项”

如果你的系统不提供原生的线程支持,将需要使用MIT-pthreads包构造MySQL。这包括大多数FreeBSD系统、SunOS 4.xSolaris 2.4和更早版本及其它,参见2.1.1节,“MySQL支持的操作系统”

MIT-pthreads不是MySQL 5.1源码分发版的一部分。如果你需要该安装包,需要单独从下载。

下载后,将源文件提取到MySQL源码目录的顶级目录。将创建新的mit-pthreads子目录。

  • 在大多数系统上,你能通过使用configure并用--with-mit-threads选项来强迫运行MIT-pthreads
  • shell> ./configure -- with-mit-threads

当使用MIT-pthreads时,不支持在一个非源码目录构造,因为我们想要使我们对代码的改变减到最小。

·         决定是否使用MIT-pthreads的检查仅在处理服务器代码的配置过程期间发生。如果已经用--without-server配置了分发版并只构造客户端代码,客户端将不知道MIT-pthreads是否正在被使用并且是否使用 默认的Unix套接字连接。因为在某些平台上Unix套接字文件不能在MIT-pthreads下面工作,这意味着当你运行客户端程序时,你需要使用-h--host

·         当使用MIT-pthreads编译MySQL时,因为性能原因,系统锁定 默认为禁止使用。你可以用--external-locking选项告诉服务器使用系统锁定。只是在相同数据文件上运行两个MySQL服务器时采需要,因此不推荐。

  • 有时pthreadbind()命令不能绑定一个套接字但没有任何错误消息(至少在Solaris),结果是所有到服务器的连接均失败。例如:
  • shell> mysqladmin version
  • mysqladmin: connect to server at '' failed;
  • error: 'Can't connect to mysql server on localhost (146)'

解决它的方法是杀死mysqld服务器并且重启它。这只有当我们强迫服务器停止并马上进行重启时在发生。

  • 使用MIT-pthreads,不能用SIGINTbreak)中断sleep()系统调用。这只有在运行mysqladmin --sleep时才能注意到。在中断起作用并且进程停止之前必须等待sleep()终止。
  • 当链接时,你可能会收到这样的警告消息(至少在Solaris);它们可以被忽视:
  • ld: warning: symbol `_iob' has differing sizes:
  •     (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  • file /usr/lib/libc.so value=0x140);
  •     /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
  • ld: warning: symbol `__iob' has differing sizes:
  •     (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  • file /usr/lib/libc.so value=0x140);
  •     /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken

 

  • 一些其它的警告也可被忽略:
  • implicit declaration of function `int strtoll(...)'
  • implicit declaration of function `int strtoul(...)'
  • 我们还没有让readlineMIT-pthreads上工作。(这不需要,但是可能某些人会感兴趣。)

2.8.6. 在Windows下从源码安装MySQL

下面的说明描述了如何在Windows下从5.1版源码构建MySQL二进制。说明用于从包含最新开发源码的标准源码分发版或从BitKeeper树来构建二进制。

注释:本文档中的说明严格限于在Windows下从最新源码分发版或从BitKeeper树来测试MySQL的用户。作为产品使用时,MySQL AB不建议使用你自己从源码构建的MySQL服务器。一般情况,最好使用MySQL AB预编译的对性能进行优化的适用WindowsMySQL二进制分发版。安装二进制分发版的说明参见2.3节,“在Windows上安装MySQL”

要想在Windows中从源码构建MySQLWindows系统中应有下面的编译器和资源:

·         Visual Studio 2003编译器系统(VC++ 7.0)

·         35GB的硬盘空间。

·         Windows 2000或更高版本。

确切的系统需求见:

还需要适用WindowsMySQL源码分发版。有两种方法可以获得MySQL 5.1 源码分发版:

1.    获得MySQL AB打包的源码分发版软件包。预打包的源码分发版可从 http://dev.mysql.com/downloads/获得。

2.    你可以用最新BitKeeper开发源码树构建源码分发版。如果你计划构建,必须在Unix系统中创建安装软件包,并将它转移到Windows系统。(这样操作的理由是部分配置和构建步骤需要只能在Unix中工作的工具)。BitKeeper方法需要:

·         运行Unix或类似Unix的系统,例如Linux

·         该系统上安装的BitKeeper 3.0。关于如何下载和安装BitKeeper的说明参见2.8.3节,“从开发源码树安装”

如果你使用Windows源码分发版,你可以直接跳到2.8.6.1节,“使用VC++构建MySQL”。要想从BitKeeper树构建,继续2.8.6.2节,“从最新的开发源码创建Windows源码安装包”

如果你发现某些组件不能按预料的工作,或者你有好的建议可以改进目前的在Windows中的构建过程,请向win32邮件列表发送消息。请参见1.7.1.1节,“The MySQL邮件列表”

2.8.6.1. 使用VC++构建MySQL

注释:MySQL 4.1和以上版本的VC++工作区文件与Microsoft Visual Studio 2003版本兼容,MySQL AB人员已经在每个版本之前进行了测试。

按照以下步骤构建MySQL

1.    创建工作目录(例如,C\ workdir)

2.    使用WinZip或其它可以读取.zip文件的Windows工具将源码分发版解压缩到上述目录。

3.    启动Visual Studio

4.    File菜单,选择Open Workspace

5.    打开工作目录中的MySQL.dsw工作区。

6.    Build 菜单,选择Set Active Configuration菜单。

7.    点击窗口选择mysqld - Win32 Debug并点击OK

8.    F7开始构建调试服务器、库和客户端应用程序。

9.    按同样方法编译发布版本。

10.程序和库的调试版本位于client_debuglib_debug目录。程序和库的发布版本位于client_releaselib_release目录。请注意如果你想要构建调试版本和发布版本,可以从Build菜单选择Build All选项。

11.测试服务器。使用前面的说明构建服务器时,默认MySQL基本目录和数据目录位于C:\mysqlC:\mysql\data。如果你想要使用源码树根目录和数据目录作为基本目录和数据目录来测试服务器,需要告诉服务器其路径名。可以在命令行用--basedir--datadir选项来完成,或将相应选项放入选项文件(Windows目录或C\my.cnf中的my.ini文件)。如果想要使用的数据目录在其它地方,可以指定其路径名。

12.根据你想要使用的服务器,从client_releaseclient_debug目录启动服务器。常用服务器启动说明见2.3节,“在Windows上安装MySQL”。如果想要使用其它基本目录或数据目录,需要相应地更改指令。

13.当服务器根据你的配置独立运行或作为服务时,尝试从client_releaseclient_debug目录中的MySQL交互式命令行实用工具连接它。

如果构建的程序工作正常,停止服务器。按照以下步骤安装MySQL

1.    创建安装MySQL的目录。例如,要安装到C\mysql,使用命令:

2.            C:\> mkdir C:\mysql
3.            C:\> mkdir C:\mysql\bin
4.            C:\> mkdir C:\mysql\data
5.            C:\> mkdir C:\mysql\share
6.            C:\> mkdir C:\mysql\scripts

如果想要编译其它客户端程序并连接到MySQL,你还需要创建几个目录:

C\> mkdir C\mysql\include
C\> mkdir C\mysql\lib
C\> mkdir C\mysql\lib\debug
C\> mkdir C\mysql\lib\opt

如果想要对MySQL进行基准检查,创建目录:

C\> mkdir C\mysql\sql-bench

基准检查需要Perl支持。请参见2.13节,“Perl安装注意事项”

7.    将下面的目录从workdir目录复制到C\mysql目录:

8.            C:\> cd \workdir
9.            C:\workdir> copy client_release\*.exe C:\mysql\bin
10.        C:\workdir> copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
11.        C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
12.        C:\workdir> xcopy share\*.* C:\mysql\share /E

如果想要编译其它客户端程序并连接到MySQL,还应当复制几个库和头文件:

C:\workdir> copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
C:\workdir> copy lib_debug\libmysql.* C:\mysql\lib\debug
C:\workdir> copy lib_debug\zlib.* C:\mysql\lib\debug
C:\workdir> copy lib_release\mysqlclient.lib C:\mysql\lib\opt
C:\workdir> copy lib_release\libmysql.* C:\mysql\lib\opt
C:\workdir> copy lib_release\zlib.* C:\mysql\lib\opt
C:\workdir> copy include\*.h C:\mysql\include
C:\workdir> copy libmysql\libmysql.def C:\mysql\include

如果你想要对MySQL进行基准测试,你还应当:

C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E

按照二进制Windows分发版相同的方法设置并启动服务器。请参见2.3节,“在Windows上安装MySQL”

2.8.6.2. 从最新的开发源码创建Windows源码安装包

要想从当前的BitKeeper源码树创建Windows源码安装包,使用下面的说明。请注意必须在运行Unix或类Unix操作系统的系统上执行该过程。例如,已知该过程在Linux上工作得很好。

1.    复制MySQL 5.1BitKeeper源码树。关于如何复制源码树的详细信息,相关说明参见2.8.3节,“从开发源码树安装”

2.    配置和构建分发版,得到可工作的服务器二进制。实现的一个方法是在源码树顶级目录运行下面的命令:

3.            shell> ./BUILD/compile-pentium-max

4.    确保构建过程成功完成后,从源码树顶级目录运行下面的实用工具脚本:

5.            shell> ./scripts/make_win_src_distribution

该脚本创建在Windows 系统中使用的源码安装包。可以根据你的需求为脚本提供不同的选项。它接受下面的选项:

·         --help

显示帮助消息。

·         --debug

打印关于脚本操作的信息,不创建包。

·         --tmp

指定临时位置。

·         --suffix

安装软件包后缀名。

·         --dirname

复制文件的目录名(媒介之间)

·         --silent

不打印正处理文件的详细列表。

·         --tar

创建tar.gz安装软件包而不是.zip安装软件包。

默认情况,make_win_src_distribution创建Zip-格式的文件,文件名为mysql-VERSION-win-src.zip,其中VERSION代表MySQL源码树的版本。

6.    将创建的Windows源码安装包复制或上载到Windows机器上。要想编译,使用2.8.6.1节,“使用VC++构建MySQL”中的说明。

2.8.7. 在Windows下编译MySQL客户端

在源码文件中,应当在MySQL.h之前包括my_global.h

#include 
#include 

my_global.h包括你在Windows中编译程序所需要的Windows兼容文件(例如 windows.h)

可以将代码连接到动态libmysql.lib库,它只是一个包装器以便根据需要装载libmysql.dll,或连接静态mysqlclient.lib库。

MySQL客户端库编译为线程库,因此你应当将代码编译为多线程。

2.9. 安装后的设置和测试

安装完MySQL后,有一些问题你应当处理。例如,在Unix中,你应当初始化数据目录并创建MySQL授权表。对于所有平台,一个重要安全问题是 授权表中的初始账户没有密码。你应当指定密码以防止未授权访问MySQL服务器。你可以创建时区表以识别命名的时区。(目前,只在Unix上装了这些表。不久将在Windows中解决该问题)

下面章节包括适用Windows系统和Unix系统的安装后的过程。另一节,2.9.2.3节,“启动MySQL服务器以及其故障诊断和排除”,适用所有平台;它描述了启动服务器时遇到问题时如何解决。2.9.3节,“使初始MySQL账户安全”也适用所有平台。你应当按照说明确保你已经正确地为你的MySQL账户指定密码来保护其安全。

如果你准备创建其它用户账户,你可以在5.7节,“MySQL访问权限系统”5.8节,“MySQL用户账户管理”找到关于MySQL访问控制系统和账户管理的信息。

2.9.1. Windows下安装后的过程

Windows中,不需要创建数据目录和授权表。MySQL Windows分发版包括在数据目录下的MySQL数据库中的一套预初始化的账户的 授权表。不要运行Unix中使用的mysql_install_db脚本。但是,如果你没有使用Windows Installation Wizard(安装帮助)来安装MySQL,应当为账户指定密码。请参见2.3.4.1节,“前言”。在2.9.3节,“使初始MySQL账户安全”

设置密码前,你可能想要运行一些客户端程序来确保你能够连接服务器,并且操作正确。确保服务器在运行(参见2.3.10节,“首次启动服务器”),然后发出下面的命令来验证你可以从服务器获取信息。输出应当类似于:

C:\> C:\mysql\bin\mysqlshow
+-----------+
| Databases |
+-----------+
| mysql     |
| test      |
+-----------+
 
C:\> C:\mysql\bin\mysqlshow mysql
Database: mysql
+--------------+
|    Tables    |
+--------------+
| columns_priv |
| db           |
| func         |
| host         |
| tables_priv  |
| user         |
+--------------+
 
C:\> C:\mysql\bin\mysql -e "SELECT Host,Db,User FROM db" mysql
+------+-------+------+
| host | db    | user |
+------+-------+------+
| %    | test% |      |
+------+-------+------+

如果你正运行支持服务的Windows版本,你想让MySQL服务器在Windows启动时自动运行,参见2.3.12节,“以Windows服务方式启动MySQL”

2.9.2. Unix下安装后的过程

Unix上安装MySQL后,需要初始化 授权表、启动服务器,并确保服务器工作正常。你还要让服务器随系统的启动和停止自动启动和停止。应当为授权表中的账户指定密码。

Unix中,由mysql_install_db设置 授权表。在某些安装中,该程序自动运行:

·         如果你使用RPM分发版在Linux上安装MySQL,服务器RPM运行mysql_install_db

·         如果你使用PKG分发版在Mac OS X上安装MySQL,安装器运行mysql_install_db

否则,你需要自己运行mysql_install_db

下面的过程描述了如何初始化授权表 (如果还没有初始化)并启动服务器。还推荐了一些你可以用来测试服务器是否可以访问以及是否工作正确的命令。关于自动启动和停止服务器的信息,参见2.9.2.2节,“自动启动和停止MySQL”

你完成过程并让服务器运行后,你应当为mysql_install_db创建的账户指定密码。2.9.3节,“使初始MySQL账户安全”中列出了相关说明。

在本节的例子中,服务器用MySQL登录账户的用户ID运行。假定存在这样的账户。如果不存在,要么创建账户,或用其它已有的用来运行服务器的登录账户来替代。

1.    进入MySQL的顶级安装目录,此处为BASEDIR

2.            shell> cd BASEDIR

BASEDIR可能为/usr/local/mysql /usr/local。以下步骤假定你位于该目录。

3.    根据需要,运行mysql_install_db 程序设置含有确定如何让用户连接服务器的权限的初始MySQL授权表。如果你使用的分发版类型不能运行程序,你需要执行该步骤。

典型,只有首次安装MySQL时,才需要运行mysql_install_db,因此如果你升级已有的安装你可以跳过该步骤,但mysql_install_db不会覆盖已有的 授权表,因此可以在任何环境下安全运行。

要想初始化授权表,根据mysql_install_db是位于bin还是scripts目录下,使用下面的一个命令:

shell> bin/mysql_install_db --user=mysql
shell> scripts/mysql_install_db --user=mysql

mysql_install_db脚本创建数据目录、拥有所有数据库权限的mysql数据库和可以用来测试MySQLtest数据库。脚本为root账户和匿名用户账户创建 授权表条目。账户一开始没有密码。2.9.3节,“使初始MySQL账户安全”中描述了初始权限。简单说,这些权限允许MySQL root用户执行任何操作,允许任何人使用test名创建或使用数据库或用test_启动。

一定要确保由mysql登录账户拥有数据库目录和文件,以便在以后运行时 服务器具有读、写访问权限。为此,如果你用root用户运行mysql_install_db,应当使用--user选项。否则,当以mysql登录时,应当执行脚本,你可以省略命令中的--user选项。

mysql_install_dbmysql数据库中创建几个表,包括userdbhosttables_privcolumns_privfunc以及其它。5.7节,“MySQL访问权限系统”中有完整的列表和描述。

如果你不想要test数据库,启动服务器后,可以用mysqladmin -u root drop test卸掉。

如果有mysql_install_db相关问题,参见2.9.2.1节,“与运行mysql_install_db有关的问题

有一些选择运行mysql_install_db脚本,正如MySQL分发版中所提供的:

·         如果想让初始权限与标准默认值不同,你可以在运行前修改mysql_install_db。然而,最好是在设置 授权表后使用GRANTREVOKE来更改权限。换句话说,你可以运行mysql_install_db,然后通过MySQL root用户使用mysql -u rootMySQL来连接服务器,以便发出GRANTREVOKE命令。

如果你想要在几个机器上用相同的权限安装MySQL,可以将GRANTREVOKE语句放入一个文件中,以脚本方式执行文件,运行mysql_install_db之后使用mysql。例如:

shell> bin/ mysql_install_db --user=mysql
shell> bin/mysql -u root < your_script_file
 

这样,你就可以避免在每台机器上手动发出命令。

·         完全可以重新创建授权表。如果你刚刚知道如何使用GRANTREVOKE并且运行mysql_install_db 之后进行了许多修改,想要关闭表重新启动,你可能想要这样操作。

要想重新创建授权表,从含有MySQL数据库的目录中移走所有 .frm.MYI.MYD文件。(这是数据目录下面的mysql目录,当你运行mysqld --help 时,列为datadir)。然后再次运行mysql_install_db 脚本。

·         可以使用--skip-grant-tables选项手动启动mysqld,并使用mysql自己增加权限信息:

·                      shell> bin/mysqld_safe --user=mysql --skip-grant-tables &
·                      shell> bin/mysql mysql

手动从mysql执行mysql_install_db中的SQL命令。确保后面钥运行mysqladmin flush-privilegesmysqladmin reload,让服务器重载授权表。

请注意不使用mysql_install_db,不仅需要手动安装授权表,还需要先创建。

4.    启动MySQL服务器:

5.                     shell> bin/mysqld_safe --user=mysql &

一定要让MySQL服务器使用非权限(non-root) 登录账户运行。为此,如果你以系统root运行mysql_safe,应当使用--user选项。否则,你应当用mysql登录到系统来执行脚本,这样可以省略命令中的--user选项。

A.3.2节,“如何以普通用户身份运行MySQL”中给出了非特权用户运行MySQL的说明。

如果在执行该步前你忘记了创建授权表,当你启动服务器时,在错误日志文件中将出现下面的消息:

mysqld: Can't find file: 'host.frm'

如果启动服务器时遇到其它问题,查阅2.9.2.3节,“启动MySQL服务器以及其故障诊断和排除”

6.    使用mysqladmin验证服务器在运行中。以下命令提供了简单的测试,可检查服务器是否已经启动并能响应连接:

7.            shell> bin/mysqladmin version
8.            shell> bin/mysqladmin variables

 mysqladmin version的输出根据平台和MySQL版本的不同而稍有变化,但是应当类似于:

shell> bin/mysqladmin version
mysqladmin  Ver 8.41 Distrib 5.1.2-alpha, for pc-linux-gnu on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
 
Server version          5.1.2-alpha-Max
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 14 days 5 hours 5 min 21 sec
 
Threads: 1  Questions: 366  Slow queries: 0  
Opens: 0  Flush tables: 1  Open tables: 19  
Queries per second avg: 0.000
 

要想看还可以怎样使用mysqladmin,用-- help选项调用它。

9.    验证可以关闭服务器:

10.        shell> bin/mysqladmin -u root shutdown

11.验证是否可以重启服务器。可以直接使用mysqld_safe或调用mysqld。例如:

12.        shell> bin/mysqld_safe --user=mysql --log &

如果mysqld_safe失败,参见2.9.2.3节,“启动MySQL服务器以及其故障诊断和排除”

13.进行一些简单的测试,验证你可以从服务器查询信息。输出应当类似于:

14.        shell> bin/mysqlshow
15.        +-----------+
16.        | Databases |
17.        +-----------+
18.        | mysql     |
19.        | test      |
20.        +-----------+
21.         
22.        shell> bin/mysqlshow mysql
23.        Database: mysql
24.        +---------------------------+
25.        |          Tables           |
26.        +---------------------------+
27.        | columns_priv              |
28.        | db                        |
29.        | func                      |
30.        | help_category             |
31.        | help_keyword              |
32.        | help_relation             |
33.        | help_topic                |
34.        | host                      |
35.        | proc                      |
36.        | procs_priv                |
37.        | tables_priv               |
38.        | time_zone                 |
39.        | time_zone_leap_second     |
40.        | time_zone_name            |
41.        | time_zone_transition      |
42.        | time_zone_transition_type |
43.        | user                      |
44.        +---------------------------+
45.         
46.        shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
47.        +------+--------+------+
48.        | host | db     | user |
49.        +------+--------+------+
50.        | %    | test   |      |
51.        | %    | test_% |      |
52.        +------+--------+------+

53.sql-bench目录(MySQL安装目录下)中有一个基准套件,可以用来比较MySQL在不同平台上的执行情况。基准套件在Perl中编写。它使用Perl DBI模块来为各种数据库提供一个与数据库无关的接口,并且还需要其它Perl模块来运行基准套件。必须安装以下模块:

54.        DBI
55.        DBD::mysql
56.        Data::Dumper
57.        Data::ShowTable

可以从CPAN()获得这些模块。请参见2.13.1节,“在Unix中安装Perl”

 sql-bench/Results目录包含了在不同数据库和平台上的各种运行结果。要想进行测试,执行命令:

shell> cd sql-bench
shell> perl run-all-tests

如果没有sql-bench目录,你可能使用RPM文件安装了MySQL,没有使用源码RPM(源码RPM包括sql-bench benchmark目录)此时,必须先安装基准套件后才能使用。有一个单独的mysql-bench-VERSION-i386.rpm基准RPM文件,其中包含了基准代码和数据。

如果你有源码分发版,其tests子目录中也有一些测试可供运行。例如,要运行auto_increment.tst,从源码分发版的顶级目录执行该命令:

shell> mysql -vvf test < ./tests/auto_increment.tst

期望的结果被显示在 ./tests/auto_increment.res文件中。

58.至此,你应当可以运行服务器了。然而,初始MySQL账户均没有密码,因此应当使用2.9.3节,“使初始MySQL账户安全”中的说明来指定密码。

MySQL 5.1安装过程在MySQL数据库中创建时区表。但是,必须手动装载表。相关说明参见5.10.8节,“MySQL服务器时区支持”

阅读(958) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~