Installing a MySQL Binary Distribution
--------------------------------------

See also *Note Windows binary installation::, *Note Linux-RPM::, and
*Note Building clients::.

You need the following tools to install a MySQL binary distribution:

   * GNU `gunzip' to uncompress the distribution.

   * A reasonable `tar' to unpack the distribution. GNU `tar' is known
     to work.  Sun `tar' is known to have problems.

An alternative installation method under Linux is to use RPM-based (RPM
Package Manager) distributions.  *Note Linux-RPM::.

If you run into problems, *please always use `mysqlbug'* when posting
questions to <mysql@lists.mysql.com>.  Even if the problem isn't a bug,
`mysqlbug' gathers system information that will help others solve your
problem.  By not using `mysqlbug', you lessen the likelihood of getting
a solution to your problem!  You will find `mysqlbug' in the `bin'
directory after you unpack the distribution.  *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
     shell> chown -R root  .
     shell> chown -R mysql data
     shell> chgrp -R mysql .
     shell> bin/safe_mysqld --user=mysql &
     or
     shell> bin/mysqld_safe --user=mysql &
     if you are running MySQL 4.x

You can add new users using the `bin/mysql_setpermission' script if you
install the `DBI' and `Msql-Mysql-modules' Perl modules.

A more detailed description follows.

To install a binary distribution, follow these steps, then proceed to
*Note Post-installation::, for post-installation setup and testing:

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

  2. Obtain a distribution file from one of the sites listed in *Note
     Getting MySQL: Getting MySQL.

     MySQL binary distributions are provided as compressed `tar'
     archives and have names like `mysql-VERSION-OS.tar.gz', where
     `VERSION' is a number (for example, `3.21.15'), and `OS' indicates
     the type of operating system for which the distribution is intended
     (for example, `pc-linux-gnu-i586').

  3. If you see a binary distribution marked with the `-max' suffix,
     this means that the binary has support for transaction-safe tables
     and other features. *Note `mysqld-max': mysqld-max.  Note that all
     binaries are built from the same MySQL source distribution.

  4. Add a 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 may wish to call the user and group something
     else instead of `mysql'.

  5. Change into the intended installation directory:

          shell> cd /usr/local

  6. Unpack the distribution and create the installation directory:

          shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
          shell> ln -s full-path-to-mysql-VERSION-OS mysql

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

  7. Change into the installation directory:

          shell> cd mysql

     You will 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. *Note Environment variables::.

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

  8. 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 will get a
     `Broken pipe' error when you run `mysqlaccess'.

  9. Create the MySQL grant tables (necessary only if you haven't
     installed MySQL before):
          shell> scripts/mysql_install_db

     Note that MySQL versions older than Version 3.22.10 started the
     MySQL server when you run `mysql_install_db'.  This is no longer
     true!

 10. Change ownership of binaries to `root' and ownership of the data
     directory to the user that you will run `mysqld' as:

          shell> chown -R root  /usr/local/mysql/.
          shell> chown -R mysql /usr/local/mysql/data
          shell> chgrp -R mysql /usr/local/mysql/.

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

 11. If you want to install support for the Perl `DBI'/`DBD' interface,
     see *Note Perl support::.

 12. 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::.


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

You can start the MySQL server with the following command:

     shell> bin/safe_mysqld --user=mysql &

Now proceed to *Note `safe_mysqld': safe_mysqld, and *Note
Post-installation::.

