Скрипт 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
не в состоянии установить таблицы привилегий и заканчивает свою работу после вывода следующих сообщений:starting mysqld daemon with databases from XXXXXX mysql daemon ended
В таком случае необходимо очень тщательно изучить системный журнал! Этот журнал должен находиться в каталоге
XXXXXX
, указанном в данном сообщении об ошибке. В нем содержится информация о том, почему не запустилсяmysqld
. Если вам не удалось разобраться в том, что произошло, при посылке отчета об ошибке включите в него данный журнал, используяmysqlbug
! См.раздел See Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или проблемах». -
Уже существует работающий демон
mysqld
В таком случае вам вообще не следует запускать
mysql_install_db
. Скриптmysql_install_db
должен запускаться только однажды при установке MySQL первый раз. -
При работающем демоне
mysqld
установка второго демона не работаетЭто может случиться, когда уже существует установленный сервер MySQL, но вы хотите произвести новую инсталляцию в другом месте (например, для тестирования или, возможно, вам просто требуется запустить две инсталляции в одно и то же время). Вообще говоря, такая проблема, которая возникает при попытке запустить второй сервер, заключается в том, что второй сервер пытается использовать тот же сокет и порт, что и старый. В этом случае вы можете получить следующее сообщение об ошибке:
Can't start server: Bind on TCP/IP port: Address already in use
илиCan't start server: Bind on unix socket...
. See Раздел 4.1.3, «Установка нескольких серверов на один компьютер». -
Если у вас нет доступа для создания файла сокета в принятом по умолчанию месте (в
/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 Раздел A.4.5, «Как защитить или изменить сокет-файл MySQL
/tmp/mysql.sock
». Путьsome_tmp_dir
должен указывать на некоторый каталог, для которого у вас есть доступ для записи. See Приложение E, Переменные окружения. После этого у вас должна появиться возможность запуститьmysql_install_db
и начать работу сервера с помощью следующих команд:shell> scripts/mysql_install_db shell> BINDIR/safe_mysqld &
-
Немедленный аварийный отказ
mysqld
Если вы работаете на версии RedHat 5.0 с версией
glibc
более старой, чем 2.0.7-5, следует позаботиться о том, чтобы установить все патчи дляglibc
! В архивах рассылки MySQL имеется большое количество писем об этом. Ссылки на архивы писем доступны в онлайновом режиме на https://lists.mysql.com/. Обращайтесь также к разделу See Раздел 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
, чтобы сервер перегрузил таблицы привилегий.