Table of Contents
Linux supports a number of different solutions for installing MySQL. We recommend that you use one of the distributions from Oracle, for which several methods for installation are available:
Installing with Yum using the MySQL Yum repository. For details, see Section 2.1, “Installing MySQL on Linux Using the MySQL Yum Repository”.
Installing with APT using the MySQL APT Repository. For details, see Section 2.3, “Installing MySQL on Linux Using the MySQL APT Repository”.
Installing with Zypper using the MySQL SLES Repository. For details, see Section 2.4, “Installing MySQL on Linux Using the MySQL SLES Repository”.
Installing using a precompiled RPM package. For more information, see Section 2.5, “Installing MySQL on Linux Using RPM Packages from Oracle”.
Installing using a precompiled Debian package. For more information, see Section 2.6, “Installing MySQL on Linux Using Debian Packages from Oracle”.
Installing from a generic binary package in
.tar.gz format. See
Chapter 1, Installing MySQL on Unix/Linux Using Generic Binaries for more information.
Installing using Oracle's Unbreakable Linux Network (ULN). For more information, see Installing MySQL Using Unbreakable Linux Network (ULN).
Extracting and compiling MySQL from a source distribution. For detailed instructions, see Installing MySQL from Source.
As an alternative, you can use the package manager on your system to automatically download and install MySQL with packages from the native software repositories of your Linux distribution. These native packages are often several versions behind the currently available release. You will also normally be unable to install development milestone releases (DMRs), as these are not usually made available in the native repositories. For more information on using the native package installers, see Section 2.7, “Installing MySQL on Linux from the Native Software Repositories”.
For many Linux installations, you will want to set up MySQL to be
started automatically when your machine starts. Many of the native
package installations perform this operation for you, but for
source, binary and RPM solutions you may need to set this up
separately. The required script, mysql.server,
can be found in the support-files directory
under the MySQL installation directory or in a MySQL source tree.
You can install it as /etc/init.d/mysql for
automatic MySQL startup and shutdown. See
mysql.server — MySQL Server Startup Script.
MySQL provides a Yum-style software repository for the following Linux platforms:
EL5, EL6, and EL7-based platforms (for example, the corresponding versions of Red Hat Enterprise Linux, Oracle Linux, and CentOS)
Fedora 23 and 24
Currently, the MySQL Yum repository for the above-mentioned platforms provides RPM packages for installing the MySQL server, client, MySQL Workbench, MySQL Utilities, Connector/ODBC, and Connector/Python (not all packages are available for all the platforms; see Installing Additional MySQL Products and Components with Yum for details).
As a popular, open-source software, MySQL, in its original or re-packaged form, is widely installed on many systems from various sources, including different software download sites, software repositories, and so on. The following instructions assume that MySQL is not already installed on your system using a third-party-distributed RPM package; if that is not the case, follow the instructions given in Upgrading MySQL with the MySQL Yum Repository or Section 2.2, “Replacing a Third-Party Distribution of MySQL Using the MySQL Yum Repository”.
Follow the steps below to install the latest GA version of MySQL with the MySQL Yum repository:
First, add the MySQL Yum repository to your system's repository list. This is a one-time operation, which can be performed by installing an RPM provided by MySQL. Follow these steps:
Go to the Download MySQL Yum Repository page (http://dev.mysql.com/downloads/repo/yum/) in the MySQL Developer Zone.
Select and download the release package for your platform.
Install the downloaded release package with the following
command (except for EL5-based systems), replacing
platform-and-version-specific-package-name
with the name of the downloaded RPM package:
shell> sudo yum localinstall platform-and-version-specific-package-name.rpm
For an EL6-based system, the command is in the form of:
shell> sudo yum localinstall mysql57-community-release-el6-{version-number}.noarch.rpm
For an EL7-based system:
shell> sudo yum localinstall mysql57-community-release-el7-{version-number}.noarch.rpm
For Fedora 23:
shell> sudo dnf install mysql57-community-release-fc23-{version-number}.noarch.rpm
For Fedora 24:
shell> sudo dnf install mysql57-community-release-fc24-{version-number}.noarch.rpm
For an EL5-based system, use the following command instead:
shell> sudo rpm -Uvh mysql57-community-release-el5-{version-number}.noarch.rpm
The installation command adds the MySQL Yum repository to your system's repository list and downloads the GnuPG key to check the integrity of the software packages. See Signature Checking Using GnuPG for details on GnuPG key checking.
You can check that the MySQL Yum repository has been successfully added by the following command (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum repolist enabled | grep "mysql.*-community.*"
Once the MySQL Yum repository is enabled on your system, any system-wide update by the yum update command (or dnf upgrade for dnf-enabled systems) will upgrade MySQL packages on your system and also replace any native third-party packages, if Yum finds replacements for them in the MySQL Yum repository; see Upgrading MySQL with the MySQL Yum Repository and, for a discussion on some possible effects of that on your system, see Upgrading the Shared Client Libraries.
When using the MySQL Yum repository, the latest GA series (currently MySQL 5.7) is selected for installation by default. If this is what you want, you can skip to the next step, Installing MySQL.
Within the MySQL Yum repository, different release series of the MySQL Community Server are hosted in different subrepositories. The subrepository for the latest GA series (currently MySQL 5.7) is enabled by default, and the subrepositories for all other series (for example, the MySQL 5.6 series) are disabled by default. Use this command to see all the subrepositories in the MySQL Yum repository, and see which of them are enabled or disabled (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum repolist all | grep mysql
To install the latest release from the latest GA series, no configuration is needed. To install the latest release from a specific series other than the latest GA series, disable the subrepository for the latest GA series and enable the subrepository for the specific series before running the installation command. If your platform supports yum-config-manager, you can do that by issuing these commands, which disable the subrepository for the 5.7 series and enable the one for the 5.6 series:
shell>sudo yum-config-manager --disable mysql57-communityshell>sudo yum-config-manager --enable mysql56-community
For dnf-enabled platforms:
shell>sudo dnf config-manager --disable mysql57-communityshell>sudo dnf config-manager --enable mysql56-community
Besides using yum-config-manager or the
dnf config-manager command, you can also
select a release series by editing manually the
/etc/yum.repos.d/mysql-community.repo
file. This is a typical entry for a release series'
subrepository in the file:
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Find the entry for the subrepository you want to configure,
and edit the enabled option. Specify
enabled=0 to disable a subrepository, or
enabled=1 to enable a subrepository. For
example, to install MySQL 5.6, make sure you have
enabled=0 for the above subrepository entry
for MySQL 5.7, and have enabled=1 for the
entry for the 5.6 series:
# Enable to use MySQL 5.6 [mysql56-community] name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
You should only enable subrepository for one release series at any time. When subrepositories for more than one release series are enabled, the latest series will be used by Yum.
Verify that the correct subrepositories have been enabled and disabled by running the following command and checking its output (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum repolist enabled | grep mysql
Install MySQL by the following command (for dnf-enabled systems, replace yum in the command with dnf):
shell> sudo yum install mysql-community-server
This installs the package for MySQL server
(mysql-community-server) and also
packages for the components required to run the server,
including packages for the client
(mysql-community-client), the common
error messages and character sets for client and server
(mysql-community-common), and the shared
client libraries (mysql-community-libs).
Start the MySQL server with the following command:
shell> sudo service mysqld start
Starting mysqld:[ OK ]
You can check the status of the MySQL server with the following command:
shell> sudo service mysqld status
mysqld (pid 3066) is running.
At the initial start up of the server, the following happens, given that the data directory of the server is empty:
The server is initialized.
An SSL certificate and key files are generated in the data directory.
The validate_password plugin is installed and enabled.
A superuser account 'root'@'localhost is
created. A password for the superuser is set and stored in the
error log file. To reveal it, use the following command:
shell> sudo grep 'temporary password' /var/log/mysqld.log
Change the root password as soon as possible by logging in with the generated, temporary password and set a custom password for the superuser account:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters.
For more information on the postinstallation procedures, see Postinstallation Setup and Testing.
Compatibility Information for EL7-based platforms: The following RPM packages from the native software repositories of the platforms are incompatible with the package from the MySQL Yum repository that installs the MySQL server. Once you have installed MySQL using the MySQL Yum repository, you will not be able to install these packages (and vice versa).
akonadi-mysql
You can use Yum to install and manage individual components of MySQL. Some of these components are hosted in sub-repositories of the MySQL Yum repository: for example, the MySQL Connectors are to be found in the MySQL Connectors Community sub-repository, and the MySQL Workbench in MySQL Tools Community. You can use the following command to list the packages for all the MySQL components available for your platform from the MySQL Yum repository (for dnf-enabled systems, replace yum in the command with dnf):
shell> sudo yum --disablerepo=\* --enablerepo='mysql*-community*' list available
Install any packages of your choice with the following command,
replacing package-name with name of the
package (for dnf-enabled systems, replace yum
in the command with dnf):
shell> sudo yum install package-name
For example, to install MySQL Workbench on Fedora 24:
shell> sudo dnf install mysql-workbench-community
To install the shared client libraries (for dnf-enabled systems, replace yum in the command with dnf):
shell> sudo yum install mysql-community-libs
Besides installation, you can also perform updates for MySQL products and components using the MySQL Yum repository. See Upgrading MySQL with the MySQL Yum Repository for details.
For supported Yum-based platforms (see Section 2.1, “Installing MySQL on Linux Using the MySQL Yum Repository”, for a list), you can replace a third-party distribution of MySQL with the latest GA release (from the MySQL 5.7 series currently) from the MySQL Yum repository. According to how your third-party distribution of MySQL was installed, there are different steps to follow:
If you have installed a third-party distribution of MySQL from a native software repository (that is, a software repository provided by your own Linux distribution), follow these steps:
To avoid loss of data, always back up your database before trying to replace your MySQL installation using the MySQL Yum repository. See Backup and Recovery, on how to back up your database.
Add the MySQL Yum repository to your system's repository list by following the instructions given in Adding the MySQL Yum Repository.
By design, the MySQL Yum repository will replace your native, third-party MySQL with the latest GA release (from the MySQL 5.7 series currently) from the MySQL Yum repository when you perform a yum update command (or dnf upgrade for dnf-enabled systems) on the system, or a yum update mysql-server (or dnf upgrade mysql-server for dnf-enabled systems).
After updating MySQL using the Yum repository, applications compiled with older versions of the shared client libraries should continue to work. However, if you want to recompile applications and dynamically link them with the updated libraries, see Upgrading the Shared Client Libraries, for some special considerations.
If you have installed a third-party distribution of MySQL from a nonnative software repository (that is, a software repository not provided by your own Linux distribution), follow these steps:
To avoid loss of data, always back up your database before trying to replace your MySQL installation using the MySQL Yum repository. See Backup and Recovery, on how to back up your database.
Before you can use the MySQL Yum repository for installing MySQL, you must stop your system from receiving MySQL packages from any third-party, nonnative Yum repositories.
For example, if you have installed MariaDB using their own software repository, get a list of the installed MariaDB packages using the following command (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum list installed mariadb\*
MariaDB-common.i686 10.0.4-1 @mariadb
MariaDB-compat.i686 10.0.4-1 @mariadb
MariaDB-server.i686 10.0.4-1 @mariadb
From the command output, we can identify the installed
packages (MariaDB-common,
MariaDB-compat, and
MariaDB-server) and the source of them (a
nonnative software repository named
mariadb).
As another example, if you have installed Percona using their own software repository, get a list of the installed Percona packages using the following command (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum list installed Percona\*
Percona-Server-client-55.i686 5.5.39-rel36.0.el6 @percona-release-i386
Percona-Server-server-55.i686 5.5.39-rel36.0.el6 @percona-release-i386
Percona-Server-shared-55.i686 5.5.39-rel36.0.el6 @percona-release-i386
percona-release.noarch 0.1-3 @/percona-release-0.1-3.noarch
From the command output, we can identify the installed
packages (Percona-Server-client,
Percona-Server-server,
Percona-Server-shared, and
percona-release.noarch) and the source of
them (a nonnative software repository named
percona-release).
If you are not sure which third-party MySQL fork you have installed, this command should reveal it and list the RPM packages installed for it, as well as the third-party repository that supplies the packages (for dnf-enabled systems, replace yum in the command with dnf):
shell> yum --disablerepo=\* provides mysql\*
The next step is to stop Yum from receiving packages from the nonnative repository. If the yum-config-manager utility is supported on your platform, you can, for example, use this command for stopping delivery from MariaDB (on dnf-enabled systems, use the dnf config-manager command instead of yum-config-manager):
shell> sudo yum-config-manager --disable mariadb
Use this command for stopping delivery from Percona (on dnf-enabled systems, use the dnf config-manager command instead of yum-config-manager):
shell> sudo yum-config-manager --disable percona-release
You can perform the same task by removing the entry for the
software repository existing in one of the repository files
under the /etc/yum.repos.d/ directory.
This is how the entry typically looks for MariaDB:
[mariadb] name = MariaDB baseurl =[base URL for repository]gpgkey =[URL for GPG key]gpgcheck =1
The entry is usually found in the file
/etc/yum.repos.d/MariaDB.repo for
MariaDB—delete the file, or remove entry from it (or
from the file in which you find the entry).
This step is not necessary for an installation that was
configured with a Yum repository release package (like
Percona) if you are going to remove the release package
(percona-release.noarch for Percona),
as shown in the uninstall command for Percona in Step 3
below.
The nonnative third-party MySQL distribution must first be uninstalled before you can use the MySQL Yum repository to install MySQL. For the MariaDB packages found in Step 2 above, uninstall them with the following command (for dnf-enabled systems, replace yum in the command with dnf):
shell> sudo yum remove MariaDB-common MariaDB-compat MariaDB-server
For the Percona packages we found in Step 2 above (for dnf-enabled systems, replace yum in the command with dnf):
shell> sudo yum remove Percona-Server-client-55 Percona-Server-server-55 \
Percona-Server-shared-55.i686 percona-release
Then, install MySQL with the MySQL Yum repository by following the instructions given in Section 2.1, “Installing MySQL on Linux Using the MySQL Yum Repository”: .
If you have chosen to replace your third-party MySQL distribution with a newer version of MySQL from the MySQL Yum repository, remember to run mysql_upgrade after the server starts, to check and possibly resolve any incompatibilities between the old data and the upgraded software. mysql_upgrade also performs other functions; see mysql_upgrade — Check and Upgrade MySQL Tables for details.
For EL7-based platforms: See Compatibility Information for EL7-based platforms.
The MySQL APT repository provides deb
packages for installing and managing the MySQL server, client, and
other components on the following Linux platforms: :
Debian 7.x (“wheezy”)
Debian 8.x (“jessie”)
Ubuntu 12.04 LTS (“Precise Pangolin”)
Ubuntu 14.04 LTS (“Trusty Tahr”)
Ubuntu 15.10 (“Wily Werewolf”)
Instructions for using the MySQL APT Repository are available in A Quick Guide to Using the MySQL APT Repository.
The MySQL SLES repository provides RPM packages for installing and managing the MySQL server, client, and other components on SUSE Enterprise Linux Server.
Instructions for using the MySQL SLES repository are available in A Quick Guide to Using the MySQL SLES Repository.
The MySQL SLES repository is now in development release. We encourage you to try it and provide us with feedback. Please report any bugs or inconsistencies you observe to our Bugs Database.
The recommended way to install MySQL on RPM-based Linux distributions is by using the RPM packages provided by Oracle. There are two sources for obtaining them, for the Community Edition of MySQL:
From the MySQL software repositories:
The MySQL Yum repository (see Section 2.1, “Installing MySQL on Linux Using the MySQL Yum Repository” for details).
The MySQL SLES repository (see Section 2.4, “Installing MySQL on Linux Using the MySQL SLES Repository” for details).
From the Download MySQL Community Server page in the MySQL Developer Zone.
RPM distributions of MySQL are also provided by other vendors. Be aware that they may differ from those built by Oracle in features, capabilities, and conventions (including communication setup), and that the installation instructions in this manual do not necessarily apply to them. The vendor's instructions should be consulted instead.
If you have such a third-party distribution of MySQL running on your system and now want to migrate to Oracle's distribution using the RPM packages downloaded from the MySQL Developer Zone, see Compatibility with RPM Packages from Other Vendors below. The preferred method of migration, however, is to use the MySQL Yum repository or MySQL SLES repository.
RPM packages for MySQL are listed in the following tables:
Table 2.1 RPM Packages for MySQL Community Edition
| Package Name | Summary |
|---|---|
mysql-community-server | Database server and related tools |
mysql-community-client | MySQL client applications and tools |
mysql-community-common | Common files for server and client libraries |
mysql-community-devel | Development header files and libraries for MySQL database client applications |
mysql-community-libs | Shared libraries for MySQL database client applications |
mysql-community-libs-compat | Shared compatibility libraries for previous MySQL installations |
mysql-community-embedded | MySQL embedded library |
mysql-community-embedded-devel | Development header files and libraries for MySQL as an embeddable library |
mysql-community-test | Test suite for the MySQL server |
Table 2.2 RPM Packages for the MySQL Enterprise Edition
| Package Name | Summary |
|---|---|
mysql-commercial-server | Database server and related tools |
mysql-commercial-client | MySQL client applications and tools |
mysql-commercial-common | Common files for server and client libraries |
mysql-commercial-devel | Development header files and libraries for MySQL database client applications |
mysql-commercial-libs | Shared libraries for MySQL database client applications |
mysql-commercial-libs-compat | Shared compatibility libraries for previous MySQL installations |
mysql-commercial-embedded | MySQL embedded library |
mysql-commercial-embedded-devel | Development header files and libraries for MySQL as an embeddable library |
mysql-commercial-test | Test suite for the MySQL server |
The full names for the RPMs have the following syntax:
packagename-version-distribution-arch.rpm
The distribution and
arch values indicate the Linux
distribution and the processor type for which the package was
built. See the table below for lists of the distribution
identifiers:
Table 2.3 MySQL Linux RPM Package Distribution Identifiers
| distribution Value | Intended Use |
|---|---|
el5, el6, el7 | Red Hat Enterprise Linux/Oracle Linux/CentOS 5, 6, or 7 |
fc23, fc24 | Fedora 23 or 24 |
sles12 | SUSE Linux Enterprise Server 12 |
To see all files in an RPM package (for example,
mysql-community-server), use the following
command:
shell> rpm -qpl mysql-community-server-version-distribution-arch.rpm
The discussion in the rest of this section applies only to an installation process using the RPM packages directly downloaded from Oracle, instead of through a MySQL repository.
Dependency relationships exist among some of the packages. If you plan to install many of the packages, you may wish to download the RPM bundle tar file instead, which contains all the RPM packages listed above, so that you need not download them separately.
In most cases, you need to install the
mysql-community-server,
mysql-community-client,
mysql-community-libs,
mysql-community-common, and
mysql-community-libs-compat packages to get a
functional, standard MySQL installation. To perform such a
standard, minimal installation, go to the folder that contains all
those packages (and, preferably, no other RPM packages with
similar names), and issue the following command for platforms
other than Red Hat Enterprise Linux/Oracle
Linux/CentOS 5:
shell> sudo yum install mysql-community-{server,client,common,libs}-*
Replace yum with zypper for SLES systems, and with dnf for dnf-enabled systems (like Fedora 23).
For Red Hat Enterprise Linux/Oracle Linux/CentOS 5 systems, there
is an extra package
(mysql-)
to be installed; use the following command:
version-el5-arch.rpm
shell> sudo yum install mysql-community-{server,client,common,libs}-* mysql-5.*
While it is much preferable to use a high-level package management tool like yum to install the packages, users who prefer direct rpm commands can replace the yum install command with the rpm -Uvh command; however, using rpm -Uvh instead makes the installation process more prone to failure, due to potential dependency issues the installation process might run into.
To install only the client programs, you can skip
mysql-community-server in your list of packages
to install; issue the following command for platforms
other than Red Hat Enterprise Linux/Oracle
Linux/CentOS 5:
shell> sudo yum install mysql-community-{client,common,libs}-*
Replace yum with zypper for SLES systems, and with dnf for dnf-enabled systems (like Fedora 23).
For Red Hat Enterprise Linux/Oracle Linux/CentOS 5 systems:
shell> sudo yum install mysql-community-{client,common,libs}-* mysql-5.*
A standard installation of MySQL using the RPM packages result in files and resources created under the system directories, shown in the following table.
Table 2.4 MySQL Installation Layout for Linux RPM Packages from the MySQL Developer Zone
| Files or Resources | Location |
|---|---|
| Client programs and scripts | /usr/bin |
| mysqld server | /usr/sbin |
| Configuration file | /etc/my.cnf |
| Data directory | /var/lib/mysql |
| Error log file |
For RHEL, Oracle Linux, CentOS or Fedora platforms:
For SLES: |
Value of secure_file_priv | /var/lib/mysql-files |
| System V init script |
For RHEL, Oracle Linux, CentOS or Fedora platforms:
For SLES: |
| Systemd service |
For RHEL, Oracle Linux, CentOS or Fedora platforms:
For SLES: |
| Pid file | /var/run/mysql/mysqld.pid |
| Socket | /var/lib/mysql/mysql.sock |
| Keyring directory | /var/lib/mysql-keyring |
| Unix manual pages | /usr/share/man |
| Include (header) files | /usr/include/mysql |
| Libraries | /usr/lib/mysql |
| Miscellaneous support files (for example, error messages, and character set files) | /usr/share/mysql |
The installation also creates a user named
mysql and a group named
mysql on the system.
Installation of previous versions of MySQL using older packages
might have created a configuration file named
/usr/my.cnf. It is highly recommended that
you examine the contents of the file and migrate the desired
settings inside to the file /etc/my.cnf
file, then remove /usr/my.cnf.
MySQL is NOT automatically started at the end of the installation process. For Red Hat Enterprise Linux, Oracle Linux, CentOS, and Fedora systems, use the following command to start MySQL:
shell> sudo service mysqld start
For SLES systems, the command is the same, but the service name is different:
shell> sudo service mysql start
If the operating system is systemd enabled, standard
service commands such as
stop, start,
status and restart should be
used to manage the MySQL server service. The
mysqld service is enabled by default, and it
starts at system reboot. Notice that certain things might work
differently on systemd platforms: for example, changing the
location of the data directory might cause issues. See
Section 2.10, “Managing MySQL Server with systemd” for additional
information.
At the initial start up of the server, the following happens, given that the data directory of the server is empty:
The server is initialized.
An SSL certificate and key files are generated in the data directory.
The validate_password plugin is installed and enabled.
A superuser account 'root'@'localhost' is
created. A password for the superuser is set and stored in the
error log file. To reveal it, use the following command for
RHEL, Oracle Linux, CentOS, and Fedora systems:
shell> sudo grep 'temporary password' /var/log/mysqld.log
Use the following command for SLES systems:
shell> sudo grep 'temporary password' /var/log/mysql/mysqld.log
The next step is to log in with the generated, temporary password and set a custom password for the superuser account:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters.
If something goes wrong during installation, you might find debug
information in the error log file
/var/log/mysqld.log.
For some Linux distributions, it might be necessary to increase the limit on number of file descriptors available to mysqld. See File Not Found and Similar Errors
Compatibility with RPM Packages from Other Vendors.
If you have installed packages for MySQL from your Linux
distribution's local software repository, it is much preferable
to install the new, directly-downloaded packages from Oracle
using the package management system of your platform
(yum, dnf, or
zypper), as described above. The command
replaces old packages with new ones to ensure compatibility of
old applications with the new installation; for example, the old
mysql-libs package is replaced with the
mysql-community-libs-compat package, which
provides a replacement-compatible client library for
applications that were using your older MySQL installation. If
there was an older version of
mysql-community-libs-compat on the system, it
also gets replaced.
If you have installed third-party packages for MySQL that are NOT from your Linux distribution's local software repository (for example, packages directly downloaded from a vendor other than Oracle), you should uninstall all those packages before installing the new, directly-downloaded packages from Oracle. This is because conflicts may arise between those vendor's RPM packages and Oracle's: for example, a vendor's convention about which files belong with the server and which belong with the client library may differ from that used for Oracle packages. Attempts to install an Oracle RPM may then result in messages saying that files in the RPM to be installed conflict with files from an installed package.
Installing Client Libraries from Multiple MySQL Versions.
It is possible to install multiple client library versions, such
as for the case that you want to maintain compatibility with
older applications linked against previous libraries. To install
an older client library, use the --oldpackage
option with rpm. For example, to install
mysql-community-libs-5.5 on an EL6 system
that has libmysqlclient.20 from MySQL 5.7,
use a command like this:
shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm
Debug Package.
A special variant of MySQL Server compiled with the
debug package has been
included in the server RPM packages. It performs debugging and
memory allocation checks and produces a trace file when the
server is running. To use that debug version, start MySQL with
/usr/sbin/mysqld-debug, instead of starting
it as a service or with /usr/sbin/mysqld.
See The DBUG Package for the debug options you can
use.
Rebuilding RPMs from source SRPMs. Source code SRPM packages for MySQL are available for download. They can be used as-is to rebuild the MySQL RPMs with the standard rpmbuild tool chain.
root passwords for pre-GA releases.
For MySQL 5.7.4 and 5.7.5, the initial random
root password is written to the
.mysql_secret file in the directory named
by the HOME environment variable. When trying
to access the file, bear in mind that depending on operating
system, using a command such as sudo may
cause the value of HOME to refer to the home
directory of the root system user
. .mysql_secret is created with mode 600 to
be accessible only to the system user for whom it is created.
Before MySQL 5.7.4, the accounts (including
root) created in the MySQL grant tables for
an RPM installation initially have no passwords; after starting
the server, you should assign passwords to them using the
instructions in Postinstallation Setup and Testing."
Oracle provides Debian packages for installing MySQL on Debian or Debian-like Linux systems. The packages are available through two different channels:
The MySQL APT Repository. This is the preferred method for installing MySQL on Debian-like systems, as it provides a simple and convenient way to install and update MySQL products. For details, see Section 2.3, “Installing MySQL on Linux Using the MySQL APT Repository”.
The MySQL Developer Zone's Download Area. For details, see How to Get MySQL. The following are some information on the Debian packages available there and the instructions for installing them:
Various Debian packages are provided in the MySQL
Developer Zone for installing different components of
MySQL on different Debian or Ubuntu platforms (currently,
Debian 7 and 8, and Ubuntu 12, 14, and 15 are supported).
The preferred method is to use the tarball bundle, which
contains the packages needed for a basic setup of MySQL.
The tarball bundles have names in the format of
mysql-server_.
MVER-DVER_CPU.deb-bundle.tarMVER is the MySQL version and
DVER is the Linux distribution
version. The CPU value
indicates the processor type or family for which the
package is built, as shown in the following table:
Table 2.5 MySQL Debian and Ubuntu Installation Packages CPU Identifiers
CPU Value | Intended Processor Type or Family |
|---|---|
i386 | Pentium processor or better, 32 bit |
amd64 | 64-bit x86 processor |
After downloading the tarball, unpack it with the following command:
shell> tar -xvf mysql-server_MVER-DVER_CPU.deb-bundle.tar
You may need to install the libaio
library if it is not already present on your system:
shell> sudo apt-get install libaio1
Preconfigure the MySQL server package with the following command:
shell> sudo dpkg-preconfigure mysql-community-server_*.deb
You will be asked to provide a password for the root user for your MySQL installation. You might also be asked other questions regarding the installation.
Make sure you remember the root password you set. Users who want to set a password later can leave the password field blank in the dialogue box and just press ; in that case, root access to the server is authenticated using the MySQL Socket Peer-Credential Authentication Plugin for connections using a Unix socket file. You can set the root password later using mysql_secure_installation.
For a basic installation of the MySQL server, install the database common files package, the client package, the client metapackage, the server package, and the server metapackage (in that order); you can do that with a single command:
shell> sudo dpkg -i mysql-{common,community-client,client,community-server,server}_*.deb
If you are being warned of unmet dependencies by dpkg, you can fix them using apt-get:
sudo apt-get -f installHere are where the files are installed on the system:
All configuration files (like
my.cnf) are under
/etc/mysql
All binaries, libraries, headers, etc., are under
/usr/bin and
/usr/sbin
The data directory is under
/var/lib/mysql
Debian distributions of MySQL are also provided by other vendors. Be aware that they may differ from those built by Oracle in features, capabilities, and conventions (including communication setup), and that the instructions in this manual do not necessarily apply to installing them. The vendor's instructions should be consulted instead.
Many Linux distributions include a version of the MySQL server, client tools, and development components in their native software repositories and can be installed with the platforms' standard package management systems. This section provides basic instructions for installing MySQL using those package management systems.
Native packages are often several versions behind the currently available release. You will also normally be unable to install development milestone releases (DMRs), as these are not usually made available in the native repositories. Before proceeding, we recommend that you check out the other installation options described in Chapter 2, Installing MySQL on Linux.
Distribution specific instructions are shown below:
Red Hat Linux, Fedora, CentOS
For EL5, EL6, or EL7-based Linux platforms and Fedora 23 or 24, you can install MySQL using the MySQL Yum repository instead of the platform's native software repository. See Section 2.1, “Installing MySQL on Linux Using the MySQL Yum Repository” for details.
For Red Hat and similar distributions, the MySQL distribution
is divided into a number of separate packages,
mysql for the client tools,
mysql-server for the server and associated
tools, and mysql-libs for the libraries.
The libraries are required if you want to provide connectivity
from different languages and environments such as Perl, Python
and others.
To install, use the yum command to specify the packages that you want to install. For example:
root-shell> yum install mysql mysql-server mysql-libs mysql-server Loaded plugins: presto, refresh-packagekit Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mysql.x86_64 0:5.1.48-2.fc13 set to be updated ---> Package mysql-libs.x86_64 0:5.1.48-2.fc13 set to be updated ---> Package mysql-server.x86_64 0:5.1.48-2.fc13 set to be updated --> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.48-2.fc13.x86_64 --> Running transaction check ---> Package perl-DBD-MySQL.x86_64 0:4.017-1.fc13 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql x86_64 5.1.48-2.fc13 updates 889 k mysql-libs x86_64 5.1.48-2.fc13 updates 1.2 M mysql-server x86_64 5.1.48-2.fc13 updates 8.1 M Installing for dependencies: perl-DBD-MySQL x86_64 4.017-1.fc13 updates 136 k Transaction Summary ================================================================================ Install 4 Package(s) Upgrade 0 Package(s) Total download size: 10 M Installed size: 30 M Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata Processing delta metadata Package(s) data still to download: 10 M (1/4): mysql-5.1.48-2.fc13.x86_64.rpm | 889 kB 00:04 (2/4): mysql-libs-5.1.48-2.fc13.x86_64.rpm | 1.2 MB 00:06 (3/4): mysql-server-5.1.48-2.fc13.x86_64.rpm | 8.1 MB 00:40 (4/4): perl-DBD-MySQL-4.017-1.fc13.x86_64.rpm | 136 kB 00:00 -------------------------------------------------------------------------------- Total 201 kB/s | 10 MB 00:52 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : mysql-libs-5.1.48-2.fc13.x86_64 1/4 Installing : mysql-5.1.48-2.fc13.x86_64 2/4 Installing : perl-DBD-MySQL-4.017-1.fc13.x86_64 3/4 Installing : mysql-server-5.1.48-2.fc13.x86_64 4/4 Installed: mysql.x86_64 0:5.1.48-2.fc13 mysql-libs.x86_64 0:5.1.48-2.fc13 mysql-server.x86_64 0:5.1.48-2.fc13 Dependency Installed: perl-DBD-MySQL.x86_64 0:4.017-1.fc13 Complete!
MySQL and the MySQL server should now be installed. A sample
configuration file is installed into
/etc/my.cnf. An init script, to start and
stop the server, will have been installed into
/etc/init.d/mysqld. To start the MySQL
server use service:
root-shell> service mysqld start
To enable the server to be started and stopped automatically during boot, use chkconfig:
root-shell> chkconfig --levels 235 mysqld on
Which enables the MySQL server to be started (and stopped) automatically at the specified the run levels.
The database tables will have been automatically created for you, if they do not already exist. You should, however, run mysql_secure_installation to set the root passwords on your server.
Debian, Ubuntu, Kubuntu
For Debian 7 and 8, and Ubuntu 12, 14, and 15, MySQL can be installed using the MySQL APT Repository instead of the platform's native software repository. See Section 2.3, “Installing MySQL on Linux Using the MySQL APT Repository” for details.
On Debian and related distributions, there are two packages
for MySQL in their software repositories,
mysql-client and
mysql-server, for the client and server
components respectively. You should specify an explicit
version, for example mysql-client-5.1, to
ensure that you install the version of MySQL that you want.
To download and install, including any dependencies, use the apt-get command, specifying the packages that you want to install.
Before installing, make sure that you update your
apt-get index files to ensure you are
downloading the latest available version.
A sample installation of the MySQL packages might look like this (some sections trimmed for clarity):
root-shell> apt-get install mysql-client-5.1 mysql-server-5.1 Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic Use 'apt-get autoremove' to remove them. The following extra packages will be installed: bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx mysql-common postfix Suggested packages: dbishell libipc-sharedcache-perl tinyca procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb The following NEW packages will be installed bsd-mailx libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient15off libmysqlclient16 libnet-daemon-perl libplrpc-perl mailx mysql-client-5.1 mysql-common mysql-server-5.1 postfix 0 upgraded, 13 newly installed, 0 to remove and 182 not upgraded. Need to get 1907kB/25.3MB of archives. After this operation, 59.5MB of additional disk space will be used. Do you want to continue [Y/n]? Y Get: 1 http://gb.archive.ubuntu.com jaunty-updates/main mysql-common 5.1.30really5.0.75-0ubuntu10.5 [63.6kB] Get: 2 http://gb.archive.ubuntu.com jaunty-updates/main libmysqlclient15off 5.1.30really5.0.75-0ubuntu10.5 [1843kB] Fetched 1907kB in 9s (205kB/s) Preconfiguring packages ... Selecting previously deselected package mysql-common. (Reading database ... 121260 files and directories currently installed.) ... Processing 1 added doc-base file(s)... Registering documents with scrollkeeper... Setting up libnet-daemon-perl (0.43-1) ... Setting up libplrpc-perl (0.2020-1) ... Setting up libdbi-perl (1.607-1) ... Setting up libmysqlclient15off (5.1.30really5.0.75-0ubuntu10.5) ... Setting up libdbd-mysql-perl (4.008-1) ... Setting up libmysqlclient16 (5.1.31-1ubuntu2) ... Setting up mysql-client-5.1 (5.1.31-1ubuntu2) ... Setting up mysql-server-5.1 (5.1.31-1ubuntu2) ... * Stopping MySQL database server mysqld ...done. 2013-09-24T13:03:09.048353Z 0 [Note] InnoDB: 5.7.16 started; log sequence number 1566036 2013-09-24T13:03:10.057269Z 0 [Note] InnoDB: Starting shutdown... 2013-09-24T13:03:10.857032Z 0 [Note] InnoDB: Shutdown completed; log sequence number 1566036 * Starting MySQL database server mysqld ...done. * Checking for corrupt, not cleanly closed and upgrade needing tables. ... Processing triggers for libc6 ... ldconfig deferred processing now taking place
The apt-get command will install a number of packages, including the MySQL server, in order to provide the typical tools and application environment. This can mean that you install a large number of packages in addition to the main MySQL package.
During installation, the initial database will be created, and
you will be prompted for the MySQL root password (and
confirmation). A configuration file will have been created in
/etc/mysql/my.cnf. An init script will
have been created in /etc/init.d/mysql.
The server will already be started. You can manually start and stop the server using:
root-shell> service mysql [start|stop]
The service will automatically be added to the 2, 3 and 4 run levels, with stop scripts in the single, shutdown and restart levels.
The docker deployment framework supports easy installation and configuration of MySQL servers. For instructions, see https://hub.docker.com/r/mysql/mysql-server/. This page also provides extensive documentation about using MySQL under docker.
The juju deployment framework supports easy installation and configuration of MySQL servers. For instructions, see https://jujucharms.com/mysql/.
As of MySQL 5.7.6, if you install MySQL using an RPM distribution on the following Linux platforms, server startup and shutdown is managed by systemd:
Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7
SUSE Linux Enterprise Server 12
Fedora 23 and 24
To obtain systemd support if you install from a source
distribution, configure the distribution using the
-DWITH_SYSTEMD=1
CMake option. See
MySQL Source-Configuration Options.
systemd provides automatic server startup and shutdown. It also enables manual server management using the systemctl command. For example:
systemctl {start|stop|restart|status} mysqld
Alternatively, use the service command (with the arguments reversed), which is compatible with System V systems:
service mysqld {start|stop|restart|status}
For the systemctl or service
commands, if the MySQL service name is not
mysqld, use the appropriate name (for example,
mysql on SLES systems).
Support for systemd includes these files:
mysqld.service: systemd service unit
configuration, with details about the
mysqld service.
mysqld.tmpfiles.d: File containing
information to support the tmpfiles
feature. This file is installed under the name
mysql.conf.
mysqld_pre_systemd: Support script for
the unit file.
On platforms for which systemd support is installed, scripts such as mysqld_safe and the System V initialization script are not installed because they are unnecessary. For example, mysqld_safe can handle server restarts, but systemd provides the same capability, and does so in a manner consistent with management of other services rather than using an application-specific program.
As of MySQL 5.7.13, on platforms for which systemd support is installed, systemd has the capability of managing multiple MySQL instances. For details, see Configuring Multiple MySQL Instances Using systemd. Consequently, mysqld_multi and mysqld_multi.server are not installed because they are unnecessary.
To add or change systemd options for MySQL, these methods are available:
Use a localized systemd configuration file.
Arrange for systemd to set environment variables for the MySQL server process.
Set the MYSQLD_OPTS systemd variable.
To use a localized systemd configuration file, create the
/etc/systemd/system/mysqld.service.d
directory if it does not exist. In that directory, create a file
that contains a [Service] section listing the
desired settings. For example:
[Service] LimitNOFILE=max_open_filesPIDFile=/path/to/pid/fileNice=nice_levelLimitCore=core_file_limitEnvironment="LD_PRELOAD=/path/to/malloc/library" Environment="TZ=time_zone_setting"
The discussion here uses override.conf as
the name of this file. Newer versions of systemd support the
following command, which opens an editor and permits you to edit
the file:
systemctl edit mysqld
Whenever you create or change
override.conf, reload the systemd
configuration, then tell systemd to restart the MySQL service:
systemctl daemon-reload systemctl restart mysqld
Support for configuration using
override.conf was added in MySQL 5.7.7.
With systemd, the override.conf
configuration method must be used for certain parameters, rather
than settings in a [mysqld_safe] or
[mysqld] group in a MySQL option file:
For some parameters, override.conf must
be used because systemd itself must know their values and it
cannot read MySQL option files to get them.
Parameters that specify values otherwise settable only using options known to mysqld_safe must be specified using systemd because there is no corresponding mysqld parameter.
For additional information about using systemd rather than mysqld_safe, see Migrating from mysqld_safe to systemd.
You can set the following parameters in
override.conf:
To specify the process ID file:
As of MySQL 5.7.10: Use
override.conf and change both
PIDFile and
ExecStart to name the PID file path
name. Any setting of the process ID file in MySQL option
files will be ignored.
Before MySQL 5.7.10: Use PIDFile in
override.conf rather than the
--pid-file option
for mysqld_safe or
mysqld. systemd must know the PID
file location so that it can restart or stop the server.
If the PID file value is specified in a MySQL option
file, the value must match the
PIDFile value or MySQL startup may
fail.
To set the number of file descriptors available to the MySQL
server, use LimitNOFILE in
override.conf rather than the
--open-files-limit
option for mysqld_safe or
mysqld.
To set the maximum core file size, use
LimitCore in
override.conf rather than the
--core-file-size option
for mysqld_safe.
To set the scheduling priority for the MySQL server, use
Nice in
override.conf rather than the
--nice option for
mysqld_safe.
Some MySQL parameters are configured using environment variables:
LD_PRELOAD: Set this variable if the
MySQL server should use a specific memory-allocation
library.
TZ: Set this variable to specify the
default time zone for the server.
There are multiple ways to specify the value of environment values that should be in effect for the MySQL server process managed by systemd:
Use Environment lines in the
override.conf file. For the syntax, see
the example in the preceding discussion that describes how
to use this file.
Specify the values in the
/etc/sysconfig/mysql file (create the
file if it does not exist). Assign values using the
following syntax:
LD_PRELOAD=/path/to/malloc/libraryTZ=time_zone_setting
After modifying /etc/sysconfig/mysql,
restart the server to make the changes effective:
systemctl restart mysqld
To specify options for mysqld without
modifying systemd configuration files directly, set or unset the
MYSQLD_OPTS systemd variable. For example:
systemctl set-environment MYSQLD_OPTS="--general_log=1" systemctl unset-environment MYSQLD_OPTS
After modifying the systemd environment, restart the server to make the changes effective:
systemctl restart mysqld
As of MySQL 5.7.13, on platforms for which systemd support is installed, systemd has the capability of managing multiple MySQL instances. Consequently, mysqld_multi and mysqld_multi.server are not installed because they are unnecessary.
To use multiple-instance capability, modify
my.cnf to include configuration of key
options for each instance. For example, to manage two instances
named replica01 and
replica02, add something like this to the
file:
[mysqld@replica01] datadir=/var/lib/mysql-replica01 socket=/var/lib/mysql-replica01/mysql.sock port=3307 log-error=/var/log/mysqld-replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 socket=/var/lib/mysql-replica02/mysql.sock port=3308 log-error=/var/log/mysqld-replica02.log
The replica names shown here use @ as the
delimiter because that is the only delimiter supported by
systemd.
Instances then are managed by normal systemd commands, such as:
systemctl start mysqld@replica01 systemctl start mysqld@replica02
To enable instances to run at boot time, do this:
systemctl enable mysqld@replica01 systemctl enable mysqld@replica02
Use of wildcards is also supported. For example, this command displays the status of all replica instances:
systemctl status 'mysqld@replica*'
Because mysqld_safe is not installed when
systemd is used, options previously specified for that program
(for example, in an [mysqld_safe] option
group) must be specified another way:
Some mysqld_safe options are also
understood by mysqld and can be moved
from the [mysqld_safe] option group to
the [mysqld] group. This does
not include --pid-file
or --open-files-limit. To specify those
options, use the override.conf systemd
file, described previously.
For some mysqld_safe options, there are
similar mysqld options. For example, the
mysqld_safe option for enabling
syslog logging is
--syslog. For
mysqld, enable the
log_syslog system variable
instead. For details, see The Error Log.
mysqld_safe options not understood by
mysqld can be specified in
override.conf or environment variables.
For example, with mysqld_safe, if the
server should use a specific memory allocation library, this
is specified using the
--malloc-lib option. For
installations that manage the server with systemd, arrange
to set the LD_PRELOAD environment
variable instead, as described previously.