[+/-]
After installing MySQL, you must initialize the data directory,
including the tables in the mysql system
database. For some MySQL installation methods, data directory
initialization may be done automatically, as described in
Section 2.10, “Postinstallation Setup and Testing”. For other installation
methods, including installation from generic binary and source
distributions, you must initialize the data directory yourself.
This section describes how to initialize the data directory on Unix and Unix-like systems. (For Windows, see Section 2.3.7, “Windows Postinstallation Procedures”.) For some suggested commands that you can use to test whether the server is accessible and working properly, see Section 2.10.3, “Testing the Server”.
In the examples shown here, the server runs under the user ID of
the mysql login account. This assumes that such
an account exists. Either create the account if it does not exist,
or substitute the name of a different existing login account that
you plan to use for running the server. For information about
creating the account, see
Creating a
mysql System User and Group, in
Section 2.2, “Installing MySQL on Unix/Linux Using Generic Binaries”.
Change location into the top-level directory of your MySQL installation, represented here by
BASEDIR:shell>
cdBASEDIRBASEDIRis likely to be something like/usr/local/mysqlor/usr/local. The following steps assume that you have changed location to this directory.You will find several files and subdirectories in the
BASEDIRdirectory. The most important for installation purposes are thebinandscriptssubdirectories, which contain the server as well as client and utility programs.Create a directory that provides a location to use as the value of the
secure_file_privsystem variable that limits import/export operations to a specific directory. See Section 6.1.4, “Server System Variables”.shell>
mkdir mysql-filesshell>chmod 750 mysql-filesIf necessary, ensure that the distribution contents are accessible to
mysql. If you installed the distribution asmysql, no further action is required. If you installed the distribution asroot, its contents will be owned byroot. Change its ownership tomysqlby executing the following commands asrootin the installation directory. The first command changes the owner attribute of the files to themysqluser. The second changes the group attribute to themysqlgroup.shell>
chown -R mysql .shell>chgrp -R mysql .If necessary, initialize the data directory, including the
mysqldatabase containing the initial MySQL grant tables that determine how users are permitted to connect to the server.Typically, data directory initialization need be done only the first time you install MySQL. If you are upgrading an existing installation, you should run mysql_upgrade instead (see Section 5.4.7, “mysql_upgrade — Check and Upgrade MySQL Tables”). However, the command that initializes the data directory does not overwrite any existing privilege tables, so it should be safe to run in any circumstances.
As of MySQL 5.7.6, use the server to initialize the data directory:
shell>
bin/mysqld --initialize --user=mysqlBefore MySQL 5.7.6, use mysql_install_db:
shell>
bin/mysql_install_db --user=mysqlFor more information, see Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”, or Section 2.10.1.2, “Initializing the Data Directory Manually Using mysql_install_db”, depending on which command you use.
If you want the server to be able to deploy with automatic support for secure connections, use the mysql_ssl_rsa_setup utility to create default SSL and RSA files:
shell>
mysql_ssl_rsa_setupFor more information, see Section 5.4.5, “mysql_ssl_rsa_setup — Create SSL/RSA Files”.
After initializing the data directory, you can establish the final installation ownership settings. To leave the installation owned by
mysql, no action is required here. Otherwise, most of the MySQL installation can be owned byrootif you like. The exception is that the data directory and themysql-filesdirectory must be owned bymysql. To accomplish this, run the following commands asrootin the installation directory. For some distribution types, the data directory might be namedvarrather thandata; adjust the second command accordingly.shell>
chown -R root .shell>chown -R mysql data mysql-filesIf the plugin directory (the directory named by the
plugin_dirsystem variable) is writable by the server, it may be possible for a user to write executable code to a file in the directory usingSELECT ... INTO DUMPFILE. This can be prevented by making the plugin directory read only to the server or by setting thesecure_file_privsystem variable at server startup to a directory whereSELECTwrites can be performed safely. (For example, set it to themysql-filesdirectory created earlier.)To specify options that the MySQL server should use at startup, put them in a
/etc/my.cnfor/etc/mysql/my.cnffile. You can use such a file, for example, to set thesecure_file_privsystem variable. See Section 6.1.2, “Server Configuration Defaults”. If you do not do this, the server starts with its default settings.If you want MySQL to start automatically when you boot your machine, see Section 2.10.5, “Starting and Stopping MySQL Automatically”.
Data directory initialization creates time zone tables in the
mysql database but does not populate them. To
do so, use the instructions in
Section 11.6, “MySQL Server Time Zone Support”.