Назад | Перейти на главную страницу

Почему я не могу запустить mysqld_safe в Red Hat Enterprise Linux (RHEL)?

Я загрузил mysql-5.1.44.tar.gz и установил его, выполнив следующие команды:

$ ./configure
$ make
$ make install

Все установилось без ошибок. Затем я попытался запустить сервер mysql, введя следующую команду:

$ mysqld_safe --user=mysql &
100310 13:25:56 mysqld_safe Logging to '/usr/local/var/perfportal2.err'.
100310 13:25:56 mysqld_safe Starting mysqld daemon with databases from /usr/local/var
100310 13:25:56 mysqld_safe mysqld from pid file /usr/local/var/perfportal2.pid ended

$ cat /usr/local/var/myserver.err 
100310 13:25:56 mysqld_safe Starting mysqld daemon with databases from /usr/local/var
/usr/local/libexec/mysqld: Table 'mysql.plugin' doesn't exist
100310 13:25:56 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100310 13:25:56 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
100310 13:25:56 mysqld_safe mysqld from pid file /usr/local/var/perfportal2.pid ended

Я предполагаю, что в процессе установки каталог данных не был создан.

Есть предложения о том, что мне делать?

Если ты бежишь make install и уже имел mysql-server пакет установлен, скорее всего, у вас уже был mysql схема базы данных в / var / lib / mysql. Версия, включенная в RHEL5, - 5.0.77, что может объяснить ошибку mysql-upgrade, поскольку этот сценарий обновляет схему между версиями MySQL. Ошибка также может быть очень похожей, если вы не создали исходную схему в процессе установки.

Если вы собираетесь компилировать из исходного кода и не указывать места установки, вам необходимо сначала удалить системные пакеты mysql. Если вы хотите сохранить как системные пакеты, так и исходную установку, в пользу чего иногда приводят аргументы, вам нужно быть осторожным, чтобы не растоптать весь системный пакет. Обычно это означает установку источника в таком месте, как /usr/local/mysql в отличие от значения по умолчанию /usr/local. Вы можете сделать это с помощью ./configure --prefix=/usr/local/mysql. Здесь есть более подробные сведения и лучшие практики, которые я не буду вдаваться в подробности.

Хотя могут быть веские причины для компиляции из исходного кода, вы можете пересмотреть свою, поскольку она может вам не понадобиться.

rpm -qa | grep mysql отобразит все установленные в данный момент пакеты. Наверное mysql-server и mysql-client.

В противном случае вы не выполнили процедуру из документации. Даже если вы это сделали, вам придется повторить это после удаления пакетов MySQL.

Из INSTALL-SOURCE, который был включен в архив mysql-5.1.44:

2.3.1. Source Installation Overview

   The basic commands that you must execute to install a MySQL source
   distribution are:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &
  1. Устанавливайте софт из пакетов !!! Скажите нет компиляции исходного кода. Понимаете, сейчас 2010 год?
    Если для вашего программного обеспечения нет пакета, вам следует построи сам.
  2. Сообщение об ошибке ясно говорит, что вы должны запустить mysql_upgrade
  3. Вы также можете попробовать запустить mysql_install_db если выше не работает.