MySQL Reference Manual for version 4.0.18.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.4.2 Unix Post-installation Procedures

2.4.2.1 Problems Running mysql_install_db  
2.4.2.2 Starting and Stopping MySQL Automatically  
2.4.2.3 Starting and Troubleshooting the MySQL Server  

After you install 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.

Normally you install the grant tables and start the server like this for installation from a source distribution:

 
shell> cd mysql_installation_directory
shell> bin/mysql_install_db
shell> bin/mysqld_safe --user=mysql &

For a binary distribution (not RPM or PKG packages), do this:

 
shell> cd mysql_installation_directory
shell> scripts/mysql_install_db
shell> bin/mysqld_safe --user=mysql &

The mysql_install_db script creates 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 entries are created without passwords. The mysqld_safe script starts the mysqld server. (For versions of MySQL older than 4.0, use safe_mysqld rather than mysqld_safe.)

mysql_install_db will not overwrite any old privilege tables, so it should be safe to run in any circumstances. If you don't want to have the test database you can remove it with mysqladmin -u root drop test after starting the server.

Testing is most easily done from the top-level directory of the MySQL distribution. For a binary distribution, this is your installation directory (typically something like `/usr/local/mysql'). For a source distribution, this is the main directory of your MySQL source tree.

In the commands shown in this section and in the following subsections, BINDIR is the path to the location in which programs like mysqladmin and mysqld_safe are installed. For a binary distribution, this is the `bin' directory within the distribution. For a source distribution, BINDIR is probably `/usr/local/bin', unless you specified an installation directory other than `/usr/local' when you ran configure. EXECDIR is the location in which the mysqld server is installed. For a binary distribution, this is the same as BINDIR. For a source distribution, EXECDIR is probably `/usr/local/libexec'.

Testing is described in detail:

  1. If necessary, start the mysqld server and set up the initial MySQL grant tables containing the privileges that determine how users are allowed to connect to the server. This is normally done with the mysql_install_db script:

     
    shell> scripts/mysql_install_db
    

    Typically, mysql_install_db needs to be run only the first time you install MySQL. Therefore, if you are upgrading an existing installation, you can skip this step. (However, mysql_install_db is quite safe to use and will not update any tables that already exist, so if you are unsure of what to do, you can always run mysql_install_db.)

    mysql_install_db creates six tables (user, db, host, tables_priv, columns_priv, and func) in the mysql database. A description of the initial privileges is given in 5.5.3 Setting Up the Initial MySQL 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_.

    If you don't set up the grant tables, the following error will appear in the log file when you start the server:

     
    mysqld: Can't find file: 'host.frm'
    

    This may also happen with a binary MySQL distribution if you don't start MySQL by executing exactly ./bin/mysqld_safe. See section mysqld_safe.

    You might need to run mysql_install_db as root. However, if you prefer, you can run the MySQL server as an unprivileged (non-root) user, provided that the user can read and write files in the database directory. Instructions for running MySQL as an unprivileged user are given in Changing MySQL user.

    If you have problems with mysql_install_db, see mysql_install_db.

    There are some alternatives to running the mysql_install_db script as it is provided in the MySQL distribution:

    For more information about these alternatives, see 5.5.3 Setting Up the Initial MySQL Privileges.

  2. Start the MySQL server like this:

     
    shell> cd mysql_installation_directory
    shell> bin/mysqld_safe &
    

    For versions of MySQL older than 4.0, substitute bin/safe_mysqld for bin/mysqld_safe in the final command.

    If you have problems starting the server, see 2.4.2.3 Starting and Troubleshooting the MySQL Server.

  3. Use mysqladmin to verify that the server is running. The following commands provide a simple test to check that the server is up and responding to connections:

     
    shell> BINDIR/mysqladmin version
    shell> BINDIR/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> BINDIR/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.

  4. Verify that you can shut down the server:

     
    shell> BINDIR/mysqladmin -u root shutdown
    

  5. Verify that you can restart the server. Do this using mysqld_safe or by invoking mysqld directly. For example:

     
    shell> BINDIR/mysqld_safe --log &
    

    If mysqld_safe fails, try running it from the MySQL installation directory (if you are not already there). If that doesn't work, see 2.4.2.3 Starting and Troubleshooting the MySQL Server.

  6. Run some simple tests to verify that the server is working. The output should be similar to what is shown here:

     
    shell> BINDIR/mysqlshow
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    +-----------+
    
    shell> BINDIR/mysqlshow mysql
    Database: mysql
    +--------------+
    |    Tables    |
    +--------------+
    | columns_priv |
    | db           |
    | func         |
    | host         |
    | tables_priv  |
    | user         |
    +--------------+
    
    shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
    +------+--------+------+
    | host | db     | user |
    +------+--------+------+
    | %    | test   |      |
    | %    | test_% |      |
    +------+--------+------+
    

    There is also 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. The following additional Perl modules are required to run the benchmark suite:

     
    DBI
    DBD::mysql
    Data::Dumper
    Data::ShowTable
    

    These modules can be obtained from CPAN http://www.cpan.org/. See section 2.7.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> 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 Version 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', do this:

     
    shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
    

    The expected result of the test can be found in the `./tests/auto_increment.res' file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by rdg (Feb 25 2004) using texi2html