поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    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 Раздел 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) или разрешения создавать временные файлы в каталоге /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, чтобы сервер перегрузил таблицы привилегий.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100