2.7 Installing MySQL on Other Unix-Like Systems
===============================================

This section covers the installation of MySQL binary distributions
that are provided for various platforms in the form of compressed
`tar' files (files with a `.tar.gz'    extension). See *Note
mysql-binaries:: for a detailed list.

To obtain MySQL, see *Note getting-mysql::.

MySQL `tar' file binary distributions have names of    the form
`mysql-VERSION-OS.tar.gz',    where `VERSION' is a    number (for
example, `4.0.17'), and    OS indicates the type of operating system
for which the distribution is intended (for example,
`pc-linux-i686').

In addition to these generic packages, we also offer binaries in
platform-specific package formats for selected platforms. See    *Note
quick-standard-installation:: for more information on    how to install
these.

You need the following tools to install a MySQL    `tar' file binary
distribution:

   *      GNU `gunzip' to uncompress the distribution.

   *      A reasonable `tar' to unpack the distribution. GNU     `tar'
     is known to work. Some operating systems come     with a
     pre-installed version of `tar' that is known     to have problems.
     For example, Mac OS X `tar' and     Sun `tar' are known to have
     problems with long     filenames. On Mac OS X, you can use the
     pre-installed     `gnutar' program. On other systems with a
     deficient     `tar', you should install GNU     `tar' first.


If you run into problems, _please always use    `mysqlbug'_ when
posting questions to a    MySQL mailing list. Even if the problem isn't
a bug,    `mysqlbug' gathers system information that helps    others
solve your problem. By not using `mysqlbug',    you lessen the
likelihood of getting a solution to your problem. You    can find
`mysqlbug' in the `bin'    directory after you unpack the distribution.
See    *Note bug-reports::.

The basic commands you must execute to install and use a MySQL binary
distribution are:

     shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> cd /usr/local
     shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
     shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
     shell> cd mysql
     shell> scripts/mysql_install_db --user=mysql
     shell> chown -R root  .
     shell> chown -R mysql data
     shell> chgrp -R mysql .
     shell> bin/mysqld_safe --user=mysql &

For versions of MySQL older than 4.0, substitute    `bin/safe_mysqld'
for    `bin/mysqld_safe' in the final command.

*Note*: This procedure does not set up    any passwords for MySQL
accounts. After following the procedure,    proceed to *Note
post-installation::.

A more detailed version of the preceding description for installing a
binary distribution follows:

  1.      Add a login user and group for `mysqld' to run as:

          shell> groupadd mysql
          shell> useradd -g mysql mysql

     These commands add the `mysql' group and the     `mysql' user. The
     syntax for     `useradd' and `groupadd' may     differ slightly on
     different versions of Unix. They may also be     called `adduser'
     and `addgroup'.

     You might want to call the user and group something else instead of
        `mysql'. If so, substitute the appropriate name in     the
     following steps.

  2.      Pick the directory under which you want to unpack the
     distribution,     and change location into it. In the following
     example, we unpack the     distribution under `/usr/local'. (The
      instructions, therefore, assume that you have permission to
     create     files and directories in `/usr/local'. If that
     directory is protected, you need to perform the installation as
     `root'.)

          shell> cd /usr/local

  3.      Obtain a distribution file from one of the sites listed in
     *Note getting-mysql::. For a given release, binary
     distributions for all platforms are built from the same MySQL
     source     distribution.

  4.      Unpack the distribution, which creates the installation
     directory.      Then create a symbolic link to that directory:

          shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
          shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql

     The `tar' command creates a directory named     `mysql-VERSION-OS'.
        The `ln' command makes a symbolic link to that     directory.
     This lets you refer more easily to the installation     directory
     as `/usr/local/mysql'.

     With GNU `tar', no separate invocation of     `gunzip' is
     necessary. You can replace the first     line with the following
     alternative command to uncompress and     extract the distribution:

          shell> tar zxvf /PATH/TO/MYSQL-VERSION-OS.tar.gz

  5.      Change location into the installation directory:

          shell> cd mysql

     You can find several files and subdirectories in the     `mysql'
     directory. The most important for     installation purposes are
     the `bin' and     `scripts' subdirectories.

        *       `bin'

          This directory contains client programs and the server. You
          should      add the full pathname of this directory to your
            `PATH' environment variable so that your shell      finds
          the MySQL programs properly. See      *Note
          environment-variables::.

        *       `scripts'

          This directory contains the `mysql_install_db'      script
          used to initialize the `mysql' database      containing the
          grant tables that store the server access      permissions.


  6.      If you haven't installed MySQL before, you must create the
     MySQL     grant tables:

          shell> scripts/mysql_install_db --user=mysql

     If you run the command as `root', you should use     the `--user'
     option as shown. The value of the     option should be the name of
     the login account that you created in     the first step to use
     for running the server. If you run the command     while logged in
     as that user, you can omit the     `--user' option.

     Note that for MySQL versions older than 3.22.10,
     `mysql_install_db' left the server running after     creating the
     grant tables. This is no longer true; you need to     restart the
     server after performing the remaining steps in this     procedure.

  7.      Change the ownership of program binaries to `root'     and
     ownership of the data directory to the user that you run
     `mysqld' as. Assuming that you are located in the     installation
     directory (`/usr/local/mysql'), the     commands look like this:

          shell> chown -R root  .
          shell> chown -R mysql data
          shell> chgrp -R mysql .

     The first command changes the owner attribute of the files to the
       `root' user. The second changes the owner attribute     of the
     data directory to the `mysql' user. The     third changes the
     group attribute to the `mysql'     group.

  8.      If you would like MySQL to start automatically when you boot
     your     machine, you can copy `support-files/mysql.server'     to
     the location where your system has its startup files. More
     information can be found in the     `support-files/mysql.server'
     script itself and in     *Note automatic-start::.

  9.      You can set up new accounts using the
     `bin/mysql_setpermission' script if you install the     `DBI' and
     `DBD::mysql' Perl     modules. For instructions, see *Note
     perl-support::.

 10.      If you would like to use `mysqlaccess' and have the     MySQL
     distribution in some non-standard place, you must change the
     location where `mysqlaccess' expects to find the     `mysql'
     client. Edit the     `bin/mysqlaccess' script at approximately line
        18. Search for a line that looks like this:

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

     Change the path to reflect the location where     `mysql' actually
     is stored on your system. If you     do not do this, you get a
     `Broken pipe' error when     you run `mysqlaccess'.


After everything has been unpacked and installed, you should test
your distribution.

You can start the MySQL server with the following command:

     shell> bin/mysqld_safe --user=mysql &

For versions of MySQL older than 4.0, substitute    `bin/safe_mysqld'
for    `bin/mysqld_safe' in the command.

More information about `mysqld_safe' is given in    *Note mysqld-safe::.

*Note*: The accounts that are listed    in the MySQL grant tables
initially have no passwords. After starting    the server, you should
set up passwords for them using the    instructions in *Note
post-installation::.

