-
Change location into the top-level directory of your MySQL
installation, represented here by
BASEDIR
:
shell> cd BASEDIR
BASEDIR
is likely to be something
like /usr/local/mysql
or
/usr/local
. The following steps assume
that you are located in this directory.
-
If necessary, run the mysql_install_db
program to set up the initial MySQL grant tables containing
the privileges that determine how users are allowed to
connect to the server. You'll need to do this if you used a
distribution type for which the installation procedure
doesn't run the program for you.
Typically, mysql_install_db needs to be
run only the first time you install MySQL, so you can skip
this step if you are upgrading an existing installation,
However, mysql_install_db does not
overwrite any existing privilege tables, so it should be
safe to run in any circumstances.
To initialize the grant tables, use one of the following
commands, depending on whether
mysql_install_db is located in the
bin
or scripts
directory:
shell> bin/mysql_install_db --user=mysql
shell> scripts/mysql_install_db --user=mysql
The mysql_install_db script creates the
server's data directory. Under the data directory, it
creates directories for the mysql
database that holds all database privileges and the
test
database that you can use to test
MySQL. The script also creates privilege table entries for
root
accounts and anonymous-user
accounts. The accounts have no passwords initially. A
description of their initial privileges is given in
Section 2.9.3, “Securing the Initial MySQL Accounts”. Briefly, these
privileges allow the MySQL root
user to
do anything, and allow anybody to create or use databases
with a name of test
or starting with
test_
.
It is important to make sure that the database directories
and files are owned by the mysql
login
account so that the server has read and write access to them
when you run it later. To ensure this, the
--user
option should be used as shown if
you run mysql_install_db as
root
. Otherwise, you should execute the
script while logged in as mysql
, in which
case you can omit the --user
option from
the command.
mysql_install_db creates several tables
in the mysql
database, including
user
, db
,
host
, tables_priv
,
columns_priv
, and
func
, as well as others. See
Section 5.7, “The MySQL Access Privilege System”, for a complete listing
and description of these tables.
If you don't want to have the test
database, you can remove it with mysqladmin -u root
drop test after starting the server.
If you have trouble with mysql_install_db
at this point, see Section 2.9.2.1, “Problems Running mysql_install_db”.
-
Start the MySQL server:
shell> bin/mysqld_safe --user=mysql &
It is important that the MySQL server be run using an
unprivileged (non-root
) login account. To
ensure this, the --user
option should be
used as shown if you run mysql_safe
as
system root
. Otherwise, you should
execute the script while logged in to the system as
mysql
, in which case you can omit the
--user
option from the command.
Further instructions for running MySQL as an unprivileged
user are given in Section 5.6.5, “How to Run MySQL as a Normal User”.
If you neglected to create the grant tables before
proceeding to this step, the following message appears in
the error log file when you start the server:
mysqld: Can't find file: 'host.frm'
If you have other problems starting the server, see
Section 2.9.2.3, “Starting and Troubleshooting the MySQL Server”.
-
Use mysqladmin to verify that the server
is running. The following commands provide simple tests to
check whether the server is up and responding to
connections:
shell> bin/mysqladmin version
shell> bin/mysqladmin variables
The output from mysqladmin version varies
slightly depending on your platform and version of MySQL,
but should be similar to that shown here:
shell> bin/mysqladmin version
mysqladmin Ver 14.12 Distrib 5.1.7-beta, for pc-linux-gnu on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 5.1.7-beta-Max
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 14 days 5 hours 5 min 21 sec
Threads: 1 Questions: 366 Slow queries: 0
Opens: 0 Flush tables: 1 Open tables: 19
Queries per second avg: 0.000
To see what else you can do with
mysqladmin, invoke it with the
--help
option.
-
Verify that you can shut down the server:
shell> bin/mysqladmin -u root shutdown
-
Verify that you can start the server again. Do this by using
mysqld_safe or by invoking
mysqld directly. For example:
shell> bin/mysqld_safe --user=mysql --log &
If mysqld_safe fails, see
Section 2.9.2.3, “Starting and Troubleshooting the MySQL Server”.
-
Run some simple tests to verify that you can retrieve
information from the server. The output should be similar to
what is shown here:
shell> bin/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
shell> bin/mysqlshow mysql
Database: mysql
+---------------------------+
| Tables |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
-
There is a benchmark suite in the
sql-bench
directory (under the MySQL
installation directory) that you can use to compare how
MySQL performs on different platforms. The benchmark suite
is written in Perl. It requires the Perl DBI module that
provides a database-independent interface to the various
databases, and some other additional Perl modules:
DBI
DBD::mysql
Data::Dumper
Data::ShowTable
These modules can be obtained from CPAN
(https://www.cpan.org/). See also
Section 2.13.1, “Installing Perl on Unix”.
The sql-bench/Results
directory
contains the results from many runs against different
databases and platforms. To run all tests, execute these
commands:
shell> cd sql-bench
shell> perl run-all-tests
If you don't have the sql-bench
directory, you probably installed MySQL using RPM files
other than the source RPM. (The source RPM includes the
sql-bench
benchmark directory.) In this
case, you must first install the benchmark suite before you
can use it. There are separate benchmark RPM files named
mysql-bench-VERSION
-i386.rpm
that contain benchmark code and data.
If you have a source distribution, there are also tests in
its tests
subdirectory that you can
run. For example, to run
auto_increment.tst
, execute this
command from the top-level directory of your source
distribution:
shell> mysql -vvf test < ./tests/auto_increment.tst
The expected result of the test can be found in the
./tests/auto_increment.res
file.
At this point, you should have the server running. However,
none of the initial MySQL accounts have a password, so you
should assign passwords using the instructions found in
Section 2.9.3, “Securing the Initial MySQL Accounts”.