manual.txt
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1762k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1.      *Note NetBSD::.
  2.    * OpenBSD > 2.5 with native therads. OpenBSD < 2.5 with the included
  3.      MIT-pthreads package. *Note OpenBSD::.
  4.    * OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. *Note OS/2::.
  5.    * SGI Irix 6.x with native threads. *Note SGI-Irix::.
  6.    * Solaris 2.5 and above with native threads on SPARC and x86. *Note
  7.      Solaris::.
  8.    * SunOS 4.x with the included MIT-pthreads package. *Note Solaris::.
  9.    * SCO OpenServer with a recent port of the FSU Pthreads package.
  10.      *Note SCO::.
  11.    * SCO UnixWare 7.0.1. *Note SCO Unixware::.
  12.    * Tru64 Unix
  13.    * Win95, Win98, NT, and Win2000. *Note Windows::.
  14. Which MySQL Version to Use
  15. ==========================
  16. The first decision to make is whether you want to use the latest
  17. development release or the last stable release:
  18.    * Normally, if you are beginning to use *MySQL* for the first time
  19.      or trying to port it to some system for which there is no binary
  20.      distribution, we recommend going with the development release
  21.      (currently Version 3.23.35. This is because there are usually no
  22.      really serious bugs in the development release, and you can easily
  23.      test it on your machine with the `crash-me' and benchmark tests.
  24.      *Note Benchmarks::.  Note that all *MySQL* releases are checked
  25.      with the *MySQL* benchmarks and an extensive test suite before
  26.      each release.
  27.    * Otherwise, if you are running an old system and want to upgrade,
  28.      but don't want to take chances with the development version, you
  29.      should upgrade to the latest in the same branch you are using
  30.      (where only the last version number is newer than yours).  We have
  31.      tried to fix only fatal bugs and make small, relatively safe
  32.      changes to that version.
  33. The second decision to make is whether you want to use a source
  34. distribution or a binary distribution.  In most cases you should
  35. probably use a binary distribution, if there exist one for your
  36. platform, as this is generally, it will be easier to install than a
  37. source distribution.
  38. In the following cases you will probably be better of with a source
  39. installation:
  40.    * If you want to install *MySQL* at some explicit location. (The
  41.      standard binary distributions are 'ready to run' at any place, but
  42.      you may want to get even more flexibility).
  43.    * If you want to configure `mysqld' with some extra feature that is
  44.      NOT in the standard binary distributions. Here is a list of the
  45.      most common extra options that you may want to use
  46.         * -with-berkeley-db
  47.         * -with-raid
  48.         * -with-libwrap
  49.         * -with-named-z-lib  (This is done for some of the binaries)
  50.         * -with-debugging[=full]
  51.    * The default binary distribution is normally compiled with support
  52.      for all characters sets and should work on a variety of processors
  53.      from the same processor family.
  54.      If you want a faster *MySQL* server you may want to recompile it
  55.      with support for only the character sets you need, use a better
  56.      compiler (like pgcc) or use compiler options that are better
  57.      optimized for your processor.
  58.    * If you have found a bug and reported it to the *MySQL* development
  59.      team you will probably got a patch that you need to apply to the
  60.      source distribution to get the bug fixed.
  61.    * If you want to read (and/or modify) the C and C++ code that makes
  62.      up *MySQL*, you should get a source distribution. The source code
  63.      is always the ultimate manual. Source distributions also contain
  64.      more tests and examples than binary distributions.
  65. The *MySQL* naming scheme uses release numbers that consist of three
  66. numbers and a suffix.  For example, a release name like
  67. `mysql-3.21.17-beta' is interpreted like this:
  68.    * The first number (`3') describes the file format.  All Version 3
  69.      releases have the same file format. When a Version 4 appears, every
  70.      table will have to be converted to the new format (nice tools for
  71.      this will be included, of course.)
  72.    * The second number (`21') is the release level. Normally there are
  73.      two to choose from. One is the release/stable branch (currently
  74.      `22') and the other is the development branch (currently `23') .
  75.      Normally both are stable, but the development version may have
  76.      quirks, missing documentation on new features, or may fail to
  77.      compile on some systems.
  78.    * The third number (`17') is the version number within the release
  79.      level. This is incremented for each new distribution. Usually you
  80.      want the latest version for the release level you have choosen.
  81.    * The suffix (`beta') indicates the stability level of the release.
  82.      The possible suffixes are:
  83.         - `alpha' indicates that the release contains some large
  84.           section of new code that hasn't been 100% tested.  Known bugs
  85.           (usually there are none) should be documented in the News
  86.           section.  *Note News::.  There are also new commands and
  87.           extensions in most alpha releases.  Active development that
  88.           may involve major code changes can occur on an alpha release,
  89.           but everything will be tested before doing a release.  There
  90.           should be no known bugs in any *MySQL* release.
  91.         - `beta' means that all new code has been tested. No major new
  92.           features that could cause corruption on old code are added.
  93.           There should be no known bugs.  A version changes from alpha
  94.           to beta when there haven't been any reported fatal bugs
  95.           within an alpha version for at least a month and we don't
  96.           plan to add any features that could make any old command more
  97.           unreliable.
  98.         - `gamma' is a beta that has been around a while and seems to
  99.           work fine.  Only minor fixes are added. This is what many
  100.           other companies call a release.
  101.         - If there is no suffix, it means that the version has been run
  102.           for a while at many different sites with no reports of bugs
  103.           other than platform-specific bugs.  Only critical bug fixes
  104.           are applied to the release. This is what we call a stable
  105.           release.
  106. All versions of *MySQL* are run through our standard tests and
  107. benchmarks to ensure that they are relatively safe to use.  Because the
  108. standard tests are extended over time to check for all previously found
  109. bugs, the test suite keeps getting better.
  110. Note that all releases have been tested at least with:
  111. An internal test suite
  112.      This is part of a production system for a customer. It has many
  113.      tables with hundreds of megabytes of data.
  114. The *MySQL* benchmark suite
  115.      This runs a range of common queries. It is also a test to see
  116.      whether the latest batch of optimizations actually made the code
  117.      faster.  *Note Benchmarks::.
  118. The `crash-me' test
  119.      This tries to determine what features the database supports and
  120.      what its capabilities and limitations are.  *Note Benchmarks::.
  121. Another test is that we use the newest *MySQL* version in our internal
  122. production environment, on at least one machine.  We have more than 100
  123. gigabytes of data to work with.
  124. How and When Updates Are Released
  125. =================================
  126. *MySQL* is evolving quite rapidly here at MySQL AB and we want to share
  127. this with other *MySQL* users. We try to make a release when we have
  128. very useful features that others seem to have a need for.
  129. We also try to help out users who request features that are easy to
  130. implement. We take note of what our licensed users want to have, and we
  131. especially take note of what our extended e-mail supported customers
  132. want and try to help them out.
  133. No one has to download a new release. The News section will tell you if
  134. the new release has something you really want. *Note News::.
  135. We use the following policy when updating *MySQL*:
  136.    * For each minor update, the last number in the version string is
  137.      incremented.  When there are major new features or minor
  138.      incompatibilities with previous versions, the second number in the
  139.      version string is incremented. When the file format changes, the
  140.      first number is increased.
  141.    * Stable tested releases are meant to appear about 1-2 times a year,
  142.      but if small bugs are found, a release with only bug fixes will be
  143.      released.
  144.    * Working releases are meant to appear about every 1-8 weeks.
  145.    * Binary distributions for some platforms will be made by us for
  146.      major releases.  Other people may make binary distributions for
  147.      other systems but probably less frequently.
  148.    * We usually make patches available as soon as we have located and
  149.      fixed small bugs.
  150.    * For non-critical but annoying bugs, we will make patches available
  151.      if they are sent to us. Otherwise we will combine many of them
  152.      into a larger patch.
  153.    * If there is, by any chance, a fatal bug in a release we will make
  154.      a new release as soon as possible. We would like other companies
  155.      to do this, too.
  156. The current stable release is Version 3.23; We have already moved active
  157. development to Version 4.0. Bugs will still be fixed in the stable
  158. version.  We don't believe in a complete freeze, as this also leaves
  159. out bug fixes and things that "must be done." "Somewhat frozen" means
  160. that we may add small things that "almost surely will not affect
  161. anything that's already working."
  162. Installation Layouts
  163. ====================
  164. This section describes the default layout of the directories created by
  165. installing binary and source distributions.
  166. A binary distribution is installed by unpacking it at the installation
  167. location you choose (typically `/usr/local/mysql') and creates the
  168. following directories in that location:
  169. *Directory*            *Contents of directory*
  170. `bin'                  Client programs and the `mysqld' server
  171. `data'                 Log files, databases
  172. `include'              Include (header) files
  173. `lib'                  Libraries
  174. `scripts'              `mysql_install_db'
  175. `share/mysql'          Error message files
  176. `sql-bench'            Benchmarks
  177. A source distribution is installed after you configure and compile it.
  178. By default, the installation step installs files under `/usr/local', in
  179. the following subdirectories:
  180. *Directory*            *Contents of directory*
  181. `bin'                  Client programs and scripts
  182. `include/mysql'        Include (header) files
  183. `info'                 Documentation in Info format
  184. `lib/mysql'            Libraries
  185. `libexec'              The `mysqld' server
  186. `share/mysql'          Error message files
  187. `sql-bench'            Benchmarks and `crash-me' test
  188. `var'                  Databases and log files
  189. Within an installation directory, the layout of a source installation
  190. differs from that of a binary installation in the following ways:
  191.    * The `mysqld' server is installed in the `libexec' directory rather
  192.      than in the `bin' directory.
  193.    * The data directory is `var' rather than `data'.
  194.    * `mysql_install_db' is installed in the `/usr/local/bin' directory
  195.      rather than in `/usr/local/mysql/scripts'.
  196.    * The header file and library directories are `include/mysql' and
  197.      `lib/mysql' rather than `include' and `lib'.
  198. You can create your own binary installation from a compiled source
  199. distribution by executing the script `scripts/make_binary_distribution'.
  200. Installing a MySQL Binary Distribution
  201. ======================================
  202. You need the following tools to install a *MySQL* binary distribution:
  203.    * GNU `gunzip' to uncompress the distribution.
  204.    * A reasonable `tar' to unpack the distribution. GNU `tar' is known
  205.      to work. Sun `tar' is known to have problems.
  206. An alternative installation method under Linux is to use RPM (RedHat
  207. Package Manager) distributions. *Note Linux-RPM::.
  208. If you run into problems, *PLEASE ALWAYS USE* `mysqlbug' when posting
  209. questions to <mysql@lists.mysql.com>.  Even if the problem isn't a bug,
  210. `mysqlbug' gathers system information that will help others solve your
  211. problem.  By not using `mysqlbug', you lessen the likelihood of getting
  212. a solution to your problem!  You will find `mysqlbug' in the `bin'
  213. directory after you unpack the distribution.  *Note Bug reports::.
  214. The basic commands you must execute to install and use a *MySQL* binary
  215. distribution are:
  216.      shell> groupadd mysql
  217.      shell> useradd -g mysql mysql
  218.      shell> cd /usr/local
  219.      shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
  220.      shell> ln -s mysql-VERSION-OS mysql
  221.      shell> cd mysql
  222.      shell> scripts/mysql_install_db
  223.      shell> chown -R root  /usr/local/mysql
  224.      shell> chown -R mysql /usr/local/mysql/var
  225.      shell> chgrp -R mysql /usr/local/mysql
  226.      shell> chown -R root /usr/local/mysql/bin/
  227.      shell> bin/safe_mysqld --user=mysql &
  228. You can add new users using the `bin/mysql_setpermission' script if you
  229. install the `DBI' and `Msql-Mysql-modules' Perl modules.
  230. A more detailed description follows.
  231. To install a binary distribution, follow the steps below, then proceed
  232. to *Note Post-installation::, for post-installation setup and testing:
  233.   1. Pick the directory under which you want to unpack the
  234.      distribution, and move into it.  In the example below, we unpack
  235.      the distribution under `/usr/local' and create a directory
  236.      `/usr/local/mysql' into which *MySQL* is installed.  (The
  237.      following instructions therefore assume you have permission to
  238.      create files in `/usr/local'.  If that directory is protected, you
  239.      will need to perform the installation as `root'.)
  240.   2. Obtain a distribution file from one of the sites listed in *Note
  241.      Getting *MySQL*: Getting MySQL.
  242.      *MySQL* binary distributions are provided as compressed `tar'
  243.      archives and have names like `mysql-VERSION-OS.tar.gz', where
  244.      `VERSION' is a number (for example, `3.21.15'), and `OS' indicates
  245.      the type of operating system for which the distribution is intended
  246.      (for example, `pc-linux-gnu-i586').
  247.   3. Add a user and group for `mysqld' to run as:
  248.           shell> groupadd mysql
  249.           shell> useradd -g mysql mysql
  250.      These commands add the `mysql' group and the `mysql' user.  The
  251.      syntax for `useradd' and `groupadd' may differ slightly on
  252.      different Unixes.  They may also be called `adduser' and
  253.      `addgroup'.  You may wish to call the user and group something
  254.      else instead of `mysql'.
  255.   4. Change into the intended installation directory:
  256.           shell> cd /usr/local
  257.   5. Unpack the distribution and create the installation directory:
  258.           shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
  259.           shell> ln -s mysql-VERSION-OS mysql
  260.      The first command creates a directory named `mysql-VERSION-OS'.
  261.      The second command makes a symbolic link to that directory.  This
  262.      lets you refer more easily to the installation directory as
  263.      `/usr/local/mysql'.
  264.   6. Change into the installation directory:
  265.           shell> cd mysql
  266.      You will find several files and subdirectories in the `mysql'
  267.      directory.  The most important for installation purposes are the
  268.      `bin' and `scripts' subdirectories.
  269.     `bin'
  270.           This directory contains client programs and the server You
  271.           should add the full pathname of this directory to your `PATH'
  272.           environment variable so that your shell finds the *MySQL*
  273.           programs properly. *Note Environment variables::.
  274.     `scripts'
  275.           This directory contains the `mysql_install_db' script used to
  276.           initialize the server access permissions.
  277.   7. If you would like to use `mysqlaccess' and have the *MySQL*
  278.      distribution in some nonstandard place, you must change the
  279.      location where `mysqlaccess' expects to find the `mysql' client.
  280.      Edit the `bin/mysqlaccess' script at approximately line 18. Search
  281.      for a line that looks like this:
  282.           $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
  283.      Change the path to reflect the location where `mysql' actually is
  284.      stored on your system.  If you do not do this, you will get a
  285.      `Broken pipe' error when you run `mysqlaccess'.
  286.   8. Create the *MySQL* grant tables (necessary only if you haven't
  287.      installed *MySQL* before):
  288.           shell> scripts/mysql_install_db
  289.      Note that *MySQL* versions older than Version 3.22.10 started the
  290.      *MySQL* server when you run `mysql_install_db'.  This is no longer
  291.      true!
  292.   9. Change ownership of binaries to `root' and ownership of the data
  293.      directory to the user that you will run `mysqld' as:
  294.           shell> chown -R root  /usr/local/mysql
  295.           shell> chown -R mysql /usr/local/mysql/var
  296.           shell> chgrp -R mysql /usr/local/mysql
  297.      The first command changes the `owner' attribute of the files to the
  298.      `root' user, the second one changes the `owner' attribute of the
  299.      data directory to the `mysql' user, and the third one changes the
  300.      `group' attribute to the `mysql' group.
  301.  10. If you want to install support for the Perl `DBI'/`DBD' interface,
  302.      see *Note Perl support::.
  303.  11. If you would like *MySQL* to start automatically when you boot your
  304.      machine, you can copy `support-files/mysql.server' to the location
  305.      where your system has its startup files. More information can be
  306.      found in the `support-files/mysql.server' script itself and in
  307.      *Note Automatic start::.
  308. After everything has been unpacked and installed, you should initialize
  309. and test your distribution.
  310. You can start the *MySQL* server with the following command:
  311.      shell> bin/safe_mysqld --user=mysql &
  312. *Note safe_mysqld::.
  313. *Note Post-installation::.
  314. Linux RPM Notes
  315. ---------------
  316. The recommended way to install *MySQL* on Linux is by using an RPM
  317. file. The *MySQL* RPMs are currently being built on a RedHat Version
  318. 6.2 system but should work on other versions of Linux that support `rpm'
  319. and use `glibc'.
  320. If you have problems with an RPM file, for example, if you receive the
  321. error "`Sorry, the host 'xxxx' could not be looked up'", see *Note
  322. Binary notes-Linux::.
  323. The RPM files you may want to use are:
  324.    * `MySQL-VERSION.i386.rpm'
  325.      The *MySQL* server.  You will need this unless you only want to
  326.      connect to a *MySQL* server running on another machine.
  327.    * `MySQL-client-VERSION.i386.rpm'
  328.      The standard *MySQL* client programs. You probably always want to
  329.      install this package.
  330.    * `MySQL-bench-VERSION.i386.rpm'
  331.      Tests and benchmarks. Requires Perl and msql-mysql-modules RPMs.
  332.    * `MySQL-devel-VERSION.i386.rpm'
  333.      Libraries and include files needed if you want to compile other
  334.      *MySQL* clients, such as the Perl modules.
  335.    * `MySQL-VERSION.src.rpm'
  336.      This contains the source code for all of the above packages. It
  337.      can also be used to try to build RPMs for other architectures (for
  338.      example, Alpha or SPARC).
  339. To see all files in an RPM package, run:
  340.      shell> rpm -qpl MySQL-VERSION.i386.rpm
  341. To perform a standard minimal installation, run:
  342.      shell> rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm
  343. To install just the client package, run:
  344.      shell> rpm -i MySQL-client-VERSION.i386.rpm
  345. The RPM places data in `/var/lib/mysql'. The RPM also creates the
  346. appropriate entries in `/etc/rc.d/' to start the server automatically
  347. at boot time.  (This means that if you have performed a previous
  348. installation, you may want to make a copy of your previously installed
  349. *MySQL* startup file if you made any changes to it, so you don't lose
  350. your changes.)
  351. After installing the RPM file(s), the `mysqld' daemon should be running
  352. and you should now be able to start using *MySQL*.  *Note
  353. Post-installation::.
  354. If something goes wrong, you can find more information in the binary
  355. installation chapter. *Note Installing binary::.
  356. Building Client Programs
  357. ------------------------
  358. If you compile *MySQL* clients that you've written yourself or that you
  359. obtain from a third party, they must be linked using the
  360. `-lmysqlclient' option on the link command.  You may also need to
  361. specify a `-L' option to tell the linker where to find the library.  For
  362. example, if the library is installed in `/usr/local/mysql/lib', use
  363. `-L/usr/local/mysql/lib -lmysqlclient' on the link command.
  364. For clients that use *MySQL* header files, you may need to specify a
  365. `-I' option when you compile them (for example,
  366. `-I/usr/local/mysql/include'), so the compiler can find the header
  367. files.
  368. System-specific Issues
  369. ----------------------
  370. The following sections indicate some of the issues that have been
  371. observed on particular systems when installing *MySQL* from a binary
  372. distribution.
  373. Linux Notes for Binary Distributions
  374. ....................................
  375. *MySQL* needs at least Linux Version 2.0.
  376. The binary release is linked with `-static', which means you do not
  377. normally need to worry about which version of the system libraries you
  378. have. You need not install LinuxThreads, either.  A program linked with
  379. `-static' is slightly bigger than a dynamically linked program but also
  380. slightly faster (3-5%).  One problem, however, is that you can't use
  381. user-definable functions (UDFs) with a statically linked program.  If
  382. you are going to write or use UDF functions (this is something only for
  383. C or C++ programmers), you must compile *MySQL* yourself, using dynamic
  384. linking.
  385. If you are using a `libc'-based system (instead of a `glibc2' system),
  386. you will probably get some problems with hostname resolving and
  387. getpwnam() with the binary release. (This is because `glibc'
  388. unfortunately depends on some external libraries to resolve hostnames
  389. and getpwent() , even when compiled with `-static'). In this case you
  390. probably get the following error message when you run
  391. `mysql_install_db':
  392.      Sorry, the host 'xxxx' could not be looked up
  393. or the following error when you try to run mysqld with the `--user'
  394. option:
  395.      getpwnam: No such file or directory
  396. You can solve this problem in one of the following ways:
  397.    * Get a *MySQL* source distribution (an RPM or the `tar.gz'
  398.      distribution) and install this instead.
  399.    * Execute `mysql_install_db --force'; This will not execute the
  400.      `resolveip' test in `mysql_install_db'.  The downside is that you
  401.      can't use host names in the grant tables; you must use IP numbers
  402.      instead (except for `localhost').  If you are using an old *MySQL*
  403.      release that doesn't support `--force', you have to remove the
  404.      `resolveip' test in `mysql_install' with an editor.
  405.    * Start mysqld with `su' instead of using `--user'.
  406. The Linux-Intel binary and RPM releases of *MySQL* are configured for
  407. the highest possible speed. We are always trying to use the fastest
  408. stable compiler available.
  409. *MySQL* Perl support requires Version Perl 5.004_03 or newer.
  410. On some Linux 2.2 versions, you may get the error `Resource temporarily
  411. unavailable' when you do a lot of new connections to a `mysqld' server
  412. over TCP/IP.
  413. The problem is that Linux has a delay between when you close a TCP/IP
  414. socket and until this is actually freed by the system.  As there is only
  415. room for a finite number of TCP/IP slots, you will get the above error
  416. if you try to do too many new TCP/IP connections during a small time,
  417. like when you run the *MySQL* `test-connect' benchmark over TCP/IP.
  418. We have mailed about this problem a couple of times to different Linux
  419. mailing lists but have never been able to resolve this properly.
  420. The only known 'fix' to this problem is to use persistent connections in
  421. your clients or use sockets, if you are running the database server and
  422. clients on the same machine.  We hope that the `Linux 2.4' kernel will
  423. fix this problem in the future.
  424. HP-UX Notes for Binary Distributions
  425. ....................................
  426. Some of the binary distributions of *MySQL* for HP-UX is distributed as
  427. an HP depot file and as a tar file.  To use the depot file you must be
  428. running at least HP-UX 10.x to have access to HP's software depot tools.
  429. The HP version of *MySQL* was compiled on an HP 9000/8xx server under
  430. HP-UX 10.20, and uses MIT-pthreads. It is known to work well under this
  431. configuration.  *MySQL* Version 3.22.26 and newer can also be built
  432. with HP's native thread package.
  433. Other configurations that may work:
  434.    * HP 9000/7xx running HP-UX 10.20+
  435.    * HP 9000/8xx running HP-UX 10.30
  436. The following configurations almost definitely won't work:
  437.    * HP 9000/7xx or 8xx running HP-UX 10.x where x < 2
  438.    * HP 9000/7xx or 8xx running HP-UX 9.x
  439. To install the distribution, use one of the commands below, where
  440. `/path/to/depot' is the full pathname of the depot file:
  441.    * To install everything, including the server, client and
  442.      development tools:
  443.           shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
  444.    * To install only the server:
  445.           shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
  446.    * To install only the client package:
  447.           shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
  448.    * To install only the development tools:
  449.           shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
  450. The depot places binaries and libraries in `/opt/mysql' and data in
  451. `/var/opt/mysql'. The depot also creates the appropriate entries in
  452. `/etc/init.d' and `/etc/rc2.d' to start the server automatically at
  453. boot time. Obviously, this entails being `root' to install.
  454. To install the HP-UX tar.gz distribution, you must have a copy of GNU
  455. `tar'.
  456. Installing a MySQL Source Distribution
  457. ======================================
  458. You need the following tools to build and install *MySQL* from source:
  459.    * GNU `gunzip' to uncompress the distribution.
  460.    * A reasonable `tar' to unpack the distribution. GNU `tar' is known
  461.      to work.  Sun `tar' is known to have problems.
  462.    * A working ANSI C++ compiler. `gcc' >= 2.8.1, `egcs' >= 1.0.2, SGI
  463.      C++, and SunPro C++ are some of the compilers that are known to
  464.      work.  `libg++' is not needed when using `gcc'.  `gcc' 2.7.x has a
  465.      bug that makes it impossible to compile some perfectly legal C++
  466.      files, such as `sql/sql_base.cc'. If you only have `gcc' 2.7.x,
  467.      you must upgrade your `gcc' to be able to compile *MySQL*.
  468.      `gcc' >= 2.95.2 is recommended when compiling *MySQL* Version
  469.      3.23.x.
  470.    * A good `make' program.  GNU `make' is always recommended and is
  471.      sometimes required.  If you have problems, we recommend trying GNU
  472.      `make' 3.75 or newer.
  473. If you run into problems, *PLEASE ALWAYS USE `mysqlbug'* when posting
  474. questions to <mysql@lists.mysql.com>.  Even if the problem isn't a bug,
  475. `mysqlbug' gathers system information that will help others solve your
  476. problem.  By not using `mysqlbug', you lessen the likelihood of getting
  477. a solution to your problem!  You will find `mysqlbug' in the `scripts'
  478. directory after you unpack the distribution.  *Note Bug reports::.
  479. Quick Installation Overview
  480. ---------------------------
  481. The basic commands you must execute to install a *MySQL* source
  482. distribution are:
  483.      shell> groupadd mysql
  484.      shell> useradd -g mysql mysql
  485.      shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
  486.      shell> cd mysql-VERSION
  487.      shell> ./configure --prefix=/usr/local/mysql
  488.      shell> make
  489.      shell> make install
  490.      shell> scripts/mysql_install_db
  491.      shell> chown -R root  /usr/local/mysql
  492.      shell> chown -R mysql /usr/local/mysql/var
  493.      shell> chgrp -R mysql /usr/local/mysql
  494.      shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
  495. If you start from a source RPM, then do the following:
  496.      shell> rpm --rebuild MySQL-VERSION.src.rpm
  497. This will make a binary RPM that you can install.
  498. You can add new users using the `bin/mysql_setpermission' script if you
  499. install the `DBI' and `Msql-Mysql-modules' Perl modules.
  500. A more detailed description follows.
  501. To install a source distribution, follow the steps below, then proceed
  502. to *Note Post-installation::, for post-installation initialization and
  503. testing:
  504.   1. Pick the directory under which you want to unpack the
  505.      distribution, and move into it.
  506.   2. Obtain a distribution file from one of the sites listed in *Note
  507.      Getting *MySQL*: Getting MySQL.
  508.   3. If you are interested in using Berkeley DB tables with MySQL, you
  509.      will need to obtain a patched version of the Berkeley DB source
  510.      code.  Please read the chapter on Berkeley DB tables before
  511.      proceeding. *Note BDB::.
  512.      *MySQL* source distributions are provided as compressed `tar'
  513.      archives and have names like `mysql-VERSION.tar.gz', where
  514.      `VERSION' is a number like 3.23.35.
  515.   4. Add a user and group for `mysqld' to run as:
  516.           shell> groupadd mysql
  517.           shell> useradd -g mysql mysql
  518.      These commands add the `mysql' group, and the `mysql' user.  The
  519.      syntax for `useradd' and `groupadd' may differ slightly on
  520.      different Unixes.  They may also be called `adduser' and
  521.      `addgroup'.  You may wish to call the user and group something
  522.      else instead of `mysql'.
  523.   5. Unpack the distribution into the current directory:
  524.           shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
  525.      This command creates a directory named `mysql-VERSION'.
  526.   6. Change into the top-level directory of the unpacked distribution:
  527.           shell> cd mysql-VERSION
  528.      Note that currently you must configure and build *MySQL* from this
  529.      top-level directory.  You can not build it in a different
  530.      directory.
  531.   7. Configure the release and compile everything:
  532.           shell> ./configure --prefix=/usr/local/mysql
  533.           shell> make
  534.      When you run `configure', you might want to specify some options.
  535.      Run `./configure --help' for a list of options.  *Note `configure'
  536.      options: configure options, discusses some of the more useful
  537.      options.
  538.      If `configure' fails, and you are going to send mail to
  539.      <mysql@lists.mysql.com> to ask for assistance, please include any
  540.      lines from `config.log' that you think can help solve the problem.
  541.      Also include the last couple of lines of output from `configure'
  542.      if `configure' aborts. Post the bug report using the `mysqlbug'
  543.      script.  *Note Bug reports::.
  544.      If the compile fails, see *Note Compilation problems::, for help
  545.      with a number of common problems.
  546.   8. Install everything:
  547.           shell> make install
  548.      You might need to run this command as `root'.
  549.   9. Create the *MySQL* grant tables (necessary only if you haven't
  550.      installed *MySQL* before):
  551.           shell> scripts/mysql_install_db
  552.      Note that *MySQL* versions older than Version 3.22.10 started the
  553.      *MySQL* server when you run `mysql_install_db'.  This is no longer
  554.      true!
  555.  10. Change ownership of binaries to `root' and ownership of the data
  556.      directory to the user that you will run `mysqld' as:
  557.           shell> chown -R root  /usr/local/mysql
  558.           shell> chown -R mysql /usr/local/mysql/var
  559.           shell> chgrp -R mysql /usr/local/mysql
  560.      The first command changes the `owner' attribute of the files to the
  561.      `root' user, the second one changes the `owner' attribute of the
  562.      data directory to the `mysql' user, and the third one changes the
  563.      `group' attribute to the `mysql' group.
  564.  11. If you want to install support for the Perl `DBI'/`DBD' interface,
  565.      see *Note Perl support::.
  566.  12. If you would like *MySQL* to start automatically when you boot your
  567.      machine, you can copy `support-files/mysql.server' to the location
  568.      where your system has its startup files. More information can be
  569.      found in the `support-files/mysql.server' script itself and in
  570.      *Note Automatic start::.
  571. After everything has been installed, you should initialize and test your
  572. distribution:
  573.      shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
  574. If that command fails immediately with `mysqld daemon ended' then you
  575. can find some information in the file
  576. `mysql-data-directory/'hostname'.err'.  The likely reason is that you
  577. already have another `mysqld' server running.  *Note Multiple servers::.
  578. *Note Post-installation::.
  579. Applying Patches
  580. ----------------
  581. Sometimes patches appear on the mailing list or are placed in the
  582. patches area (http://www.mysql.com/Downloads/Patches) of the *MySQL*
  583. Web site.
  584. To apply a patch from the mailing list, save the message in which the
  585. patch appears in a file, change into the top-level directory of your
  586. *MySQL* source tree, and run these commands:
  587.      shell> patch -p1 < patch-file-name
  588.      shell> rm config.cache
  589.      shell> make clean
  590. Patches from the FTP site are distributed as plain text files or as
  591. files compressed with `gzip'.  Apply a plain patch as shown above for
  592. mailing list patches.  To apply a compressed patch, change into the
  593. top-level directory of your *MySQL* source tree and run these commands:
  594.      shell> gunzip < patch-file-name.gz | patch -p1
  595.      shell> rm config.cache
  596.      shell> make clean
  597. After applying a patch, follow the instructions for a normal source
  598. install, beginning with the `./configure' step.  After running the `make
  599. install' step, restart your *MySQL* server.
  600. You may need to bring down any currently running server before you run
  601. `make install'.  (Use `mysqladmin shutdown' to do this.)  Some systems
  602. do not allow you to install a new version of a program if it replaces
  603. the version that is currently executing.
  604. Typical `configure' Options
  605. ---------------------------
  606. The `configure' script gives you a great deal of control over how you
  607. configure your *MySQL* distribution.  Typically you do this using
  608. options on the `configure' command line.  You can also affect
  609. `configure' using certain environment variables.  *Note Environment
  610. variables::. For a list of options supported by `configure', run this
  611. command:
  612.      shell> ./configure --help
  613. Some of the more commonly-used `configure' options are described below:
  614.    * To compile just the *MySQL* client libraries and client programs
  615.      and not the server, use the `--without-server' option:
  616.           shell> ./configure --without-server
  617.      If you don't have a C++ compiler, `mysql' will not compile (it is
  618.      the one client program that requires C++).  In this case, you can
  619.      remove the code in `configure' that tests for the C++ compiler and
  620.      then run `./configure' with the `--without-server' option. The
  621.      compile step will still try to build `mysql', but you can ignore
  622.      any warnings about `mysql.cc'.  (If `make' stops, try `make -k' to
  623.      tell it to continue with the rest of the build even if errors
  624.      occur.)
  625.    * If you don't want your log files and database directories located
  626.      under `/usr/local/var', use a `configure' command, something like
  627.      one of these:
  628.           shell> ./configure --prefix=/usr/local/mysql
  629.           shell> ./configure --prefix=/usr/local 
  630.                      --localstatedir=/usr/local/mysql/data
  631.      The first command changes the installation prefix so that
  632.      everything is installed under `/usr/local/mysql' rather than the
  633.      default of `/usr/local'.  The second command preserves the default
  634.      installation prefix, but overrides the default location for
  635.      database directories (normally `/usr/local/var') and changes it to
  636.      `/usr/local/mysql/data'.
  637.    * If you are using Unix and you want the *MySQL* socket located
  638.      somewhere other than the default location (normally in the
  639.      directory `/tmp' or `/var/run') use a `configure' command like
  640.      this:
  641.           shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
  642.      Note that the given file must be an absolute pathname!
  643.    * If you want to compile statically linked programs (for example, to
  644.      make a binary distribution, to get more speed, or to work around
  645.      problems with some RedHat distributions), run `configure' like
  646.      this:
  647.           shell> ./configure --with-client-ldflags=-all-static 
  648.                      --with-mysqld-ldflags=-all-static
  649.    * If you are using `gcc' and don't have `libg++' or `libstdc++'
  650.      installed, you can tell `configure' to use `gcc' as your C++
  651.      compiler:
  652.           shell> CC=gcc CXX=gcc ./configure
  653.      When you use `gcc' as your C++ compiler, it will not attempt to
  654.      link in `libg++' or `libstdc++'.
  655.      Here is some common environment variables to set depending on the
  656.      compiler you are using:
  657.      gcc 2.7.2.1    CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors"
  658.      egcs 1.0.3a    CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors
  659.                    -fno-exceptions -fno-rtti"
  660.      gcc 2.95.2     CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6
  661.                    -mpentiumpro -felide-constructors -fno-exceptions
  662.                    -fno-rtti"
  663.      pgcc 2.90.29   CFLAGS="-O6 -mpentiumpro -mstack-align-double"
  664.      or newer      CXX=gcc CXXFLAGS="-O6 -mpentiumpro
  665.                    -mstack-align-double -felide-constructors
  666.                    -fno-exceptions -fno-rtti"
  667.      In most cases you can get a resonable optimal *MySQL* binary
  668.      picking the options from the above and add the following options
  669.      to the configure line:
  670.           --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
  671.      The full configure line would in other words be something like the
  672.      following for all recent gcc versions:
  673.           CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
  674.      The binaries we provide at on the MySQL home site
  675.      `http://www.mysql.com', are all compiled with full optimization and
  676.      should be ok for most users.  *Note MySQL binaries::. There is some
  677.      things one can tweak to make an even faster binary, but this is
  678.      only for advanced users.  *Note Compile and link options::.
  679.      If the build fails and produces errors about your compiler or
  680.      linker not being able to create the shared library
  681.      `libmysqlclient.so.#' (`#' is a version number), you can work
  682.      around this problem by giving the `--disable-shared' option to
  683.      `configure'.  In this case, `configure' will not build a shared
  684.      `libmysqlclient.so.#' library.
  685.    * You can configure *MySQL* not to use `DEFAULT' column values for
  686.      non-`NULL' columns (that is, columns that are not allowed to be
  687.      `NULL').  This causes `INSERT' statements to generate an error
  688.      unless you explicitly specify values for all columns that require a
  689.      non-`NULL' value.  To suppress use of default values, run
  690.      `configure' like this:
  691.           shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
  692.    * By default, *MySQL* uses the ISO-8859-1 (Latin1) character set. To
  693.      change the default set, use the `--with-charset' option:
  694.           shell> ./configure --with-charset=CHARSET
  695.      `CHARSET' may be one of `big5', `cp1251', `cp1257', `czech',
  696.      `danish', `dec8', `dos', `euc_kr', `gb2312', `gbk', `german1',
  697.      `hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1',
  698.      `latin2', `sjis', `swe7', `tis620', `ujis', `usa7', or
  699.      `win1251ukr'.  *Note Character sets::.
  700.      If you want to convert characters between the server and the
  701.      client, you should take a look at the `SET OPTION CHARACTER SET'
  702.      command.  *Note `SET OPTION': SET OPTION.
  703.      *Warning:* If you change character sets after having created any
  704.      tables, you will have to run `myisamchk -r -q' on every table. Your
  705.      indexes may be sorted incorrectly otherwise.  (This can happen if
  706.      you install *MySQL*, create some tables, then reconfigure *MySQL*
  707.      to use a different character set and reinstall it.)
  708.    * To configure *MySQL* with debugging code, use the `--with-debug'
  709.      option:
  710.           shell> ./configure --with-debug
  711.      This causes a safe memory allocator to be included that can find
  712.      some errors and that provides output about what is happening.
  713.      *Note Debugging server::.
  714.    * If your client programs are using threads, you need to also
  715.      compile a thread-safe version of the *MySQL* client library with
  716.      the `--with-thread-safe-client' configure options. This will
  717.      create a `libmysqlclient_r' library with which you should link
  718.      your threaded applications. *Note Thread-safe clients::.
  719.    * Options that pertain to particular systems can be found in the
  720.      system-specific sections later in this chapter.  *Note Source
  721.      install system issues::.
  722. Installing from development source tree
  723. =======================================
  724. *CAUTION:* You should only read this section if you are interested in
  725. helping us test our new code. If you just want to get *MySQL* up and
  726. running on your system, you should use either source or binary
  727. distribution.
  728. Below are the instructions to obtain our most recent development source
  729. tree:
  730.    * Download *BitKeeper* from
  731.      `http://www.bitmover.com/cgi-bin/download.cgi'.  You will need
  732.      *Bitkeeper* 2.0 or newer to access our repository.
  733.    * Follow the instructions to install it.
  734.    * Once *BitKeeper* is installed, if you want to clone 3.23 branch,
  735.      `bk clone bk://work.mysql.com:7000 mysql', and `bk clone
  736.      bk://work.mysql.com:7001 mysql-4.0' for 4.0 branch
  737.      The initial download may take a while, depending on the speed of
  738.      your connection.
  739.    * You will need GNU autoconf/automake, libtool, and m4 to do the
  740.      next stage.  If you get some strange error during the first stage,
  741.      check that you really have libtool installed!
  742.           cd mysql
  743.           bk -r edit
  744.           aclocal; autoheader; autoconf;  automake;
  745.           ./configure  # Add your favorite options here
  746.           make
  747.      We have a collection of our standard configure scripts in the
  748.      `BUILD/' subdirectory - if you are lazy, you can do
  749.      `BUILD/compile-pentium-debug' . It will actually work on a lot of
  750.      non-x86 machines despite its name.
  751.    * Once the build is done, `make install'. Be careful with this on a
  752.      production machine - this may overwrite your live release binary.
  753.      We recommend that if you have another installation of *MySQL* that
  754.      you `./configure' with different values for `prefix', `tcp-port',
  755.      and `unix-socket-path'.
  756.    * Play hard with your new installation and try to make the new
  757.      features crash. Start by running `make test'. *Note MySQL test
  758.      suite::.
  759.    * If you have gotten to the `make' stage and it does not compile,
  760.      please report it to <bugs@lists.mysql.com>. If you have installed
  761.      the update version of the required GNU tools, and they crash
  762.      trying to process our configuration files, please report it also.
  763.      However, if you execute `aclocal' and get `command not found', or a
  764.      similar problem, do not report it - make sure all the needed tools
  765.      are installed and your `PATH' variable is set correctly.
  766.    * After the initial `bk clone', do `bk pull' to get the updates. If
  767.      you are using the most recent beta version of BitKeeper, you
  768.      should use `bk opull' instead.
  769.    * You can examine change history of the tree with all the diffs with
  770.      `bk sccstool'. If you see some funny diffs or code that you have a
  771.      question about, do not hesitate and e-mail
  772.      <internals@lists.mysql.com>. Also if you think you have a better
  773.      idea on how to do something, send an email to the same place with
  774.      a patch - `bk diffs' will produce a patch for you after you have
  775.      made changes to the source. If you do not have the time to code
  776.      your idea, just send a description.
  777.    * *BitKeeper* has a nice help utility - `bk helptool'.
  778. Problems Compiling?
  779. ===================
  780. All *MySQL* programs compile cleanly for us with no warnings on Solaris
  781. using `gcc'. On other systems, warnings may occur due to differences in
  782. system include files. See *Note MIT-pthreads::, for warnings that may
  783. occur when using MIT-pthreads.  For other problems, check the list
  784. below.
  785. The solution to many problems involves reconfiguring.  If you do need to
  786. reconfigure, take note of the following:
  787.    * If `configure' is run after it already has been run, it may use
  788.      information that was gathered during its previous invocation.  This
  789.      information is stored in `config.cache'.  When `configure' starts
  790.      up, it looks for that file and reads its contents if it exists, on
  791.      the assumption that the information is still correct.  That
  792.      assumption is invalid when you reconfigure.
  793.    * Each time you run `configure', you must run `make' again to
  794.      recompile.  However, you may want to remove old object files from
  795.      previous builds first, because they were compiled using different
  796.      configuration options.
  797. To prevent old configuration information or object files from being
  798. used, run these commands before rerunning `configure':
  799.      shell> rm config.cache
  800.      shell> make clean
  801. Alternatively, you can run `make distclean'.
  802. The list below describes some of the problems compiling *MySQL* that
  803. have been found to occur most often:
  804.    * If you get errors when compiling `sql_yacc.cc', such as the ones
  805.      shown below, you have probably run out of memory or swap space:
  806.           Internal compiler error: program cc1plus got fatal signal 11
  807.             or
  808.           Out of virtual memory
  809.             or
  810.           Virtual memory exhausted
  811.      The problem is that `gcc' requires huge amounts of memory to
  812.      compile `sql_yacc.cc' with inline functions.  Try running
  813.      `configure' with the `--with-low-memory' option:
  814.           shell> ./configure --with-low-memory
  815.      This option causes `-fno-inline' to be added to the compile line
  816.      if you are using `gcc' and `-O0' if you are using something else.
  817.      You should try the `--with-low-memory' option even if you have so
  818.      much memory and swap space that you think you can't possibly have
  819.      run out.  This problem has been observed to occur even on systems
  820.      with generous hardware configurations, and the `--with-low-memory'
  821.      option usually fixes it.
  822.    * By default, `configure' picks `c++' as the compiler name and GNU
  823.      `c++' links with `-lg++'.  If you are using `gcc', that behavior
  824.      can cause problems during configuration such as this:
  825.           configure: error: installation or configuration problem:
  826.           C++ compiler cannot create executables.
  827.      You might also observe problems during compilation related to
  828.      `g++', `libg++', or `libstdc++'.
  829.      One cause of these problems is that you may not have `g++', or you
  830.      may have `g++' but not `libg++', or `libstdc++'.  Take a look at
  831.      the `config.log' file.  It should contain the exact reason why
  832.      your c++ compiler didn't work!  To work around these problems, you
  833.      can use `gcc' as your C++ compiler.  Try setting the environment
  834.      variable `CXX' to `"gcc -O3"'.  For example:
  835.           shell> CXX="gcc -O3" ./configure
  836.      This works because `gcc' compiles C++ sources as well as `g++'
  837.      does, but does not link in `libg++' or `libstdc++' by default.
  838.      Another way to fix these problems, of course, is to install `g++',
  839.      `libg++' and `libstdc++'.
  840.    * If your compile fails with errors, such as any of the following,
  841.      you must upgrade your version of `make' to GNU `make':
  842.           making all in mit-pthreads
  843.           make: Fatal error in reader: Makefile, line 18:
  844.           Badly formed macro assignment
  845.             or
  846.           make: file `Makefile' line 18: Must be a separator (:
  847.             or
  848.           pthread.h: No such file or directory
  849.      Solaris and FreeBSD are known to have troublesome `make' programs.
  850.      GNU `make' Version 3.75 is known to work.
  851.    * If you want to define flags to be used by your C or C++ compilers,
  852.      do so by adding the flags to the `CFLAGS' and `CXXFLAGS'
  853.      environment variables.  You can also specify the compiler names
  854.      this way using `CC' and `CXX'.  For example:
  855.           shell> CC=gcc
  856.           shell> CFLAGS=-O6
  857.           shell> CXX=gcc
  858.           shell> CXXFLAGS=-O6
  859.           shell> export CC CFLAGS CXX CXXFLAGS
  860.      See *Note MySQL binaries::, for a list of flag definitions that
  861.      have been found to be useful on various systems.
  862.    * If you get an error message like this, you need to upgrade your
  863.      `gcc' compiler:
  864.           client/libmysql.c:273: parse error before `__attribute__'
  865.      `gcc' 2.8.1 is known to work, but we recommend using `gcc' 2.95.2
  866.      or `egcs' 1.0.3a instead.
  867.    * If you get errors such as those shown below when compiling
  868.      `mysqld', `configure' didn't correctly detect the type of the last
  869.      argument to `accept()', `getsockname()', or `getpeername()':
  870.           cxx: Error: mysqld.cc, line 645: In this statement, the referenced
  871.                type of the pointer value "&length" is "unsigned long", which
  872.                is not compatible with "int".
  873.           new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
  874.      To fix this, edit the `config.h' file (which is generated by
  875.      `configure').  Look for these lines:
  876.           /* Define as the base type of the last arg to accept */
  877.           #define SOCKET_SIZE_TYPE XXX
  878.      Change `XXX' to `size_t' or `int', depending on your operating
  879.      system.  (Note that you will have to do this each time you run
  880.      `configure', because `configure' regenerates `config.h'.)
  881.    * The `sql_yacc.cc' file is generated from `sql_yacc.yy'.  Normally
  882.      the build process doesn't need to create `sql_yacc.cc', because
  883.      *MySQL* comes with an already-generated copy.  However, if you do
  884.      need to re-create it, you might encounter this error:
  885.           "sql_yacc.yy", line xxx fatal: default action causes potential...
  886.      This is a sign that your version of `yacc' is deficient.  You
  887.      probably need to install `bison' (the GNU version of `yacc') and
  888.      use that instead.
  889.    * If you need to debug `mysqld' or a *MySQL* client, run `configure'
  890.      with the `--with-debug' option, then recompile and link your
  891.      clients with the new client library.  *Note Debugging client::.
  892. MIT-pthreads Notes
  893. ==================
  894. This section describes some of the issues involved in using
  895. MIT-pthreads.
  896. Note that on Linux you should NOT use MIT-pthreads but install
  897. LinuxThreads!  *Note Linux::.
  898. If your system does not provide native thread support, you will need to
  899. build *MySQL* using the MIT-pthreads package.  This includes older
  900. FreeBSD systems, SunOS 4.x, Solaris 2.4 and earlier, and some others.
  901. *Note Which OS::.
  902.    * On most systems, you can force MIT-pthreads to be used by running
  903.      `configure' with the `--with-mit-threads' option:
  904.           shell> ./configure --with-mit-threads
  905.      Building in a non-source directory is not supported when using
  906.      MIT-pthreads, because we want to minimize our changes to this code.
  907.    * The checks that determine whether or not to use MIT-pthreads occur
  908.      only during the part of the configuration process that deals with
  909.      the server code.  If you have configured the distribution using
  910.      `--without-server' to build only the client code, clients will not
  911.      know whether or not MIT-pthreads is being used and will use Unix
  912.      socket connections by default.  Because Unix sockets do not work
  913.      under MIT-pthreads, this means you will need to use `-h' or
  914.      `--host' when you run client programs.
  915.    * When *MySQL* is compiled using MIT-pthreads, system locking is
  916.      disabled by default for performance reasons. You can tell the
  917.      server to use system locking with the `--use-locking' option.
  918.    * Sometimes the pthread `bind()' command fails to bind to a socket
  919.      without any error message (at least on Solaris). The result is
  920.      that all connections to the server fail.  For example:
  921.           shell> mysqladmin version
  922.           mysqladmin: connect to server at '' failed;
  923.           error: 'Can't connect to mysql server on localhost (146)'
  924.      The solution to this is to kill the `mysqld' server and restart it.
  925.      This has only happened to us when we have forced the server down
  926.      and done a restart immediately.
  927.    * With MIT-pthreads, the `sleep()' system call isn't interruptible
  928.      with `SIGINT' (break). This is only noticeable when you run
  929.      `mysqladmin --sleep'.  You must wait for the `sleep()' call to
  930.      terminate before the interrupt is served and the process stops.
  931.    * When linking, you may receive warning messages like these (at
  932.      least on Solaris); they can be ignored:
  933.           ld: warning: symbol `_iob' has differing sizes:
  934.               (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  935.           file /usr/lib/libc.so value=0x140);
  936.               /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
  937.           ld: warning: symbol `__iob' has differing sizes:
  938.               (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
  939.           file /usr/lib/libc.so value=0x140);
  940.               /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
  941.    * Some other warnings also can be ignored:
  942.           implicit declaration of function `int strtoll(...)'
  943.           implicit declaration of function `int strtoul(...)'
  944.    * We haven't gotten `readline' to work with MIT-pthreads. (This isn't
  945.      needed, but may be interesting for someone.)
  946. Perl Installation Comments
  947. ==========================
  948. Installing Perl on Unix
  949. -----------------------
  950. Perl support for *MySQL* is provided by means of the `DBI'/`DBD' client
  951. interface.  *Note Perl::.  The Perl `DBD'/`DBI' client code requires
  952. Perl Version 5.004 or later.  The interface _will not work_ if you have
  953. an older version of Perl.
  954. *MySQL* Perl support also requires that you've installed *MySQL* client
  955. programming support.  If you installed *MySQL* from RPM files, client
  956. programs are in the client RPM, but client programming support is in
  957. the developer RPM.  Make sure you've installed the latter RPM.
  958. As of Version 3.22.8, Perl support is distributed separately from the
  959. main *MySQL* distribution.  If you want to install Perl support, the
  960. files you will need can be obtained from
  961. `http://www.mysql.com/Downloads/Contrib/'.
  962. The Perl distributions are provided as compressed `tar' archives and
  963. have names like `MODULE-VERSION.tar.gz', where `MODULE' is the module
  964. name and `VERSION' is the version number.  You should get the
  965. `Data-Dumper', `DBI', and `Msql-Mysql-modules' distributions and
  966. install them in that order.  The installation procedure is shown below.
  967. The example shown is for the `Data-Dumper' module, but the procedure is
  968. the same for all three distributions:
  969.   1. Unpack the distribution into the current directory:
  970.           shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
  971.      This command creates a directory named `Data-Dumper-VERSION'.
  972.   2. Change into the top-level directory of the unpacked distribution:
  973.           shell> cd Data-Dumper-VERSION
  974.   3. Build the distribution and compile everything:
  975.           shell> perl Makefile.PL
  976.           shell> make
  977.           shell> make test
  978.           shell> make install
  979. The `make test' command is important because it verifies that the
  980. module is working.  Note that when you run that command during the
  981. `Msql-Mysql-modules' installation to exercise the interface code, the
  982. *MySQL* server must be running or the test will fail.
  983. It is a good idea to rebuild and reinstall the `Msql-Mysql-modules'
  984. distribution whenever you install a new release of *MySQL*,
  985. particularly if you notice symptoms such as all your `DBI' scripts
  986. dumping core after you upgrade *MySQL*.
  987. If you don't have the right to install Perl modules in the system
  988. directory or if you to install local Perl modules, the following
  989. reference may help you:
  990.      `http://www.iserver.com/support/contrib/perl5/modules.html'
  991. Look under the heading `Installing New Modules that Require Locally
  992. Installed Modules'.
  993. Installing ActiveState Perl on Windows
  994. --------------------------------------
  995. To install the *MySQL* `DBD' module with ActiveState Perl on Windows,
  996. you should do the following:
  997.    * Get activestate perl from
  998.      `http://www.activestate.com/Products/ActivePerl/index.html' and
  999.      install it.
  1000.    * Open a DOS shell.
  1001.    * If required, set the HTTP_proxy variable. For example, you might
  1002.      try: `set HTTP_proxy=my.proxy.com:3128'
  1003.    * Start the PPM program: `C:perlbinppm.pl'
  1004.    * If you have not already done so, install `DBI': `install DBI'
  1005.    * If this succeeds, install
  1006.      `ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd'
  1007. The above should work at least with ActiveState Perl Version 5.6.
  1008. If you can't get the above to work, you should instead install the
  1009. *MyODBC* driver and connect to *MySQL* server through ODBC:
  1010.      use DBI;
  1011.      $dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") ||
  1012.        die "Got error $DBI::errstr when connecting to $dsnn";
  1013. Installing the MySQL Perl Distribution on Windows
  1014. -------------------------------------------------
  1015. The *MySQL* Perl distribution contains `DBI', `DBD:MySQL' and
  1016. `DBD:ODBC'.
  1017.    * Get the Perl distribution for Windows from
  1018.      `http://www.mysql.com/download.html'.
  1019.    * Unzip the distribution in `C:' so that you get a `C:PERL'
  1020.      directory.
  1021.    * Add the directory `C:PERLBIN' to your path.
  1022.    * Add the directory `C:PERLBINMSWIN32-x86-thread' or
  1023.      `C:PERLBINMSWIN32-x86' to your path.
  1024.    * Test that `perl' works by executing `perl -v' in a DOS shell.
  1025. Problems Using the Perl `DBI'/`DBD' Interface
  1026. ---------------------------------------------
  1027. If Perl reports that it can't find the `../mysql/mysql.so' module, then
  1028. the problem is probably that Perl can't locate the shared library
  1029. `libmysqlclient.so'.
  1030. You can fix this by any of the following methods:
  1031.    * Compile the `Msql-Mysql-modules' distribution with `perl
  1032.      Makefile.PL -static -config' rather than `perl Makefile.PL'.
  1033.    * Copy `libmysqlclient.so' to the directory where your other shared
  1034.      libraries are located (probably `/usr/lib' or `/lib').
  1035.    * On `Linux' you can add the pathname of the directory where
  1036.      `libmysqlclient.so' is located to the `/etc/ld.so.conf' file.
  1037.    * Add the pathname of the directory where `libmysqlclient.so' is
  1038.      located to the `LD_RUN_PATH' environment variable.
  1039. If you get the following errors from `DBD-mysql', you are probably
  1040. using `gcc' (or using an old binary compiled with `gcc'):
  1041.      /usr/bin/perl: can't resolve symbol '__moddi3'
  1042.      /usr/bin/perl: can't resolve symbol '__divdi3'
  1043. Add `-L/usr/lib/gcc-lib/... -lgcc' to the link command when the
  1044. `mysql.so' library gets built (check the output from `make' for
  1045. `mysql.so' when you compile the Perl client).  The `-L' option should
  1046. specify the pathname of the directory where `libgcc.a' is located on
  1047. your system.
  1048. Another cause of this problem may be that Perl and *MySQL* aren't both
  1049. compiled with `gcc'.  In this case, you can solve the mismatch by
  1050. compiling both with `gcc'.
  1051. If you get the following error from `Msql-Mysql-modules' when you run
  1052. the tests:
  1053.      t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.
  1054. it means that you need to include the compression library, -lz, to the
  1055. link line. This can be doing the following change in the file
  1056. `lib/DBD/mysql/Install.pm':
  1057.      $sysliblist .= " -lm";
  1058.      
  1059.      to
  1060.      
  1061.      $sysliblist .= " -lm -lz";
  1062. After this, you MUST run 'make realclean' and then proceed with the
  1063. installation from the beginning.
  1064. If you want to use the Perl module on a system that doesn't support
  1065. dynamic linking (like SCO) you can generate a static version of Perl
  1066. that includes `DBI' and `DBD-mysql'.  The way this works is that you
  1067. generate a version of Perl with the `DBI' code linked in and install it
  1068. on top of your current Perl.  Then you use that to build a version of
  1069. Perl that additionally has the `DBD' code linked in, and install that.
  1070. On SCO, you must have the following environment variables set:
  1071.      shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
  1072.      or
  1073.      shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
  1074.      shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
  1075.      shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:
  1076. First, create a Perl that includes a statically linked `DBI' by running
  1077. these commands in the directory where your `DBI' distribution is
  1078. located:
  1079.      shell> perl Makefile.PL -static -config
  1080.      shell> make
  1081.      shell> make install
  1082.      shell> make perl
  1083. Then you must install the new Perl. The output of `make perl' will
  1084. indicate the exact `make' command you will need to execute to perform
  1085. the installation.  On SCO, this is `make -f Makefile.aperl inst_perl
  1086. MAP_TARGET=perl'.
  1087. Next, use the just-created Perl to create another Perl that also
  1088. includes a statically-linked `DBD::mysql' by running these commands in
  1089. the directory where your `Msql-Mysql-modules' distribution is located:
  1090.      shell> perl Makefile.PL -static -config
  1091.      shell> make
  1092.      shell> make install
  1093.      shell> make perl
  1094. Finally, you should install this new Perl.  Again, the output of `make
  1095. perl' indicates the command to use.
  1096. System-specific Issues
  1097. ======================
  1098. The following sections indicate some of the issues that have been
  1099. observed to occur on particular systems when installing *MySQL* from a
  1100. source distribution.
  1101. Solaris Notes
  1102. -------------
  1103. On Solaris, you may run into trouble even before you get the *MySQL*
  1104. distribution unpacked!  Solaris `tar' can't handle long file names, so
  1105. you may see an error like this when you unpack *MySQL*:
  1106.      x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
  1107.      tar: directory checksum error
  1108. In this case, you must use GNU `tar' (`gtar') to unpack the
  1109. distribution.  You can find a precompiled copy for Solaris at
  1110. `http://www.mysql.com/Downloads/'.
  1111. Sun native threads work only on Solaris 2.5 and higher. For Version 2.4
  1112. and earlier, *MySQL* will automatically use MIT-pt threads.  *Note
  1113. MIT-pthreads::.
  1114. If you get the following error from configure:
  1115.      checking for restartable system calls... configure: error can not run test
  1116.      programs while cross compiling
  1117. this means that you have something wrong with your compiler
  1118. installation!  In this case you should upgrade your compiler to a newer
  1119. version.  You may also be able to solve this problem by inserting the
  1120. following row into the `config.cache' file:
  1121.      ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
  1122. If you are using Solaris on a SPARC, the recommended compiler is `gcc'
  1123. 2.95.2.  You can find this at `http://gcc.gnu.org/'.  Note that `egs'
  1124. 1.1.1 and `gcc' 2.8.1 don't work reliably on SPARC!
  1125. The recommended `configure' line when using `gcc' 2.95.2 is:
  1126.      CC=gcc CFLAGS="-O6" 
  1127.      CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" 
  1128.      ./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler
  1129. If you have a ultra sparc, you can get 4 % more performance by adding
  1130. "-mcpu=v8 -Wa,-xarch=v8plusa" to CFLAGS and CXXFLAGS.
  1131. If you have the Sun Workshop (SunPro) 4.2 (or newer) compiler, you can
  1132. run `configure' like this:
  1133.      CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" 
  1134.      CXX=CC CXXFLAGS="-noex -xO4 -mt" 
  1135.      ./configure --prefix=/usr/local/mysql --enable-assembler
  1136. You may also have to edit the `configure' script to change this line:
  1137.      #if !defined(__STDC__) || __STDC__ != 1
  1138. to this:
  1139.      #if !defined(__STDC__)
  1140. If you turn on `__STDC__' with the `-Xc' option, the Sun compiler can't
  1141. compile with the Solaris `pthread.h' header file. This is a Sun bug
  1142. (broken compiler or broken include file).
  1143. If `mysqld' issues the error message shown below when you run it, you
  1144. have tried to compile *MySQL* with the Sun compiler without enabling the
  1145. multi-thread option (`-mt'):
  1146.      libc internal error: _rmutex_unlock: rmutex not held
  1147. Add `-mt' to `CFLAGS' and `CXXFLAGS' and try again.
  1148. If you get the following error when compiling *MySQL* with `gcc', it
  1149. means that your `gcc' is not configured for your version of Solaris:
  1150.      shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
  1151.      ./thr_alarm.c: In function `signal_hand':
  1152.      ./thr_alarm.c:556: too many arguments to function `sigwait'
  1153. The proper thing to do in this case is to get the newest version of
  1154. `gcc' and compile it with your current `gcc' compiler!  At least for
  1155. Solaris 2.5, almost all binary versions of `gcc' have old, unusable
  1156. include files that will break all programs that use threads (and
  1157. possibly other programs)!
  1158. Solaris doesn't provide static versions of all system libraries
  1159. (`libpthreads' and `libdl'), so you can't compile *MySQL* with
  1160. `--static'.  If you try to do so, you will get the error:
  1161.      ld: fatal: library -ldl: not found
  1162. If too many processes try to connect very rapidly to `mysqld', you will
  1163. see this error in the *MySQL* log:
  1164.      Error in accept: Protocol error
  1165. You might try starting the server with the `--set-variable back_log=50'
  1166. option as a workaround for this. *Note Command-line options::.
  1167. If you are linking your own *MySQL* client, you might get the following
  1168. error when you try to execute it:
  1169.      ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
  1170. The problem can be avoided by one of the following methods:
  1171.    * Link the client with the following flag (instead of `-Lpath'):
  1172.      `-Wl,r/full-path-to-libmysqlclient.so'.
  1173.    * Copy `libmysqclient.so' to `/usr/lib'.
  1174.    * Add the pathname of the directory where `libmysqlclient.so' is
  1175.      located to the `LD_RUN_PATH' environment variable before running
  1176.      your client.
  1177. When using the `--with-libwrap' configure option, you must also include
  1178. the libraries that `libwrap.a' needs:
  1179.      --with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket
  1180. If you have problems with configure trying to link with `-lz' and you
  1181. don't have `zlib' installed, you have two options:
  1182.    * If you want to be able to use the compressed communication
  1183.      protocol, you need to get and install zlib from ftp.gnu.org.
  1184.    * Configure with `--with-named-z-libs=no'.
  1185. If you are using gcc and have problems with loading `UDF' functions
  1186. into *MySQL*, try adding `-lgcc' to the link line for the `UDF'
  1187. function.
  1188. If you would like *MySQL* to start automatically, you can copy
  1189. `support-files/mysql.server' to `/etc/init.d' and create a symbolic
  1190. link to it named `/etc/rc3.d/S99mysql.server'.
  1191. Solaris 2.7/2.8 Notes
  1192. ---------------------
  1193. You can normally use a Solaris 2.6 binary on Solaris 2.7 and 2.8.  Most
  1194. of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8.
  1195. Note that *MySQL* Version 3.23.4 and above should be able to autodetect
  1196. new versions of Solaris and enable workarounds for the following
  1197. problems!
  1198. Solaris 2.7 / 2.8 has some bugs in the include files. You may see the
  1199. following error when you use `gcc':
  1200.      /usr/include/widec.h:42: warning: `getwc' redefined
  1201.      /usr/include/wchar.h:326: warning: this is the location of the previous
  1202.      definition
  1203. If this occurs, you can do the following to fix the problem:
  1204. Copy `/usr/include/widec.h' to `.../lib/gcc-lib/os/gcc-version/include'
  1205. and change line 41 from:
  1206.      #if     !defined(lint) && !defined(__lint)
  1207.      
  1208.      to
  1209.      
  1210.      #if     !defined(lint) && !defined(__lint) && !defined(getwc)
  1211. Alternatively, you can edit `/usr/include/widec.h' directly.  Either
  1212. way, after you make the fix, you should remove `config.cache' and run
  1213. `configure' again!
  1214. If you get errors like this when you run `make', it's because
  1215. `configure' didn't detect the `curses.h' file (probably because of the
  1216. error in `/usr/include/widec.h'):
  1217.      In file included from mysql.cc:50:
  1218.      /usr/include/term.h:1060: syntax error before `,'
  1219.      /usr/include/term.h:1081: syntax error before `;'
  1220. The solution to this is to do one of the following:
  1221.    * Configure with `CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
  1222.      ./configure'.
  1223.    * Edit `/usr/include/widec.h' as indicted above and rerun configure.
  1224.    * Remove the `#define HAVE_TERM' line from `config.h' file and run
  1225.      `make' again.
  1226. If you get a problem that your linker can't find `-lz' when linking
  1227. your client program, the problem is probably that your `libz.so' file is
  1228. installed in `/usr/local/lib'.  You can fix this by one of the
  1229. following methods:
  1230.    * Add `/usr/local/lib' to `LD_LIBRARY_PATH'.
  1231.    * Add a link to `libz.so' from `/lib'.
  1232.    * If you are using Solaris 8, you can install the optional zlib from
  1233.      your Solaris 8 CD distribution.
  1234.    * configure *MySQL* with the `--with-named-z-libs=no' option.
  1235. Solaris x86 Notes
  1236. -----------------
  1237. If you are using `gcc' or `egcs' on Solaris x86 and you experience
  1238. problems with core dumps under load, you should use the following
  1239. `configure' command:
  1240.      CC=gcc CFLAGS="-O6 -fomit-frame-pointer -DHAVE_CURSES_H" 
  1241.      CXX=gcc 
  1242.      CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti -DHAVE_CURSES_H" 
  1243.      ./configure --prefix=/usr/local/mysql
  1244. This will avoid problems with the `libstdc++' library and with C++
  1245. exceptions.
  1246. If this doesn't help, you should compile a debug version and run it
  1247. with a trace file or under `gdb'.  *Note Debugging server::.
  1248. SunOS 4 Notes
  1249. -------------
  1250. On SunOS 4, MIT-pthreads is needed to compile *MySQL*, which in turn
  1251. means you will need GNU `make'.
  1252. Some SunOS 4 systems have problems with dynamic libraries and
  1253. `libtool'. You can use the following `configure' line to avoid this
  1254. problem:
  1255.      shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static
  1256. When compiling `readline', you may get warnings about duplicate defines.
  1257. These may be ignored.
  1258. When compiling `mysqld', there will be some `implicit declaration of
  1259. function' warnings. These may be ignored.
  1260. Linux Notes (All Linux Versions)
  1261. --------------------------------
  1262. *MySQL* uses LinuxThreads on Linux.  If you are using an old Linux
  1263. version that doesn't have `glibc2', you must install LinuxThreads
  1264. before trying to compile *MySQL*. `http://www.mysql.com/Downloads/Linux'
  1265. Note that `glibc' versions before and including Version 2.1.1 have a
  1266. fatal bug in `pthread_mutex_timedwait' handling, which is used when you
  1267. do `INSERT DELAYED'. If you are using `INSERT DELAYED', you *MUST* add
  1268. the following patch to your glibc library:
  1269. `http://www.mysql.com/Downloads/Patches/glibc-pthread_cond_timedwait.patch'.
  1270. *MySQL* Versions 3.23.7 and 3.22.32 contain a temporary workaround for
  1271. this bug.
  1272. If you plan to have 1000+ concurrent connections, you will need to make
  1273. some changes to LinuxThreads, recompile it, and relink MySQL against
  1274. the new `libpthread.a'. Increase `PTHREAD_THREADS_MAX' in
  1275. `sysdeps/unix/sysv/linux/bits/local_lim.h' to 4096 and decrease
  1276. `STACK_SIZE' in `linuxthreads/internals.h' to 256 KB. The paths are
  1277. relative to the root of `glibc' Note that MySQL will not be stable with
  1278. around 600-1000 connections if `STACK_SIZE' is the default of 2 MB.
  1279. `STACK_SIZE' constant in *LinuxThreads*  controls the spacing of thread
  1280. stacks in the address space. It needs to be large enough so that there
  1281. will be plenty of room for the stack of each individual thread, but
  1282. small enough to keep the stack of some thread from running into the
  1283. global `mysqld' data. Unfortunately, Linux implementation of `mmap()',
  1284. as we have experimentaly discovered, will successfully unmap an already
  1285. mapped region if you ask it to map out an address already in use,
  1286. zeroing out the data on the entire page, instead of returning an error.
  1287. So the safety of `mysqld' or any other threaded application depends on
  1288. the "gentleman" behaviour of the code that creates threads - the user
  1289. must take measures to make sure the number of running threads at any
  1290. time is sufficiently low for thread stacks to stay away from the global
  1291. heap.  With `mysqld', you should enforce this "gentleman" behaviour by
  1292. setting a reasonable value for `max_connections' variable.  If you
  1293. build *MySQL* yourself and do not what to mess with patching
  1294. *LinuxThreads*, you should set `max_connections' to a value no higher
  1295. than 500. It should be even less if you have a large key buffer, large
  1296. heap tables, or some other things that make *mysqld* allocate a lot of
  1297. memory or if you are running a 2.2 kernel with a 2 GB patch. If you are
  1298. using our binary or RPM version 3.23.25 or later, you can safely set
  1299. `max_connections' at 1500 again assuming no large key buffer or heap
  1300. tables with lots of data. The more you reduce `STACK_SIZE' in
  1301. LinuxThreads the more threads you can safely create. We recommend the
  1302. values between 128K and 256 K.
  1303. If you use a lot of concurrent connections, you may suffer from a  2.2
  1304. kernel "feature" in 2.2 kernel that penalizes a process for forking or
  1305. cloning a child in an attempt to prevent a fork bomb attack. This will
  1306. cause MySQL not to scale well as you increase the number of concurrent
  1307. clients. On single CPU systems, we have seen this manifested in a very
  1308. slow thread creation - which means it may take a long time to connect
  1309. to MySQL (as long as 1 minute), and it may take just as long to shut it
  1310. down. On multiple CPU systems, we have observed a gradual drop in query
  1311. speed as the number of clients increases. In the process of trying to
  1312. find a solution, we have received a kernel patch from one of our users,
  1313. who claimed it made a lot of difference for his site. We have done some
  1314. limited testing in which the patch greatly improved the scalabitility of
  1315. MySQL. The patch is available here
  1316. (`http://www.mysql.com/Downloads/Patches/linux-fork.patch'). We have
  1317. done a rather extensive testing of this patch - Sasha Pachev has
  1318. bravely put it on his development machine, and it now has run without
  1319. problems for a year.  Eventually, we have felt sufficiently confident
  1320. about it that we installed it on several systems of one of our biggest
  1321. customers. The patch has signficantly improved `MySQL' performance
  1322. without causing any problems. So it should be pretty safe. This issue
  1323. has been fixed in the 2.4 kernel.
  1324. We have also tested *MySQL* on  2.4 kernel on a 2 CPU machine and found
  1325. *MySQL* scales MUCH better - there was virtually no slowdown on query
  1326. throughput all the way up to 1000 clients.  If your plan to set up a
  1327. dedicated Linux SMP machine to run *MySQL* under heavy load, we
  1328. recommend that you give 2.4 kernel a try! We are currently trying to
  1329. collect some info on how well `MySQL' performs on 2.4 kernel on 4-way
  1330. and 8-way systems. If you have access such a system and have done some
  1331. benchmarks, please send a mail to <docs@mysql.com> with the results -
  1332. we will include them in the manual.
  1333. There is another issue that greatly hurts *MySQL* performance,
  1334. especially on SMP systems.  The current implementation of mutex in
  1335. Linuxthreads is also very bad for programs with many threads that only
  1336. hold the mutex for a short time. On an SMP system, ironic as it is, if
  1337. you link *MySQL* against unmodified *LinuxThreads*, removing processors
  1338. from the machine improves *MySQL* performance in many cases.  We have
  1339. made a patch available for glibc 2.1, linuxthreads-2.1-patch
  1340. (http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch) and for
  1341. glibc 2.2, linuxthreads-2.2-patch
  1342. (http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch) to
  1343. correct this behaviour. Please note that since there are so many
  1344. versions of glibc floating around, the patch may not apply cleanly to
  1345. yours, so some manual work may be required.
  1346. We recommend that you use the above patched to build a special static
  1347. version of `libpthread.a' and use it only for statically linking
  1348. against `MySQL'. We know that the patch is safe for `MySQL' and
  1349. significantly improves its performance, but we cannot say anything
  1350. about other applications. If you link other applications against the
  1351. patched version of the library, or build a patched shared version and
  1352. install it on your system, you are doing it at your own risk with
  1353. regard to other applicatioins that depend on `LinuxThreads'.
  1354. If you can't start `mysqld' or if `mysql_install_db' doesn't work,
  1355. please continue reading!  This only happens on Linux system with
  1356. problems in the LinuxThreads or `libc'/`glibc' libraries. There are a
  1357. lot of simple workarounds to get *MySQL* to work!  The simplest is to
  1358. use the binary version of *MySQL* (not the RPM) for Linux x86.  One nice
  1359. aspect of this version is that it's probably 10% faster than any
  1360. version you would compile yourself!  *Note Compile and link options::.
  1361. One known problem with the binary distribution is that with older Linux
  1362. systems that use `libc' (like RedHat 4.x or Slackware), you will get
  1363. some non-fatal problems with hostname resolution.  *Note Binary
  1364. notes-Linux::.
  1365. `myisamchk' hangs with `libc.so.5.3.12'. Upgrading to the newest `libc'
  1366. fixes this problem.
  1367. When using LinuxThreads you will see a minimum of three processes
  1368. running. These are in fact threads. There will be one thread for the
  1369. LinuxThreads manager, one thread to handle connections, and one thread
  1370. to handle alarms and signals.
  1371. Note that the linux kernel and the linuxthread library can by default
  1372. only have 1024 threads.  This means that you can only have up to 1021
  1373. connections to MySQL on a unpatched system.  The page
  1374. `http://www.volano.com/linuxnotes.html' contains information how to go
  1375. around this limit.
  1376. If you see a dead `mysqld' daemon process with `ps', this usually means
  1377. that you have found a bug in *MySQL* or you have a corrupted table.
  1378. *Note Crashing::.
  1379. To get a core dump on Linux if mysqld dies with a SIGSEGV signal, you
  1380. can start mysqld with the `--core-file' option.  Note that you also
  1381. probably need to raise the `core file size' by adding `ulimit -c
  1382. 1000000' to `safe_mysqld' or starting `safe_mysqld' with
  1383. `--core-file-sizes=1000000'. *Note safe_mysqld::.
  1384. If you are using LinuxThreads and `mysqladmin shutdown' doesn't work,
  1385. you must upgrade to LinuxThreads Version 0.7.1 or newer.
  1386. If you are using RedHat, you might get errors like this:
  1387.      /usr/bin/perl is needed...
  1388.      /usr/sh is needed...
  1389.      /usr/sh is needed...
  1390. If so, you should upgrade your version of `rpm' to
  1391. `rpm-2.4.11-1.i386.rpm' and `rpm-devel-2.4.11-1.i386.rpm' (or later).
  1392. You can get the upgrades of libraries to RedHat Version 4.2 from
  1393. `ftp://ftp.redhat.com/updates/4.2/i386'. Or
  1394. `http://www.sunsite.unc.edu/pub/Linux/distributions/redhat/code/rpm/'
  1395. for other distributions.
  1396. If you are linking your own *MySQL* client and get the error:
  1397.      ld.so.1: ./my: fatal: libmysqlclient.so.4: open failed: No such file or directory
  1398. When executing them, the problem can be avoided by one of the following
  1399. methods:
  1400.    * Link the client with the following flag (instead of `-Lpath'):
  1401.      `-Wl,r/path-libmysqlclient.so'.
  1402.    * Copy `libmysqclient.so' to `/usr/lib'.
  1403.    * Add the pathname of the directory where `libmysqlclient.so' is
  1404.      located to the `LD_RUN_PATH' environment variable before running
  1405.      your client.
  1406. If you are using the Fujitsu compiler `(fcc / FCC)' you will have some
  1407. problems compiling *MySQL* because the Linux header files are very
  1408. `gcc' oriented.
  1409. The following `configure' line should work with `fcc/FCC':
  1410.      CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE -DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib  -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO '-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-low-memory
  1411. Linux-x86 Notes
  1412. ...............
  1413. *MySQL* requires `libc' Version 5.4.12 or newer. It's known to work
  1414. with `libc' 5.4.46. `glibc' Version 2.0.6 and later should also work.
  1415. There have been some problems with the `glibc' RPMs from RedHat, so if
  1416. you have problems, check whether or not there are any updates!  The
  1417. `glibc' 2.0.7-19 and 2.0.7-29 RPMs are known to work.
  1418. On some older Linux distributions, `configure' may produce an error
  1419. like this:
  1420.      Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file.
  1421.      See the Installation chapter in the Reference Manual.
  1422. Just do what the error message says and add an extra underscore to the
  1423. `_P' macro that has only one underscore, then try again.
  1424. You may get some warnings when compiling; those shown below can be
  1425. ignored:
  1426.      mysqld.cc -o objs-thread/mysqld.o
  1427.      mysqld.cc: In function `void init_signals()':
  1428.      mysqld.cc:315: warning: assignment of negative value `-1' to `long unsigned int'
  1429.      mysqld.cc: In function `void * signal_hand(void *)':
  1430.      mysqld.cc:346: warning: assignment of negative value `-1' to `long unsigned int'
  1431. In Debian GNU/Linux, if you want *MySQL* to start automatically when
  1432. the system boots, do the following:
  1433.      shell> cp support-files/mysql.server /etc/init.d/mysql.server
  1434.      shell> /usr/sbin/update-rc.d mysql.server defaults 99
  1435. `mysql.server' can be found in the `share/mysql' directory under the
  1436. *MySQL* installation directory or in the `support-files' directory of
  1437. the *MySQL* source tree.
  1438. If `mysqld' always core dumps when it starts up, the problem may be that
  1439. you have an old `/lib/libc.a'.  Try renaming it, then remove
  1440. `sql/mysqld' and do a new `make install' and try again.  This problem
  1441. has been reported on some Slackware installations. RedHat Version 5.0
  1442. also has a similar problem with some new `glibc' versions.  *Note
  1443. Linux-RedHat50::.
  1444. If you get the following error when linking `mysqld', it means that
  1445. your `libg++.a' is not installed correctly:
  1446.      /usr/lib/libc.a(putc.o): In function `_IO_putc':
  1447.      putc.o(.text+0x0): multiple definition of `_IO_putc'
  1448. You can avoid using `libg++.a' by running `configure' like this:
  1449.      shell> CXX=gcc ./configure
  1450. RedHat Version 5.0 Notes
  1451. ........................
  1452. If you have any problems with *MySQL* on RedHat, you should start by
  1453. upgrading `glibc' to the newest possible version!
  1454. If you install all the official RedHat patches (including
  1455. `glibc-2.0.7-19' and `glibc-devel-2.0.7-19'), both the binary and
  1456. source distributions of *MySQL* should work without any trouble!
  1457. The updates are needed because there is a bug in `glibc' 2.0.5 in how
  1458. `pthread_key_create' variables are freed. With `glibc' 2.0.5, you must
  1459. use a statically linked *MySQL* binary distribution. If you want to
  1460. compile from source, you must install the corrected version of
  1461. LinuxThreads from `http://www.mysql.com/Downloads/Linux' or upgrade your
  1462. `glibc'.
  1463. If you have an incorrect version of `glibc' or LinuxThreads, the symptom
  1464. is that `mysqld' crashes after each connection. For example,
  1465. `mysqladmin version' will crash `mysqld' when it finishes!
  1466. Another symptom of incorrect libraries is that `mysqld' crashes at once
  1467. when it starts. On some Linux systems, this can be fixed by configuring
  1468. like this:
  1469.      shell> ./configure --with-mysqld-ldflags=-all-static
  1470. On Redhat Version 5.0, the easy way out is to install the `glibc'
  1471. 2.0.7-19 RPM and run `configure' *without* the
  1472. `--with-mysqld-ldflags=-all-static' option.
  1473. For the source distribution of `glibc' 2.0.7, a patch that is easy to
  1474. apply and is tested with *MySQL* may be found at:
  1475.      `http://www.mysql.com/Download/Linux/glibc-2.0.7-total-patch.tar.gz'
  1476. If you experience crashes like these when you build *MySQL*, you can
  1477. always download the newest binary version of *MySQL*.  This is
  1478. statically-linked to avoid library conflicts and should work on all
  1479. Linux systems!
  1480. *MySQL* comes with an internal debugger that can generate trace files
  1481. with a lot of information that can be used to find and solve a wide
  1482. range of different problems.  *Note Debugging server::.
  1483. RedHat Version 5.1 notes
  1484. ........................
  1485. The `glibc' of RedHat Version 5.1 (`glibc' 2.0.7-13) has a memory leak,
  1486. so to get a stable *MySQL* version, you must upgrade `glibc', to
  1487. 2.0.7-19, downgrade `glibc' or use a binary version of `mysqld'.  If
  1488. you don't do this, you will encounter memory problems (out of memory,
  1489. etc.).  The most common error in this case is:
  1490.      Can't create a new thread (errno 11). If you are not out of available
  1491.      memory, you can consult the manual for any possible OS dependent bug
  1492. After you have upgraded to `glibc' 2.0.7-19, you can configure *MySQL*
  1493. with dynamic linking (the default), but you *cannot* run `configure'
  1494. with the `--with-mysqld-ldflags=-all-static' option until you have
  1495. installed `glibc' 2.0.7-19 from source!
  1496. You can check which version of `glibc' you have with `rpm -q glibc'.
  1497. Another reason for the above error is if you try to use more threads
  1498. than your Linux kernel is configured for.  In this case you should raise
  1499. the limits in `include/linux/tasks.h' and recompile your kernel!
  1500. Linux-SPARC Notes
  1501. .................
  1502. In some implementations, `readdir_r()' is broken.  The symptom is that
  1503. `SHOW DATABASES' always returns an empty set.  This can be fixed by
  1504. removing `HAVE_READDIR_R' from `config.h' after configuring and before
  1505. compiling.
  1506. Some problems will require patching your Linux installation.  The patch
  1507. can be found at
  1508. `http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff'. This
  1509. patch is against the Linux distribution `sparclinux-2.0.30.tar.gz' that
  1510. is available at `vger.rutgers.edu' (a version of Linux that was never
  1511. merged with the official 2.0.30).  You must also install LinuxThreads
  1512. Version 0.6 or newer.
  1513. Linux-Alpha Notes
  1514. .................
  1515. *MySQL* Version 3.23.12 is the first *MySQL* version that is tested on
  1516. Linux-Alpha.  If you plan to use *MySQL* on Linux-Alpha, you should
  1517. ensure that you have this version or newer.
  1518. We have tested *MySQL* on Alpha with our benchmarks + test suite and it
  1519. appears to work nicely.  The main thing we haven't yet had time to test
  1520. is how things works with many concurrent users.
  1521. When we compiled the standard *MySQL* binary we are using SuSE 6.4,
  1522. kernel 2.2.13-SMP, Compaq C compiler (V6.2-504) and Compaq C++ compiler
  1523. (V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor
  1524. You can find the above compilers at
  1525. `http://www.support.compaq.com/alpha-tools'). By using these compilers,
  1526. instead of gcc, we get about 9-14 % better performance with *MySQL*.
  1527. Note that the configure line optimized the binary for the current CPU;
  1528. This means you can only use our binary if you have an Alpha EV6
  1529. processor.  We also compile staticly to avoid library problems.
  1530.      CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared
  1531. If you want to use egcs the following configure line worked for us:
  1532.      CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --disable-shared
  1533. Some known problems when running *MySQL* on Linux-Alpha:
  1534.    * Debugging threaded applications like *MySQL* will not work with
  1535.      `gdb 4.18'.  You should download and use gdb 5.0 instead!
  1536.    * If you try linking mysqld staticly when using gcc, the resulting
  1537.      image will core dump at start.  In other words, *DON'T* use
  1538.      `--with-mysqld-ldflags=-all-static' with gcc
  1539. MkLinux Notes
  1540. .............
  1541. *MySQL* should work on MkLinux with the newest `glibc' package (tested
  1542. with `glibc' 2.0.7).
  1543. Qube2 Linux Notes
  1544. .................
  1545. To get *MySQL* to work on Qube2, (Linux Mips), you need the newest
  1546. `glibc' libraries (`glibc-2.0.7-29C2' is known to work). You must also
  1547. use the `egcs' C++ compiler (`egcs-1.0.2-9', `gcc 2.95.2' or newer).
  1548. Linux IA64 Notes
  1549. ................
  1550. To get *MySQL* to compile on Linux Ia64, we had to do the following (we
  1551. assume that this will be easier when next gcc version for ia64 is
  1552. released).
  1553. Using `gcc-2.9-final':
  1554.      CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex
  1555. After `make' you will get an error that `sql/opt_range.cc' will not
  1556. compile (internal compiler error). To fix this, go to the sql directory
  1557. and type `make' again. Copy the compile line, but change -O2 to -O0.
  1558. The file should now compile.
  1559. Now you can do:
  1560.      cd ..
  1561.      make
  1562.      make_install
  1563. and *mysqld* should be ready to run.
  1564. Alpha-DEC-UNIX Notes (Tru64)
  1565. ----------------------------
  1566. If you are using egcs 1.1.2 on Digital Unix, you should upgrade to gcc
  1567. 2.95.2, as egcs on DEC has some serious bugs!
  1568. When compiling threaded programs under Digital Unix, the documentation
  1569. recommends using the `-pthread' option for `cc' and `cxx' and the
  1570. libraries `-lmach -lexc' (in addition to `-lpthread').  You should run
  1571. `configure' something like this:
  1572.      CC="cc -pthread" CXX="cxx -pthread -O" 
  1573.      ./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"
  1574. When compiling `mysqld', you may see a couple of warnings like this:
  1575.      mysqld.cc: In function void handle_connections()':
  1576.      mysqld.cc:626: passing long unsigned int *' as argument 3 of
  1577.      accept(int,sockadddr *, int *)'
  1578. You can safely ignore these warnings. They occur because `configure'
  1579. can detect only errors, not warnings.
  1580. If you start the server directly from the command line, you may have
  1581. problems with it dying when you log out.  (When you log out, your
  1582. outstanding processes receive a `SIGHUP' signal.)  If so, try starting
  1583. the server like this:
  1584.      shell> nohup mysqld [options] &
  1585. `nohup' causes the command following it to ignore any `SIGHUP' signal
  1586. sent from the terminal.  Alternatively, start the server by running
  1587. `safe_mysqld', which invokes `mysqld' using `nohup' for you.  *Note
  1588. safe_mysqld::.
  1589. If you get a problem when compiling mysys/get_opt.c, just remove the
  1590. line #define _NO_PROTO from the start of that file!
  1591. If you are using Compac's CC compiler, the following configure line
  1592. should work:
  1593.      CC="cc -pthread"
  1594.      CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host"
  1595.      CXX="cxx -pthread"
  1596.      CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host"
  1597.      export CC CFLAGS CXX CXXFLAGS
  1598.      ./configure 
  1599.      --prefix=/usr/local/mysql 
  1600.      --with-low-memory 
  1601.      --enable-large-files 
  1602.      --enable-shared=yes 
  1603.      --with-named-thread-libs="-lpthread -lmach -lexc -lc"
  1604.      gnumake
  1605. If you get a problem with libtool, when compiling with shared libraries
  1606. as above, when linking `mysql', you should be able to get around this
  1607. by issuing:
  1608.      cd mysql
  1609.      /bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF 
  1610.      -O4 -ansi_alias -ansi_args -fast -inline speed 
  1611.      -speculate all  -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R 
  1612.      -o mysql  mysql.o readline.o sql_string.o completion_hash.o 
  1613.      ../readline/libreadline.a -lcurses 
  1614.      ../libmysql/.libs/libmysqlclient.so  -lm
  1615.      cd ..
  1616.      gnumake
  1617.      gnumake install
  1618.      scripts/mysql_install_db
  1619. Alpha-DEC-OSF1 Notes
  1620. --------------------
  1621. If you have problems compiling and have DEC `CC' and `gcc' installed,
  1622. try running `configure' like this:
  1623.      CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 
  1624.      ./configure --prefix=/usr/local/mysql
  1625. If you get problems with the `c_asm.h' file, you can create and use a
  1626. 'dummy' `c_asm.h' file with:
  1627.      touch include/c_asm.h
  1628.      CC=gcc CFLAGS=-I./include 
  1629.      CXX=gcc CXXFLAGS=-O3 
  1630.      ./configure --prefix=/usr/local/mysql
  1631. Note that the following problems with the `ld' program can be fixed by
  1632. downloading the latest DEC (Compaq) patch kit from:
  1633. `http://ftp.support.compaq.com/public/unix/'.
  1634. On OSF1 V4.0D and compiler "DEC C V5.6-071 on Digital Unix V4.0 (Rev.
  1635. 878)" the compiler had some strange behavior (undefined `asm' symbols).
  1636. `/bin/ld' also appears to be broken (problems with `_exit undefined'
  1637. errors occuring while linking `mysqld').  On this system, we have
  1638. managed to compile *MySQL* with the following `configure' line, after
  1639. replacing `/bin/ld' with the version from OSF 4.0C:
  1640.      CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
  1641. With the Digital compiler "C++ V6.1-029", the following should work:
  1642.      CC=cc -pthread
  1643.      CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host
  1644.      CXX=cxx -pthread
  1645.      CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host -noexceptions -nortti
  1646.      export CC CFLAGS CXX CXXFLAGS
  1647.      ./configure --prefix=/usr/mysql/mysql --with-mysqld-ldflags=-all-static --disable-shared --with-named-thread-libs="-lmach -lexc -lc"
  1648. In some versions of OSF1, the `alloca()' function is broken. Fix this
  1649. by removing the line in `config.h' that defines `'HAVE_ALLOCA''.
  1650. The `alloca()' function also may have an incorrect prototype in
  1651. `/usr/include/alloca.h'.  This warning resulting from this can be
  1652. ignored.
  1653. `configure' will use the following thread libraries automatically:
  1654. `--with-named-thread-libs="-lpthread -lmach -lexc -lc"'.
  1655. When using `gcc', you can also try running `configure' like this:
  1656.      shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....
  1657. If you have problems with signals (*MySQL* dies unexpectedly under high
  1658. load), you may have found an OS bug with threads and signals. In this
  1659. case you can tell *MySQL* not to use signals by configuring with:
  1660.      shell> CFLAGS=-DDONT_USE_THR_ALARM 
  1661.             CXXFLAGS=-DDONT_USE_THR_ALARM 
  1662.             ./configure ...
  1663. This doesn't affect the performance of *MySQL*, but has the side effect
  1664. that you can't kill clients that are "sleeping" on a connection with
  1665. `mysqladmin kill' or `mysqladmin shutdown'.  Instead, the client will
  1666. die when it issues its next command.
  1667. With `gcc' 2.95.2, you will probably run into the following compile
  1668. error:
  1669.      sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566
  1670.      Please submit a full bug report.
  1671. To fix this you should change to the `sql' directory and do a "cut and
  1672. paste" of the last `gcc' line, but change `-O3' to `-O0' (or add `-O0'
  1673. immediately after `gcc' if you don't have any `-O' option on your
  1674. compile line.) After this is done you can just change back to the
  1675. top-level directly and run `make' again.
  1676. SGI-Irix Notes
  1677. --------------
  1678. If you are using Irix Version 6.5.3 or newer `mysqld' will only be able
  1679. to create threads if you run it as a user with `CAP_SCHED_MGT'
  1680. privileges (like `root') or give the `mysqld' server this privilege
  1681. with the following shell command:
  1682.      shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld
  1683. You may have to undefine some things in `config.h' after running
  1684. `configure' and before compiling.
  1685. In some Irix implementations, the `alloca()' function is broken. If the
  1686. `mysqld' server dies on some `SELECT' statements, remove the lines from
  1687. `config.h' that define `HAVE_ALLOC' and `HAVE_ALLOCA_H'.  If
  1688. `mysqladmin create' doesn't work, remove the line from `config.h' that
  1689. defines `HAVE_READDIR_R'. You may have to remove the `HAVE_TERM_H' line
  1690. as well.
  1691. SGI recommends that you install all of the patches on this page as a
  1692. set:
  1693. http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html
  1694. At the very minimum, you should install the latest kernel rollup, the
  1695. latest `rld' rollup, and the latest `libc' rollup.
  1696. You definately need all the POSIX patches on this page, for pthreads
  1697. support:
  1698. http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html
  1699. If you get the something like the following error when compiling
  1700. `mysql.cc':
  1701.      "/usr/include/curses.h", line 82: error(1084): invalid combination of type
  1702. then type the following in the top-level directory of your *MySQL*
  1703. source tree:
  1704.      shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
  1705.      shell> make
  1706. There have also been reports of scheduling problems.  If only one
  1707. thread is running, things go slow. Avoid this by starting another
  1708. client. This may lead to a 2-to-10-fold increase in execution speed
  1709. thereafter for the other thread.  This is a poorly understood problem
  1710. with Irix threads; you may have to improvise to find solutions until
  1711. this can be fixed.
  1712. If you are compiling with `gcc', you can use the following `configure'
  1713. command:
  1714.      CC=gcc CXX=gcc CXXFLAGS=-O3 
  1715.      ./configure --prefix=/usr/local/mysql --with-thread-safe-client --with-named-thread-libs=-lpthread
  1716. FreeBSD Notes
  1717. -------------
  1718. FreeBSD 3.x is recommended for running *MySQL* since the thread package
  1719. is much more integrated.
  1720. The easiest and therefor the preferred way to install is to use the
  1721. mysql-server and mysql-client ports available on
  1722. `http://www.freebsd.org'.
  1723. Using these gives you:
  1724.    * A working *MySQL* with all optimizations known to work on your
  1725.      version of FreeBSD enabled.
  1726.    * Automatic configuration and build.
  1727.    * Startup scripts installed in /usr/local/etc/rc.d.
  1728.    * Ability to see which files that are installed with pkg_info -L.
  1729.      And to remove them all with pkg_delete if you no longer want
  1730.      *MySQL* on that machine.
  1731. It is recomended you use MIT-pthreads on FreeBSD 2.x and native threads
  1732. on Versions 3 and up. It is possible to run with  native threads on
  1733. some late 2.2.x versions but you may encounter problems shutting down
  1734. mysqld.
  1735. The *MYSQL* Makefiles require GNU make (`gmake') to work.  If you want
  1736. to compile *MYSQL* you need to install GNU make first.
  1737. Be sure to have your name resolver setup correct. Otherwise you may
  1738. experience resolver delays or failures when connecting to mysqld.
  1739. Make sure that the `localhost' entry in the `/etc/hosts' file is
  1740. correct (otherwise you will have problems connecting to the database).
  1741. The `/etc/hosts' file should start with a line:
  1742.      127.0.0.1       localhost localhost.your.domain
  1743. If you notice that `configure' will use MIT-pthreads, you should read
  1744. the MIT-pthreads notes. *Note MIT-pthreads::.
  1745. If you get an error from `make install' that it can't find
  1746. `/usr/include/pthreads', `configure' didn't detect that you need
  1747. MIT-pthreads. This is fixed by executing these commands:
  1748.      shell> rm config.cache
  1749.      shell> ./configure --with-mit-threads
  1750. FreeBSD is also known to have a very low default file handle limit.
  1751. *Note Not enough file handles::. Uncomment the ulimit -n section in
  1752. safe_mysqld or raise the limits for the mysqld user in /etc/login.conf
  1753. (and rebuild it witg cap_mkdb /etc/login.conf.) Also be sure you set the
  1754. appropriate class for this user in the password file if you are not
  1755. using the default (use: chpass mysqld-user-name). *Note safe_mysqld::.
  1756. If you get problems with the current date in *MySQL*, setting the `TZ'
  1757. variable will probably help. *Note Environment variables::.
  1758. To get a secure and stable system you should only use FreeBSD kernels
  1759. that are marked `-STABLE'
  1760. NetBSD notes
  1761. ------------
  1762. To compile on NetBSD you need GNU `make'. Otherwise the compile will
  1763. crash when `make' tries to run `lint' on C++ files.
  1764. OpenBSD Notes
  1765. -------------
  1766. OpenBSD 2.5 Notes
  1767. .................
  1768. On OpenBSD Version 2.5, you can compile *MySQL* with native threads
  1769. with the following options:
  1770.      CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
  1771. OpenBSD 2.8 Notes
  1772. .................
  1773. Our users have reported that OpenBSD 2.8 has a threading bug which
  1774. causes problems with MySQL.  The OpenBSD Developers have fixed the
  1775. problem, but as of January 25th, 2001, it's only available in the
  1776. "-current" branch.  The symptoms of this threading bug are: slow
  1777. response, high load, high cpu usage, and crashes.
  1778. BSD/OS Notes
  1779. ------------
  1780. BSD/OS Version 2.x Notes
  1781. ........................
  1782. If you get the following error when compiling *MySQL*, your `ulimit'
  1783. value for virtual memory is too low:
  1784.      item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)':
  1785.      item_func.h:28: virtual memory exhausted
  1786.      make[2]: *** [item_func.o] Error 1
  1787. Try using `ulimit -v 80000' and run `make' again.  If this doesn't work
  1788. and you are using `bash', try switching to `csh' or `sh'; some BSDI
  1789. users have reported problems with `bash' and `ulimit'.
  1790. If you are using `gcc', you may also use have to use the
  1791. `--with-low-memory' flag for `configure' to be able to compile
  1792. `sql_yacc.cc'.
  1793. If you get problems with the current date in *MySQL*, setting the `TZ'
  1794. variable will probably help. *Note Environment variables::.
  1795. BSD/OS Version 3.x Notes
  1796. ........................
  1797. Upgrade to BSD/OS Version 3.1. If that is not possible, install
  1798. BSDIpatch M300-038.
  1799. Use the following command when configuring *MySQL*:
  1800.      shell> env CXX=shlicc++ CC=shlicc2 
  1801.             ./configure 
  1802.                 --prefix=/usr/local/mysql 
  1803.                 --localstatedir=/var/mysql 
  1804.                 --without-perl 
  1805.                 --with-unix-socket-path=/var/mysql/mysql.sock
  1806. The following is also known to work:
  1807.      shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 
  1808.             ./configure 
  1809.                 --prefix=/usr/local/mysql 
  1810.                 --with-unix-socket-path=/var/mysql/mysql.sock
  1811. You can change the directory locations if you wish, or just use the
  1812. defaults by not specifying any locations.
  1813. If you have problems with performance under heavy load, try using the
  1814. `--skip-thread-priority' option to `mysqld'!  This will run all threads
  1815. with the same priority; on BSDI Version 3.1, this gives better
  1816. performance (at least until BSDI fixes their thread scheduler).
  1817. If you get the error `virtual memory exhausted' while compiling, you
  1818. should try using `ulimit -v 80000' and run `make' again.  If this
  1819. doesn't work and you are using `bash', try switching to `csh' or `sh';
  1820. some BSDI users have reported problems with `bash' and `ulimit'.
  1821. BSD/OS Version 4.x Notes
  1822. ........................
  1823. BSDI Version 4.x has some thread-related bugs.  If you want to use
  1824. *MySQL* on this, you should install all thread-related patches. At least
  1825. M400-023 should be installed.
  1826. On some BSDI Version 4.x systems, you may get problems with shared
  1827. libraries.  The symptom is that you can't execute any client programs,
  1828. for example, `mysqladmin'.  In this case you need to reconfigure not to
  1829. use shared libraries with the `--disable-shared' option to configure.
  1830. Some customers have had problems on BSDI 4.0.1 that the `mysqld' binary
  1831. after a while can't open tables.  This is because some library/system
  1832. related bug causes `mysqld' to change current directory without asking
  1833. for this!
  1834. The fix is to either upgrade to 3.23.34 or after running `configure'
  1835. remove the line `#define HAVE_REALPATH' from `config.h' before running
  1836. make.
  1837. Note that the above means that you can't symbolic link a database
  1838. directories to another database directory or symbolic link a table to
  1839. another database on BSDI!  (Making a symbolic link to another disk is
  1840. ok).
  1841. SCO Notes
  1842. ---------
  1843. The current port is tested only on a "sco3.2v5.0.4" and "sco3.2v5.0.5"
  1844. system.  There has also been a lot of progress on a port to "sco
  1845. 3.2v4.2".
  1846. For the moment the recommended compiler on OpenServer is gcc 2.95.2.
  1847. With this you should be able to compile *MySQL* with just:
  1848.      CC=gcc CXX=gcc ./configure ... (options)
  1849.   1. For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c).
  1850.      This is necessary because GNU `gcc' 2.7.2 in Skunkware 97 does not
  1851.      have GNU `as'.  You can also use `egcs' 1.1.2 or newer
  1852.      `http://www.egcs.com/'.  If you are using `egcs' 1.1.2 you have to
  1853.      execute the following command:
  1854.           shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
  1855.   2. You need the port of GCC 2.5.x for this product and the Development
  1856.      system.  They are required on this version of SCO Unix.  You cannot
  1857.      just use the GCC Dev system.
  1858.   3. You should get the FSU Pthreads package and install it first.
  1859.      This can be found at
  1860.      `http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz'.
  1861.      You can also get a precompiled package from
  1862.      `http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz'.
  1863.   4. FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip.  Or
  1864.      OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO
  1865.      Development System installed using a good port of GCC 2.5.x ODT or
  1866.      OS 3.0 you will need a good port of GCC 2.5.x There are a lot of
  1867.      problems without a good port.  The port for this product requires
  1868.      the SCO Unix Development system.  Without it, you are missing the
  1869.      libraries and the linker that is needed.
  1870.   5. To build FSU Pthreads on your system, do the following:
  1871.        a. Run `./configure' in the `threads/src' directory and select
  1872.           the SCO OpenServer option. This command copies
  1873.           `Makefile.SCO5' to `Makefile'.
  1874.        b. Run `make'.
  1875.        c. To install in the default `/usr/include' directory, login as
  1876.           root, then `cd' to the `thread/src' directory, and run `make
  1877.           install'.
  1878.   6. Remember to use GNU `make' when making *MySQL*.
  1879.   7. If you don't start `safe_mysqld' as root, you probably will get
  1880.      only the default 110 open files per process.  `mysqld' will write
  1881.      a note about this in the log file.
  1882.   8. With SCO 3.2V5.0.5, you should use FSU Pthreads version 3.5c or
  1883.      newer.  You should also use gcc 2.95.2 or newer!
  1884.      The following `configure' command should work:
  1885.           shell> ./configure --prefix=/usr/local/mysql --disable-shared
  1886.   9. With SCO 3.2V4.2, you should use FSU Pthreads version 3.5c or
  1887.      newer.  The following `configure' command should work:
  1888.           shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" 
  1889.                  ./configure 
  1890.                      --with-debug --prefix=/usr/local/mysql 
  1891.                      --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" 
  1892.                      --with-named-curses-libs="-lcurses"
  1893.      You may get some problems with some include files. In this case,
  1894.      you can find new SCO-specific include files at
  1895.      `http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz'.
  1896.      You should unpack this file in the `include' directory of your
  1897.      *MySQL* source tree.
  1898. SCO development notes:
  1899.    * *MySQL* should automatically detect FSU Pthreads and link `mysqld'
  1900.      with `-lgthreads -lsocket -lgthreads'.
  1901.    * The SCO development libraries are re-entrant in FSU Pthreads. SCO
  1902.      claims that its libraries' functions are re-entrant, so they must
  1903.      be reentrant with FSU Pthreads. FSU Pthreads on OpenServer tries
  1904.      to use the SCO scheme to make re-entrant libraries.
  1905.    * FSU Pthreads (at least the version at `http://www.mysql.com/')
  1906.      comes linked with GNU `malloc'.  If you encounter problems with
  1907.      memory usage, make sure that `gmalloc.o' is included in
  1908.      `libgthreads.a' and `libgthreads.so'.
  1909.    * In FSU Pthreads, the following system calls are pthreads-aware:
  1910.      `read()', `write()', `getmsg()', `connect()', `accept()',
  1911.      `select()', and `wait()'.
  1912. If you want to install DBI on SCO, you have to edit the `Makefile' in
  1913. DBI-xxx and each subdirectory.
  1914. Note that the following assumes gcc 2.95.2 or newer:
  1915.      OLD:                                  NEW:
  1916.      CC = cc                               CC = gcc
  1917.      CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
  1918.      CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =
  1919.      
  1920.      LD = ld                               LD = gcc -G -fpic
  1921.      LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
  1922.      LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib
  1923.      
  1924.      LD = ld                               LD = gcc -G -fpic
  1925.      OPTIMISE = -Od                        OPTIMISE = -O1
  1926.      
  1927.      OLD:
  1928.      CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
  1929.      
  1930.      NEW:
  1931.      CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
  1932. This is because the Perl dynaloader will not load the `DBI' modules if
  1933. they were compiled with `icc' or `cc'.
  1934. Perl works best when compiled with `cc'.
  1935. SCO Unixware Version 7.0 Notes
  1936. ------------------------------
  1937. You must use a version of *MySQL* at least as recent as Version 3.22.13
  1938. because that version fixes some portability problems under Unixware.
  1939. We have been able to compile *MySQL* with the following `configure'
  1940. command on Unixware Version 7.0.1:
  1941.      CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
  1942. If you want to use `gcc', you must use `gcc' 2.95.2 or newer.
  1943. IBM-AIX notes
  1944. -------------
  1945. Automatic detection of `xlC' is missing from Autoconf, so a `configure'
  1946. command something like this is needed when compiling *MySQL* (The
  1947. example uses the IBM compiler):
  1948.      export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
  1949.      export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
  1950.      export CFLAGS="-I /usr/local/include"
  1951.      export LDLFAGS="-L /usr/local/lib"
  1952.      export CPPFLAGS=$CFLAGS
  1953.      export CXXFLAGS=$CFLAGS
  1954.      
  1955.      ./configure --prefix=/usr/local 
  1956.       --localstatedir=/var/mysql 
  1957.       --sysconfdir=/etc/mysql 
  1958.       --sbindir='/usr/local/bin' 
  1959.       --libexecdir='/usr/local/bin' 
  1960.       --enable-thread-safe-client 
  1961.       --enable-large-files
  1962. Above are the options used to compile the *MySQL* distribution that can
  1963. be found at www-frec.bull.com (http://www-frec.bull.com/).
  1964. If you change the `-O3' to `-O2' in the above configure line, you must
  1965. also remove the `-qstrict' option (this is a limitation in the IBM C
  1966. compiler).
  1967. If you are using `gcc' or `egcs' to compile *MySQL*, you *MUST* use the
  1968. `-fno-exceptions' flag, as the exception handling in `gcc'/`egcs' is
  1969. not thread safe!  (This is tested with `egcs' 1.1.).  There are also
  1970. some known problems with IBM's assembler, which may cause it to
  1971. generate bad code when used with gcc.
  1972. We recommend the following `configure' line with `egcs' and `gcc 2.95'
  1973. on AIX:
  1974.      CC="gcc -pipe -mcpu=power2 -Wa,-many" 
  1975.      CXX="gcc -pipe -mcpu=power2 -Wa,-many" 
  1976.      CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" 
  1977.      ./configure --prefix=/usr/local/mysql --with-low-memory
  1978. The `-Wa,-many' is necessary for the compile to be successful. IBM is
  1979. aware of this problem but is in to hurry to fix it because of the
  1980. workaround available.  We don't know if the `-fno-exceptions' is
  1981. required with `gcc 2.95', but as *MySQL* doesn't use exceptions and the
  1982. above option generates faster code, we recommend that you should always
  1983. use this option with `egcs / gcc'.
  1984. If you have problems with signals (*MySQL* dies unexpectedly under high
  1985. load) you may have found an OS bug with threads and signals. In this
  1986. case you can tell *MySQL* not to use signals by configuring with:
  1987.      shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc 
  1988.             CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -DDONT_USE_THR_ALARM" 
  1989.             ./configure --prefix=/usr/local/mysql --with-debug --with-low-memory
  1990. This doesn't affect the performance of *MySQL*, but has the side effect
  1991. that you can't kill clients that are "sleeping" on a connection with
  1992. `mysqladmin kill' or `mysqladmin shutdown'.  Instead, the client will
  1993. die when it issues its next command.
  1994. On some versions of AIX, linking with `libbind.a' makes `getservbyname'
  1995. core dump. This is an AIX bug and should be reported to IBM.
  1996. HP-UX Version 10.20 Notes
  1997. -------------------------
  1998. There are a couple of small problems when compiling *MySQL* on HP-UX.
  1999. We recommend that you use `gcc' instead of the HP-UX native compiler,
  2000. because `gcc' produces better code!
  2001. We recommend using gcc 2.95 on HP-UX.  Don't use high optimization
  2002. flags (like -O6) as this may not be safe on HP-UX.
  2003. Note that MIT-pthreads can't be compiled with the HP-UX compiler
  2004. because it can't compile `.S' (assembler) files.
  2005. The following configure line should work:
  2006.      CFLAGS="-DHPUX -I/opt/dce/include" CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions -fno-rtti" CXX=gcc ./configure --with-pthread --with-named-thread-libs='-ldce' --prefix=/usr/local/mysql --disable-shared
  2007. If you are compiling `gcc' 2.95 yourself, you should NOT link it with
  2008. the DCE libraries (`libdce.a' or `libcma.a') if you want to compile
  2009. *MySQL* with MIT-pthreads.  If you mix the DCE and MIT-pthreads
  2010. packages you will get a `mysqld' to which you cannot connect.  Remove
  2011. the DCE libraries while you compile `gcc' 2.95!
  2012. HP-UX Version 11.x Notes
  2013. ------------------------
  2014. For HPUX Version 11.x we recommend *MySQL* Version 3.23.15 or later.
  2015. Because of some critical bugs in the standard HPUX libraries, one should
  2016. install the following patches before trying to run MySQL on HPUX 11.0:
  2017.      PHKL_22840 Streams cumulative
  2018.      PHNE_22397 ARPA cumulative
  2019. This will solve a problem that one gets `EWOULDBLOCK' from `recv()' and
  2020. `EBADF' from `accept()' in threaded applications.
  2021. If you are using `gcc' 2.95.1 on a unpatched HPUX 11.x system, you will
  2022. get the error:
  2023.      In file included from /usr/include/unistd.h:11,
  2024.                       from ../include/global.h:125,
  2025.                       from mysql_priv.h:15,
  2026.                       from item.cc:19:
  2027.      /usr/include/sys/unistd.h:184: declaration of C function ...
  2028.      /usr/include/sys/pthread.h:440: previous declaration ...
  2029.      In file included from item.h:306,
  2030.                       from mysql_priv.h:158,
  2031.                       from item.cc:19:
  2032. The problem is that HP-UX doesn't define `pthreads_atfork()'
  2033. consistently.  It has conflicting prototypes in
  2034. `/usr/include/sys/unistd.h':184 and `/usr/include/sys/pthread.h':440 (I
  2035. post the details below).
  2036. One solution is to copy `/usr/include/sys/unistd.h' into
  2037. `mysql/include' and edit `unistd.h' and change it to match the
  2038. definition in `pthread.h'.  Here's the diff:
  2039.      183,184c183,184
  2040.      <      extern int pthread_atfork(void (*prepare)(), void (*parent)(),
  2041.      <                                                void (*child)());
  2042.      ---
  2043.      >      extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
  2044.      >                                                void (*child)(void));
  2045. After this, the following configure line should work:
  2046.      CFLAGS="-fomit-frame-pointer -O6 -fpic" CXX=gcc CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O6" ./configure --prefix=/usr/local/mysql --disable-shared
  2047. Here is some information that a HPUX Version 11.x user sent us about
  2048. compiling *MySQL* with HPUX:x compiler:
  2049.       Environment:
  2050.            proper compilers.
  2051.               setenv CC cc
  2052.               setenv CXX aCC
  2053.            flags
  2054.               setenv CFLAGS -D_REENTRANT
  2055.               setenv CXXFLAGS -D_REENTRANT
  2056.               setenv CPPFLAGS -D_REENTRANT
  2057.           % aCC -V
  2058.           aCC: HP ANSI C++ B3910B X.03.14.06
  2059.           % cc -V /tmp/empty.c
  2060.           cpp.ansi: HP92453-01 A.11.02.00 HP C Preprocessor (ANSI)
  2061.           ccom: HP92453-01 A.11.01.00 HP C Compiler
  2062.           cc: "/tmp/empty.c", line 1: warning 501: Empty source file.
  2063.      
  2064.        configuration:
  2065.           ./configure  --with-pthread        
  2066.           --prefix=/source-control/mysql     
  2067.           --with-named-thread-libs=-lpthread 
  2068.           --with-low-memory
  2069.      
  2070.          added '#define _CTYPE_INCLUDED' to include/m_ctype.h. This
  2071.          symbol is the one defined in HP's /usr/include/ctype.h:
  2072.      
  2073.           /* Don't include std ctype.h when this is included */
  2074.           #define _CTYPE_H
  2075.           #define __CTYPE_INCLUDED
  2076.           #define _CTYPE_INCLUDED
  2077.           #define _CTYPE_USING   /* Don't put names in global namespace. */
  2078.    * I had to use the compile-time flag `-D_REENTRANT' to get the
  2079.      compiler to recognize the prototype for `localtime_r'.
  2080.      Alternatively I could have supplied the prototype for
  2081.      `localtime_r'. But I wanted to catch other bugs without needing to
  2082.      run into them. I wasn't sure where I needed it, so I added it to
  2083.      all flags.
  2084.    * The optimization flags used by *MySQL* (-O3) are not recognized by
  2085.      HP's compilers. I did not change the flags.
  2086. Mac OS X Notes
  2087. --------------
  2088. Mac OS X Public beta
  2089. ....................
  2090. *MySQL* should work without any probelms on Mac OS X public beta.
  2091. (Darwin); You don't need the pthread patches for this os!
  2092. Mac OS X Server
  2093. ...............
  2094. Before trying to configure *MySQL* on Mac OS X server you must first
  2095. first install the pthread package from
  2096. `http://www.prnet.de/RegEx/mysql.html'.  Note that this is not neeaded
  2097. Our binary for Mac OS X is compiled on Rhapsody 5.5 with the following
  2098. configure line:
  2099.      CC=gcc CFLAGS="-O2 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql "--with-comment=Official MySQL binary" --with-extra-charsets=complex  --disable-shared
  2100. You might want to also add aliases to your shell's resource file to
  2101. access `mysql' and `mysqladmin' from the command line:
  2102.      alias mysql '/usr/local/mysql/bin/mysql'
  2103.      alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
  2104. BeOS Notes
  2105. ----------
  2106. We are really interested in getting *MySQL* to work on BeOS, but
  2107. unfortunately we don't have any person who knows BeOS or has time to do
  2108. a port.