2.2. Installing MySQL from Generic Binaries on Unix/Linux

   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).

   To obtain MySQL, see Section 2.1.3, "How to Get MySQL."

   Oracle provides a set of binary distributions of MySQL. In
   addition to binaries provided in platform-specific package
   formats, we offer binary distributions for a number of
   platforms in the form of compressed tar files (.tar.gz
   files). For Windows distributions, see Section 2.4,
   "Installing MySQL on Microsoft Windows."

   On Unix, a tar file binary distribution is installed by
   unpacking it at the installation location you choose
   (typically /usr/local/mysql) and creates the following
   directories in that location.

   Table 2.2. MySQL Installation Layout for Generic Unix/Linux
   Binary Package
   Directory Contents of Directory
   bin Client programs and the mysqld server
   data Log files, databases
   docs Manual in Info format
   man Unix manual pages
   include Include (header) files
   lib Libraries
   scripts mysql_install_db
   share/mysql Miscellaneous support files, including error
   messages, sample configuration files, SQL for database
   installation
   sql-bench Benchmarks

   Debug versions of the mysqld binary are available as
   mysqld-debug. To compile a debug version of MySQL from a
   source distribution, you should add --with-debug or
   --with-debug=full to the configure command used to configure
   the distribution and remove any -fomit-frame-pointer options.
   For more information on compiling from source, see Section
   2.3, "Installing MySQL from a Source Distribution."

   MySQL tar file binary distributions have names of the form
   mysql-VERSION-OS.tar.gz, where VERSION is a number (for
   example, 5.1.53), 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 the platform-specific sections 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
       preinstalled version of tar that is known to have
       problems. For example, the tar provided with early
       versions of Mac OS X, SunOS 4.x, Solaris 8, Solaris 9,
       Solaris 10 and OpenSolaris, and HP-UX are known to have
       problems with long file names.

          + On Mac OS X, you can use the preinstalled gnutar
            program.

          + On Solaris 10 and OpenSolaris you can use the
            preinstalled gtar.

          + On other systems with a deficient tar, you should
            install GNU tar first.

   Warning

   If you have previously installed a MySQL installation using
   your operating system native package management system, such
   as yum or apt-get, you may experience problems installing
   using a native binary. Make sure your previous MySQL previous
   installation has been removed entirely (using your package
   management system), and that any additional files, such as
   old versions of your data files, have also been removed. You
   should also check the existence of configuration files such
   as /etc/my.cnf or the /etc/mysql directory have been deleted.

   If you run into problems and need to file a bug report,
   please use the instructions in Section 1.7, "How to Report
   Bugs or Problems."

   The basic commands that you must execute to install and use a
   MySQL binary distribution are shown following.
   Note

   The following process assumes that you have root
   (administrator) access to your system. Alternatively you can
   prefix each command using the sudo (Linux) or pfexec
   (OpenSolaris) command.

   This procedure does not set up any passwords for MySQL
   accounts. After following the procedure, proceed to Section
   2.12, "Post-Installation Setup and Testing."
shell> groupadd mysql
shell> useradd -r -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> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> cp /usr/local/mysql/support-files/my-small/etc/my.cnf # Optiona
l
shell> bin/mysqld_safe --user=mysql &
shell> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysq
l.server # Optional

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

   The following process assumes that you have root
   (administrator) access to your system. Alternatively you can
   prefix each command using the sudo (Linux) or pfexec
   (OpenSolaris) command.

   This procedure does not set up any passwords for MySQL
   accounts. After following the procedure, proceed to Section
   2.12, "Post-Installation Setup and Testing."

    1. If your system does not already have a user and group for
       mysqld to run as, you may need to create one.
shell> groupadd mysql
shell> useradd -r -g mysql mysql

       Note
       The above will create a user that has login permissions
       to your server. You may wish to disable the account, as
       the user is only required for ownership, not login,
       purposes. You can do this on Linux by using the -r
       command-line option.
       These commands add the mysql group and the mysql user.
       The syntax for useradd and groupadd may differ slightly
       on different versions of Unix, or they may have different
       names such as 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 must
       perform the installation as root.)
shell> cd /usr/local


    3. Obtain a distribution file using the instructions in
       Section 2.1.3, "How to Get 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 will find several files and subdirectories in the
       mysql directory. The most important for installation
       purposes are the bin and scripts subdirectories:

          + The bin directory contains client programs and the
            server. You should add the full path name of this
            directory to your PATH environment variable so that
            your shell finds the MySQL programs properly. See
            Section 2.14, "Environment Variables."

          + The scripts directory contains the mysql_install_db
            script used to initialize the mysql database
            containing the grant tables that store the server
            access permissions.

    6. Ensure that the distribution contents are accessible to
       mysql. If you unpacked the distribution as mysql, no
       further action is required. If you unpacked the
       distribution as root, its contents will be owned by root.
       Change its ownership to mysql by executing the following
       commands as root in the installation directory:
shell> chown -R mysql .
shell> chgrp -R mysql .

       The first command changes the owner attribute of the
       files to the mysql user. The second changes the group
       attribute to the mysql group.

    7. If you have not installed MySQL before, you must create
       the MySQL data directory and initialize the grant tables:
shell> scripts/mysql_install_db --user=mysql

       If you run the command as root, include the --user option
       as shown. If you run the while logged in as that user,
       you can omit the --user option.
       The command should create the data directory and its
       contents with mysql as the owner.
       After creating or updating the grant tables, you need to
       restart the server manually.

    8. Most of the MySQL installation can be owned by root if
       you like. The exception is that the data directory must
       be owned by mysql. To accomplish this, run the following
       commands as root in the installation directory:
shell> chown -R root .
shell> chown -R mysql data


    9. You may want to optionally copy one of the provided
       configuration files from the support-files directory into
       your /etc/ directory. There are different sample
       configuration files for different use cases, server
       types, and CPU and RAM configurations. If you want to use
       one of these standard files, you should copy it to
       /etc/my.cnf, or /etc/mysql/my.cnf and edit and check the
       configuration before starting your MySQL server for the
       first time.
       If you do not copy one of the standard configuration
       files, the MySQL server will be started with the default
       settings.
   10. If the plugin directory is writable by the server, it may
       be possible for a user to write executable code to a file
       in the directory using SELECT ... INTO DUMPFILE. This can
       be prevented by making plugin_dir read only to the server
       or by setting --secure-file-priv to a directory where
       SELECT writes can be made safely.
   11. If you want 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 Section
       2.12.1.2, "Starting and Stopping MySQL Automatically."
   12. You can set up new accounts using the
       bin/mysql_setpermission script if you install the DBI and
       DBD::mysql Perl modules. See Section 4.6.14,
       "mysql_setpermission --- Interactively Set Permissions in
       Grant Tables." For Perl module installation instructions,
       see Section 2.15, "Perl Installation Notes."
   13. If you would like to use mysqlaccess and have the MySQL
       distribution in some nonstandard location, 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,
       a Broken pipe error will occur when you run mysqlaccess.

   After everything has been unpacked and installed, you should
   test your distribution. To start the MySQL server, use the
   following command:
shell> bin/mysqld_safe --user=mysql &

   If you run the command as root, you must use the --user
   option as shown. The value of the option is 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
   mysql, you can omit the --user option.

   If the command fails immediately and prints mysqld ended, you
   can find some information in the host_name.err file in the
   data directory.

   More information about mysqld_safe is given in Section 4.3.2,
   "mysqld_safe --- MySQL Server Startup Script."
   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
   Section 2.12, "Post-Installation Setup and Testing."
