Справочное руководство по MySQL версии 4.0.11-gamma

         

2.4.1 Проблемы при запуске mysql_install_db


2.4.1 Проблемы при запуске mysql_install_db

Скрипт mysql_install_db предназначен только для создания новых таблиц привилегий MySQL. Он не влияет ни на какие другие данные! А если таблицы привилегий MySQL уже установлены, этот скрипт ничего не будет делать!

Для того чтобы создать таблицы привилегий заново, необходимо остановить сервер mysqld, если он работает, и затем выполнить что-нибудь вроде:

mv mysql-data-directory/mysql mysql-data-directory/mysql-old
mysql_install_db


В этом разделе перечислены проблемы, с которыми можно столкнуться при запуске mysql_install_db:

mysql_install_db не устанавливает таблицы привилегий


mysql_install_db не устанавливает таблицы привилегий

Может оказаться, что mysql_install_db не в состоянии установить таблицы привилегий и заканчивает свою работу после вывода следующих сообщений:
starting mysqld daemon with databases from XXXXXX
mysql daemon ended
В таком случае необходимо очень тщательно изучить системный журнал! Этот журнал должен находиться в каталоге `XXXXXX', указанном в данном сообщении об ошибке. В нем содержится информация о том, почему не запустился mysqld. Если вам не удалось разобраться в том, что произошло, при посылке отчета об ошибке включите в него данный журнал, используя mysqlbug! См.раздел See section 1.8.1.3 Как отправлять отчеты об ошибках или проблемах.

Уже существует работающий демон mysqld


Уже существует работающий демон mysqld

В таком случае вам вообще не следует запускать mysql_install_db. Скрипт mysql_install_db должен запускаться только однажды при установке MySQL первый раз.

При работающем демоне mysqld установка второго демона не работает


При работающем демоне mysqld установка второго демона не работает

Это может случиться, когда уже существует установленный сервер MySQL, но вы хотите произвести новую инсталляцию в другом месте (например, для тестирования или, возможно, вам просто требуется запустить две инсталляции в одно и то же время). Вообще говоря, такая проблема, которая возникает при попытке запустить второй сервер, заключается в том, что второй сервер пытается использовать тот же сокет и порт, что и старый. В этом случае вы можете получить следующее сообщение об ошибке: Can't start server: Bind on TCP/IP port: Address already in use или Can't start server: Bind on unix socket.... See section 4.1.3 Установка нескольких серверов на один компьютер.

Нет доступа для записи в `/tmp'


Нет доступа для записи в `/tmp'

Если у вас нет доступа для создания файла сокета в принятом по умолчанию месте (в `/tmp') или разрешения создавать временные файлы в каталоге `/tmp', то вы получите ошибку при запуске mysql_install_db или при запуске или использовании mysqld. Необходимо указать другой каталог для сокета и временных файлов следующим образом:
shell> TMPDIR=/some_tmp_dir/
shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell> export TMPDIR MYSQL_UNIX_PORT
See section A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock'. Путь `some_tmp_dir' должен указывать на некоторый каталог, для которого у вас есть доступ для записи. See section F Переменные окружения. После этого у вас должна появиться возможность запустить mysql_install_db и начать работу сервера с помощью следующих команд:
shell> scripts/mysql_install_db
shell> BINDIR/safe_mysqld &

Немедленный аварийный отказ mysqld


Немедленный аварийный отказ mysqld

Если вы работаете на версии RedHat 5.0 с версией glibc более старой, чем 2.0.7-5, следует позаботиться о том, чтобы установить все патчи для glibc! В архивах рассылки MySQL имеется большое количество писем об этом. Ссылки на архивы писем доступны в онлайновом режиме на http://lists.mysql.com/. Обращайтесь также к разделу See section 2.6.1 Примечания к Linux (Все версии Linux). Можно также запустить mysqld вручную, используя опцию --skip-grant-tables, и самостоятельно добавить информацию о привилегиях, при помощи mysql:
shell> BINDIR/safe_mysqld --skip-grant-tables &
shell> BINDIR/mysql -u root mysql
Из mysql в ручном режиме выполните команды SQL в mysql_install_db. Удостоверьтесь, что после этого вы запустили mysqladmin flush-privileges или mysqladmin reload, чтобы сервер перегрузил таблицы привилегий.