MySQL is freely available for Linux from
http://www.mysql.com (or one of
its mirrors listed at
http://www.mysql.com/downloads/mirrors.html). Download the latest
stable release (listed as "recommended" on the download page).
You should grab the "Tarball" version under "Source downloads",
with filename mysql-3.xx.xx.tar.gz
.
With the program downloaded (it was about 10.5MB as of this
writing), you should make sure you're logged in as
root
before proceeding with the installation, unless
you only want to install MySQL in your own home directory. To
begin, unpack the downloaded file and move into the directory
that is created:
% tar xfz mysql-3.xx.xx.tar.gz
% cd mysql-version
Next, you need to configure the MySQL install. Unless you really
know what you're doing, all you should have to do is tell it
where to install. I recommend /usr/local/mysql
:
% ./configure --prefix=/usr/local/mysql
After sitting through the screens and screens of configuration tests, you'll eventually get back to a command prompt. Be sure the configuration completed successfully. If you see an error message just before the configuration quit, you'll need to address the problem it's complaining about. On Mandrake 8.0, for example, it complained of "No curses/termcap library found". I simply installed the 'libncurses5-devel' package in Mandrake's Software Manager, and the configuration worked fine on a second attempt. Once configuration is complete, you're ready to compile MySQL:
% make
After even more screens of compilation (this could take as long as a half an hour on some systems), you'll again be returned to the command prompt. You're now ready to install your newly compiled program:
% make install
MySQL is now installed, but before it can do anything useful its database files need to be installed too. Still in the directory you installed from, type the following command:
% scripts/mysql_install_db
With that done, you can delete the directory you've been working in, which just contains all the source files and temporary installation files. If you ever need to reinstall, you can simply re-extract the mysql-version.tar.gz file.
With MySQL installed and ready to store information, all that's left is to get the server running on your computer. While you can run the server as the root user, or even as yourself (if, for example, you installed the server in your own home directory), the best idea is to set up on the system a special user whose sole purpose is to run the MySQL server. This will remove any possibility of someone using the MySQL server as a way to break into the rest of your system. To create a special MySQL user, you'll need to log in as root and type the following commands:
% /usr/sbin/groupadd mysqlgrp % /usr/sbin/useradd -g mysqlgrp mysqlusr
By default, MySQL stores all database information in the var
subdirectory of the directory to which it was installed. We want
to make it so that nobody can access that directory except our
new MySQL user. Assuming you installed MySQL to the
/usr/local/mysql
directory, use these commands:
% cd /usr/local/mysql
% chown -R mysqlusr.mysqlgrp var
% chmod -R go-rwx var
Now everything's set for you to launch the MySQL server for the first time. From the MySQL directory, type the following command:
% bin/safe_mysqld --user=mysqlusr &
If you see the message 'mysql daemon ended', then the MySQL
server was prevented from starting. The error message should have
been written to a file called
hostname
.err
(where
hostname is your machine's hostname) in MySQL's
var
directory. You'll usually find that this happens
because another MySQL server is already running on your computer.
If the MySQL server was launched without complaint, the server will run (just like your Web or FTP server) until your computer is shut down. To test that the server is running properly, type the following command:
% bin/mysqladmin -u root status
A little blurb with some statistics about the MySQL server should
be displayed. If you receive an error message, something has gone
wrong. Again, check the
hostname
.err
file to see if the
MySQL server output an error message while starting up. If you
retrace your steps to make sure you followed the process
described above, and this doesn't solve the problem, a post to
the SitePoint.com Forums
will help you pin it down in no time.
If you want your MySQL server to run automatically whenever the
system is running (just like your Web server probably does),
you'll have to set it up to do so. In the
share/mysql
subdirectory of the MySQL directory,
you'll find a script called mysql.server
that can be
added to your system startup routines to do this.
First of all, assuming you've set up a special MySQL user to run
the MySQL server, you'll need to tell the MySQL server to start
as that user by default. To do this, create in your system's
/etc
directory a file called my.cnf
that contains these two lines:
[mysqld]
user=mysqlusr
Now, when you run safe_mysqld
or
mysql.server
to start the MySQL server, it will
launch as mysqlusr
without your having to tell it
to. All that's left to do is to set up your system to run
mysql.server
automatically at startup.
Setting up your system to run the script at startup is a highly operating system-dependant task. If you're not sure of how to do this, you'd be best to ask someone who knows. However the following commands (starting in the MySQL directory) will do the trick for most versions of Linux:
% cp share/mysql/mysql.server /etc/rc.d/init.d/
% cd /etc/rc.d/init.d
% chmod 500 mysql.server
% cd /etc/rc.d/rc3.d
% ln -s ../init.d/mysql.server S99mysql
% cd /etc/rc.d/rc5.d
% ln -s ../init.d/mysql.server S99mysql
NOTE: Under the current SUSE distribution of Linux, there is no
init.d
directory, just a symbolic link pointing back
to /etc/rc.d
; symbolic links for startup files
should thus be directed to the /etc/rc.d
directory
(e.g. ln –s ../mysql.server S99mysql
).
That's it! To test that this works, reboot your system and request the status of the server as before.
One final thing you might like to do for convenience sake, is to
place the MySQL client programs, which you'll use to administer
your MySQL server later on, in the system path. To this end, you
can place symbolic links to mysql
,
mysqladmin
, and mysqldump
in your
/usr/local/bin
directory:
% ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
% ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysqladmin
% ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump