In this part of the MySQL tutorial, we are going to cover the installation of the MySQL database management system. In this chapter, we will install MySQL on Linux.
There are several ways how we can install MySQL on our system. We can install MySQL from packages, from binaries or from the sources.
$ sudo apt-get install mysql-server
On Ubuntu and other Debian based distributions, we can easily install MySQL
from packages by using the
apt-get tool. This command installs the MySQL
server and various other packages. While installing the packages, we are
prompted to enter a password for the MySQL root account.
Installing from sources
Installing MySQL from sources gives us the most options to build MySQL according to our preferences. We can customise installation locations, various build parameters or compiler optimisations.
We enter the mysql.com website. Under Downloads tab, we select generally available MySQL Community Edition. From the Select platform combo box, we choose Source Code.
$ ls -sh mysql-5.5.9.tar.gz 23M mysql-5.5.9.tar.gz
We have downloaded a compressed archive of MySQL 5.5.9 sources.
$ tar xzvf mysql-5.5.9.tar.gz $ cd mysql-5.5.9/
We have unpacked the sources to the
$ sudo apt-get install cmake $ which cmake bison perl /usr/bin/cmake /usr/bin/bison /usr/bin/perl
To build MySQL, we need to have three tools installed on our system: cmake,
bison, and Perl. In our case, we had to install the
cmake tool has replaced the configure tool, because it is
$ cmake -L -- MySQL 5.5.9 -- Configuring done -- Generating done -- Build files have been written to: /home/vronskij/Downloads/mysql-5.5.9 -- Cache values CMAKE_BUILD_TYPE:STRING=RelWithDebInfo CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql COMMUNITY_BUILD:BOOL=ON ENABLED_PROFILING:BOOL=ON ENABLE_DEBUG_SYNC:BOOL=ON INSTALL_LAYOUT:STRING=STANDALONE MYSQL_DATADIR:PATH=/usr/local/mysql/data MYSQL_MAINTAINER_MODE:BOOL=OFF WITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF WITH_DEBUG:BOOL=OFF WITH_EMBEDDED_SERVER:BOOL=OFF WITH_EXTRA_CHARSETS:STRING=all WITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF WITH_INNOBASE_STORAGE_ENGINE:BOOL=ON WITH_LIBEDIT:BOOL=ON WITH_LIBWRAP:BOOL=OFF WITH_PARTITION_STORAGE_ENGINE:BOOL=ON WITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON WITH_PIC:BOOL=OFF WITH_READLINE:BOOL=OFF WITH_SSL:STRING=no WITH_UNIT_TESTS:BOOL=ON WITH_VALGRIND:BOOL=OFF WITH_ZLIB:STRING=system
-L option shows some of the default configure options.
The system is going to be installed to
For us it is important to have InnoDB storage engine configured to be included.
$ cmake .
We configure the build. We leave all the default settings. In case we
wanted to have also the MySQL embedded system, we would provide
$ make $ sudo make install
We make the system and install it.
$ sudo addgroup --system mysql $ sudo adduser --system mysql --no-create-home -ingroup mysql
We create a mysql system group and a mysql system user on our computer. Each process in Linux is owned by a specific user. The MySQL daemon will be owned by user mysql. Note that mysql is not a normal user account. It is a system user.
$ pwd /usr/local/mysql $ sudo chown -R mysql . $ sudo chgrp -R mysql .
We are located in the
/usr/local/mysql directory. We change the
group and owner of all files located in the mentioned directory. The
-R option means recursive operation. This means that the two
commands operate on all files and directories and the contents of the directories.
$ sudo ./scripts/mysql_install_db --user=mysql
Here we install MySQL system tables. These tables are necessary for MySQL to be functional.
$ sudo chown -R root . $ sudo chown -R mysql data
We change the owner for all files back to the user root, except for the data directory. The MySQL server, which is owned by the mysql user, must have access to the data directory. The database files are stored in this directory.
Changing the root password
By default, the MySQL superuser root has an empty password. We need to set a password for the root account.
$ su Password: # /usr/local/mysql/bin/mysqld_safe & # exit exit $
We start the MySQL server. We change to the Linux root account and
mysqld_safe script. It is a MySQL server
$ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully $ su root Password: root@spartan:/usr/local/mysql#
On Ubuntu, the (Linux) root account is not enabled by default. Here we show, how to enable it. Then we can use the su (switch user) command to switch to root to start the MySQL daemon.
$ bin/mysqladmin -u root password '345jas7'
Using the mysqladmin we change the password for the root account. Note that command is launched without the sudo.
After we have installed the MySQL on our system and changed a password for the root account, there are still some modifications left to do.
MySQL has a configuration file called
my.cnf. This is located
/etc directory. By editing the options in this file,
we can configure the server to our needs.
$ cp support-files/my-medium.cnf /etc/my.cnf $ cp support-files/my-medium.cnf ~/.my.cnf
In the support-files directory there are prepared configuration files. We can choose one of them, which best suits us. In the first command, we create MySQL global configuration file. In the second example, we create a personal file in the home directory of the user. This part is optional.
$ export PATH=$PATH:/usr/local/mysql/bin/ $ export MANPATH=$MANPATH:/usr/local/mysql/man/
Another useful thing to do is to add bin direcory to your
This way we can launch MySQL commands and scripts without specifying the full path.
In addition, we add the path to the manual pages of the MySQL tools and commands to
MANPATH variable. Now we can view MySQL man pages with the man
command. Place both commands to your shell configuration file. In case of the bash
In this part of the MySQL tutorial, we have covered the installation of the MySQL database system.