(mysql.info.gz) Unix post-installation
Info Catalog
(mysql.info.gz) Windows post-installation
(mysql.info.gz) Post-installation
(mysql.info.gz) Default privileges
2.9.2 Unix Post-Installation Procedures
---------------------------------------
Menu
* mysql_install_db Problems Running `mysql_install_db'
* Automatic start Starting and Stopping MySQL Automatically
* Starting server Starting and Troubleshooting the MySQL Server
After installing MySQL on Unix, you need to initialize the grant tables,
start the server, and make sure that the server works okay. You may
also wish to arrange for the server to be started and stopped
automatically when your system starts and stops. You should also
assign passwords to the accounts in the grant tables.
On Unix, the grant tables are set up by the `mysql_install_db' program.
For some installation methods, this program is run for you
automatically:
* If you install MySQL on Linux using RPM distributions, the server
RPM runs `mysql_install_db'.
* If you install MySQL on Mac OS X using a PKG distribution, the
installer runs `mysql_install_db'.
Otherwise, you'll need to run `mysql_install_db' yourself.
The following procedure describes how to initialize the grant tables (if
that has not previously been done) and then start the server. It also
suggests some commands that you can use to test whether the server is
accessible and working properly. For information about starting and
stopping the server automatically, see Automatic start.
After you complete the procedure and have the server running, you should
assign passwords to the accounts created by `mysql_install_db'.
Instructions for doing so are given in Default privileges.
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.
1. 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.
2. 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 that 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 data directory, 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 Default
privileges. 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:
`user', `db', `host', `tables_priv', `columns_priv', `func', and
possibly others depending on your version of MySQL.
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 problems with `mysql_install_db', see
`mysql_install_db' mysql_install_db.
There are some alternatives to running the `mysql_install_db'
script as it is provided in the MySQL distribution:
* If you want the initial privileges to be different from the
standard defaults, you can modify `mysql_install_db' before
you run it. However, a preferable technique is to use
`GRANT' and `REVOKE' to change the privileges after the grant
tables have been set up. In other words, you can run
`mysql_install_db', and then use `mysql -u root mysql' to
connect to the server as the MySQL `root' user so that you
can issue the `GRANT' and `REVOKE' statements.
If you want to install MySQL on a lot of machines with the
same privileges, you can put the `GRANT' and `REVOKE'
statements in a file and execute the file as a script using
`mysql' after running `mysql_install_db'. For example:
shell> bin/mysql_install_db --user=mysql
shell> bin/mysql -u root < your_script_file
By doing this, you can avoid having to issue the statements
manually on each machine.
* It is possible to re-create the grant tables completely after
they have previously been created. You might want to do this
if you're just learning how to use `GRANT' and `REVOKE' and
have made so many modifications after running
`mysql_install_db' that you want to wipe out the tables and
start over.
To re-create the grant tables, remove all the `.frm', `.MYI',
and `.MYD' files in the directory containing the `mysql'
database. (This is the directory named `mysql' under the
data directory, which is listed as the `datadir' value when
you run `mysqld --help'.) Then run the `mysql_install_db'
script again.
* For MySQL versions older than 3.22.10, you should not
delete the `.frm' files. If you accidentally do this, you
should copy them back into the `mysql' directory from your
MySQL distribution before running `mysql_install_db'.
* You can start `mysqld' manually using the
`--skip-grant-tables' option and add the privilege
information yourself using `mysql':
shell> bin/mysqld_safe --user=mysql --skip-grant-tables &
shell> bin/mysql mysql
From `mysql', manually execute the SQL commands contained in
`mysql_install_db'. Make sure that you run `mysqladmin
flush-privileges' or `mysqladmin reload' afterward to tell
the server to reload the grant tables.
Note that by not using `mysql_install_db', you not only have
to populate the grant tables manually, you also have to
create them first.
3. Start the MySQL server:
shell> bin/mysqld_safe --user=mysql &
For versions of MySQL older than 4.0, substitute `bin/safe_mysqld'
for `bin/mysqld_safe' in this command.
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 `root'.
Otherwise, you should execute the script while logged in 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 Changing MySQL user.
If you neglected to create the grant tables before proceeding to
this step, the following message will appear 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 Starting
server.
4. 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 8.40 Distrib 4.0.18, for linux on i586
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 4.0.18-log
Protocol version 10
Connection Localhost via Unix socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Threads: 1 Questions: 9 Slow queries: 0
Opens: 7 Flush tables: 2 Open tables: 0
Queries per second avg: 0.000
Memory in use: 132K Max memory used: 16773K
To see what else you can do with `mysqladmin', invoke it with the
`--help' option.
5. Verify that you can shut down the server:
shell> bin/mysqladmin -u root shutdown
6. Verify that you can restart the server. 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 Starting server.
7. 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 |
| host |
| tables_priv |
| user |
+--------------+
shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
8. 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 uses the Perl DBI module to provide a
database-independent interface to the various databases, and some
other additional Perl modules are required to run the benchmark
suite. You must have the following modules installed:
DBI
DBD::mysql
Data::Dumper
Data::ShowTable
These modules can be obtained from CPAN (`http://www.cpan.org/').
Perl installation.
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. Beginning with MySQL 3.22, 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.
9. 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 in Default
privileges.
As of MySQL 4.1.3, the installation procedure creates time zone tables
in the `mysql' database. However, you must populate the tables manually.
Instructions to do this are given in Time zone support.
Info Catalog
(mysql.info.gz) Windows post-installation
(mysql.info.gz) Post-installation
(mysql.info.gz) Default privileges
automatically generated byinfo2html