DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) mysql-install-db

Info Catalog (mysql.info) unix-post-installation (mysql.info) unix-post-installation (mysql.info) automatic-start
 
 2.9.2.1 Problems Running `mysql_install_db'
 ...........................................
 
 The purpose of the `mysql_install_db' script is to generate new MySQL
 privilege tables. It does not overwrite existing MySQL privilege
 tables, and it does not affect any other data.
 
 If you want to re-create your privilege tables, first stop the `mysqld'
 server if it's running. Then rename the `mysql' directory under the data
 directory to save it, and then run `mysql_install_db'. Suppose that
 your current directory is the MySQL installation directory and that
 `mysql_install_db' is located in the `bin' directory and the data
 directory is named `data'. To rename the `mysql' database and re-run
 `mysql_install_db', use these commands.
 
      shell> mv data/mysql data/mysql.old
      shell> bin/mysql_install_db --user=mysql
 
 When you run `mysql_install_db', you might encounter the following
 problems:
 
    * *`mysql_install_db' fails to install the grant tables*
 
      You may find that `mysql_install_db' fails to install the grant
      tables and terminates after displaying the following messages:
 
           Starting mysqld daemon with databases from XXXXXX
           mysqld ended
 
      In this case, you should examine the error log file very
      carefully. The log should be located in the directory `XXXXXX'
      named by the error message and should indicate why `mysqld' didn't
      start. If you do not understand what happened, include the log
      when you post a bug report. See  bug-reports.
 
    * *There is a `mysqld' process running*
 
      This indicates that the server is running, in which case the grant
      tables have probably been created already. If so, there is no need
      to run `mysql_install_db' at all because it needs to be run only
      once (when you install MySQL the first time).
 
    * *Installing a second `mysqld' server does not work when one server
      is running*
 
      This can happen when you have an existing MySQL installation, but
      want to put a new installation in a different location. For
      example, you might have a production installation, but you want to
      create a second installation for testing purposes. Generally the
      problem that occurs when you try to run a second server is that it
      tries to use a network interface that is in use by the first
      server. In this case, you should see one of the following error
      messages:
 
           Can't start server: Bind on TCP/IP port:
           Address already in use
           Can't start server: Bind on unix socket...
 
      For instructions on setting up multiple servers, see 
      multiple-servers.
 
    * *You do not have write access to the `/tmp' directory*
 
      If you do not have write access to create temporary files or a
      Unix socket file in the default location (the `/tmp' directory),
      an error occurs when you run `mysql_install_db' or the `mysqld'
      server.
 
      You can specify different locations for the temporary directory
      and Unix socket file by executing these commands prior to starting
      `mysql_install_db' or `mysqld', where SOME_TMP_DIR is the full
      pathname to some directory for which you have write permission:
 
           shell> TMPDIR=/SOME_TMP_DIR/
           shell> MYSQL_UNIX_PORT=/SOME_TMP_DIR/mysql.sock
           shell> export TMPDIR MYSQL_UNIX_PORT
 
      Then you should be able to run `mysql_install_db' and start the
      server with these commands:
 
           shell> bin/mysql_install_db --user=mysql
           shell> bin/mysqld_safe --user=mysql &
 
      If `mysql_install_db' is located in the `scripts' directory,
      modify the first command to `scripts/mysql_install_db'.
 
      See  problems-with-mysql-sock, and 
      environment-variables.
 
 There are some alternatives to running the `mysql_install_db' script
 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, it is preferable 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 necessary `GRANT' and `REVOKE'
      statements.
 
      If you want to install MySQL on several 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 `mysql' database directory. Then run the
      `mysql_install_db' script again.
 
    * 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.
 
Info Catalog (mysql.info) unix-post-installation (mysql.info) unix-post-installation (mysql.info) automatic-start
automatically generated byinfo2html