INSTALL-SOURCE
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:201k
源码类别:

MySQL数据库

开发平台:

Visual C++

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