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
не в состоянии установить таблицы
привилегий и заканчивает свою работу после вывода следующих сообщений:
starting mysqld daemon with databases from XXXXXX
mysql daemon ended
В таком случае необходимо очень тщательно изучить системный журнал! Этот
журнал должен находиться в каталоге `XXXXXX', указанном в данном сообщении
об ошибке. В нем содержится информация о том, почему не запустился mysqld
.
Если вам не удалось разобраться в том, что произошло, при посылке отчета
об ошибке включите в него данный журнал, используя mysqlbug
! См.раздел
See section 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 section 4.1.3 Установка нескольких серверов на один компьютер.
- Нет доступа для записи в `/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
-
Если вы работаете на версии 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
, чтобы сервер перегрузил таблицы привилегий.
Add your own comment.