The world's most popular open source database
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). See
Section 2.2, “Installing MySQL from Generic Binaries on Unix/Linux”, for a detailed list.
To obtain MySQL, see Section 2.1.3, “How to Get MySQL”.
Sun Microsystems, Inc. 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.5, “Installing MySQL on Windows”.
If you want 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.
MySQL tar file binary distributions have names of
the form
mysql-,
where VERSION-OS.tar.gz is a
number (for example, VERSION5.1.41), 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, 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.
If you run into problems and need to file a bug report, please use the instructions in Section 1.6, “How to Report Bugs or Problems”.
The basic commands that you must execute to install and use a MySQL binary distribution are:
shell>groupadd mysqlshell>useradd -g mysql mysqlshell>cd /usr/localshell>gunzip <shell>/path/to/mysql-VERSION-OS.tar.gz | tar xvf -ln -sshell>full-path-to-mysql-VERSION-OSmysqlcd mysqlshell>chown -R mysql .shell>chgrp -R mysql .shell>scripts/mysql_install_db --user=mysqlshell>chown -R root .shell>chown -R mysql datashell>bin/mysqld_safe --user=mysql &
This procedure does not set up any passwords for MySQL accounts. After following the procedure, proceed to Section 2.13, “Post-Installation Setup and Testing”.
A more detailed version of the preceding description for installing a binary distribution follows:
Add a login user and group for mysqld to run as:
shell>groupadd mysqlshell>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, 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.
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
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.
Unpack the distribution, which creates the installation directory. Then create a symbolic link to that directory:
shell>gunzip <shell>/path/to/mysql-VERSION-OS.tar.gz | tar xvf -ln -sfull-path-to-mysql-VERSION-OSmysql
The tar command creates a directory named
mysql-.
The VERSION-OSln 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
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.
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.
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 command
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.
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
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.13.2.2, “Starting and Stopping MySQL Automatically”.
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”.
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
file
in the data directory.
host_name.err
More information about mysqld_safe is given in Section 4.3.2, “mysqld_safe — MySQL Server Startup Script”.
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.13, “Post-Installation Setup and Testing”.


User Comments
After setting the group to 'mysql', check that the group has write privileges to the directories.
Otherwise do a 'chmod g+w data'
In my experience with FreeBSD the groupadd and addgroup commands are not available. Instead you must use the ps utility to add users and groups. Below is the method I used:
pw groupadd mysql
pw useradd mysql
pw groupmod mysql -M mysql
pw groupshow mysql
More info can be found on the FreeBSD website:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/users-groups.html
To Install MYSQL SERVER on FreeBSD (using port collection) you will have to do the following
cd /usr/ports/databases/mysqlxx-server (xx is server verison)
make install clean (this installs and clean up after you)
cp /usr/local/share/mysql/abc.cnf /etc/my.cnf (abc is your choice of configuration file. options include my-huge, my-large, my-medium, my-small)
cp /usr/local/share/mysql/mysql.server /etc/rc.d/mysql.server
now you may install the db using :
mysql_intsall_db --user=mysql
verify that the mysql db in /var/db/mysql have the right user and group ownership (owner/group should be mysql)
If note just change the owner/group setting for the folder and sub-folders and files /var/db/mysql
You can now start the deamon
mysql_safe &
don't forget to change mysql admin password and imo also restrict admin user access only to local machine.
NOTE : You can change the location of the db file by including the directory switch in your mysql_install_db command (--basedir=path). You can also choose a different user to run your mysql daemon.
For fresh FreeBSD command you will notice that you need to use the full path to the executables : /usr/local/bin/mysqld_safe
Wole Akpose's post was indispensable for a newbie like me installing mysql5 on FreeBSD. I installed on FreeBSD 6.0. Here are a few additional items to note on his post:
1) A minor typo... "mysql_install_db" not "mysql_intsall_db"
2) Per his instructions, I did have to chgrp my /var/db/mysql files (chgrp -R mysql /var/db/mysql)
3) I'm assuming there's something wrong with my setup, since plain old "mysql_safe &" doesn't work for me. Instead I have to use this "cd /var/db/mysql ; /usr/local/bin/mysqld_safe &"
4) For reasons unknown to me, mysql doesn't start automatically on reboot. So I placed an sh file in /etc/rc.d that simply contains the mysql_safe call. (FYI, I do have mysql.server file in place)
Sorry about the typos. Thanks for the corrections.
mysqld_safe is the correct command.
Note that you can also either create a script that simply repeat these processes or update your make file to take these actions automatically.
If you have to install for multiple machines, a script is the way to go
While running FC3, I was not able to start the Mysql service until I manually created /var/run/mysqld/ for the PID file.
mkdir /var/run/mysqld
chown -R /var/run/mysqld mysqld
chgrp -R /var/run/mysqld mysqld
mysql binary installation:---
In Fedora core 8 to start mysql service manually we need to create mysqld folder in /var/run and set permission as shown below
# groupadd mysqld
# useradd –g mysqld mysqld
# mkdir /var/run/msqld
# chown –R /var/run/mysqld mysqld
# chmod 770 /var/run/mysqld
I'm using Ubuntu 7.10 with the MySQL 5.1.22 .tar.gz binary distribution. I needed to add --no-defaults to the ./scripts/mysql_install_db for it to work properly.
I am on linux-mint 4.0, which is basically Ubuntu 7. I would like to reiterate that without the --no-defaults option the mysql_install_db will not run correctly.
Note that if you install to a location different than /usr/local (or other standard location) then you must ensure that the libraries form <base_dir>/lib/mysql are found by the dynamic linker.
On my linux I achieved that by appending <base_dir>/lib/mysql to the LD_LIBRARY_PATH environment variable. I also had to export the variable with
$ export LD_LIBRARY_PATH
An alternative is to add the mysql library dir to the set of standard library paths using ldconfig.
For PowerPC Mac OS X 10.5 the only download available is in .tar.gz format. The instructions here for this kind on install do not apply to Mac OS X because the groupadd command does not exists on Leopard.
Can anyone post an updated install procedure?
For my installation of version 5.1.32, step 7 requires an additional piece of information. When I ran the installation script to create the db tables, I had to specify my data directory using the --datadir= option. If I didn't, the daemon would fail with the following error:
<i>090327 15:04:12 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.</i>
After I did, I was able to start the daemon and run the upgrade script to create the plugin and host tables.
Add your own comment.