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

Проблема с перезапуском сервера MySQL, установленного через aptitude на Ubuntu Lucid Lynx

Я использую Ubuntu Lucid Lynx (10.04) и установил сервер MySQL через aptitude. Программа установки автоматически добавила пользователя с именем mysql (вначале его не было в файле / etc / passwd и существует там после установки) и запустила сервер MySQL.

Затем мне нужно было изменить my.cnf (чтобы разрешить удаленный доступ к серверу MySQL). Когда я перезапустил сервер MySQL с

$ sudo /etc/init.d/mysql перезапуск

это висит. Но отображение процессов командой «top» в другом терминале указывало, что сервер MySQL работал с пользователем root. Но my.cnf явно устанавливает

пользователь = MySQL

Потом я попробовал

$ sudo service mysql перезапуск

А результат был еще хуже. Он вообще не запускал сервер MySQL.

Насколько я помню, в предыдущих версиях Ubuntu я с такой проблемой не сталкивался.

Итак, мои вопросы:

  1. Как я могу запустить сервер MySQL от пользователя с именем mysql в Ubuntu Lucid Lynx (10.04)?

  2. Это самый надежный способ запустить сервер MySQL в Ubuntu Lucid Lynx (10.04),

    /etc/init.d/mysql start

    или

    запуск службы mysql

    или

    запустить mysql

    а в чем разница?

Заранее спасибо.

Тадатоши

Спасибо, Флориан и user46528,

Основываясь на ответе Флориана, я начал использовать только «запуск службы mysql».

Затем, следуя ответу user46528, я начал исследовать проблему.

Короче говоря, оказалось, что проблема заключалась в настройке адреса привязки на IP-адрес сервера в my.cnf.

Я обнаружил следующие ключевые проблемы:

  • Если используется Amazon EC2, в качестве адреса привязки должен быть указан частный IP-адрес.

  • После сбоя "service mysql start" из-за проблемы с адресом привязки в my.cnf в Ubuntu Lucid Lynx, независимо от того, что делается для ее решения, он продолжает зависать. Мне нужно было установить адрес привязки на правильный IP-адрес и перезагрузить Ubuntu.

Более подробное объяснение того, что произошло:

  1. Я использую Amazon EC2, у которого есть общедоступный IP-адрес и частный IP-адрес для каждого экземпляра, в моем случае экземпляр Ubuntu Lucid Lynx.

  2. С настройкой адреса привязки по умолчанию в my.cnf, который имеет адрес привязки = 127.0.0.1 (localhost), «остановка службы mysql» и «запуск службы mysql» работали.

  3. В my.cnf я изменил адрес привязки на публичный IP-адрес Amazon EC2. Тогда "служба mysql stop" работала, но "service mysql start" зависла.

  4. В /var/log/mysql/error.log я увидел «[ОШИБКА] Невозможно запустить сервер: привязка к порту TCP / IP: невозможно назначить запрошенный адрес».

  5. В my.cnf я изменил адрес привязки на частный IP-адрес Amazon EC2. Затем зависают и "service mysql stop", и "service mysql start".

  6. В my.cnf я изменил адрес привязки на 127.0.0.1 по умолчанию. По-прежнему зависают и "service mysql stop", и "service mysql start".

  7. В my.cnf я изменил адрес привязки на частный IP-адрес Amazon EC2. Затем я перезагрузил сервер Linux (командой перезагрузки Amazon EC2). Затем сервер MySQL запустился правильно с пользователем с именем mysql.

  8. «sudo netstat -na» отображает порт 3306 (порт для сервера MySQL) с частным IP-адресом с состоянием «LISTEN».

  9. Доступ к порту из другого экземпляра Amazon EC2 с помощью Telnet частный IP 3306 "означает, что он подключен.

Еще раз спасибо за вашу помощь. Без них я не смог решить проблему.

С уважением, Тадатоши

/etc/init.d/xxxx start используется для запуска служб с использованием сценариев инициализации SysV. Ubuntu использует выскочка вместо SysV init и сценарии инициализации преобразуются в собственные выскочки. Обычно сценарии инициализации преобразованных заданий отображают предупреждение и вызывают выскочка.

start xxxx используется с услугами, использующими выскочка и не работает с сервисами, использующими SysV init.

service xxxx start автоматически выбирает правильный, поэтому всегда безопасно использовать служба

Насколько мне известно, MySQL был преобразован для использования выскочки в 10.04.

если не запустился, т.е. ps ax | grep mysql не показывает запущенные safe_mysqld и mysqld, взгляните на /var/lib/mysql/hostname.err (где hostname - это имя хоста вашей машины), и у него есть несколько подробный журнал. restart в пакете по умолчанию останавливает, запускает, но мне интересно, действительно ли mysqld не останавливается.

/etc/init.d/mysql stop

ps ax | grep mysql (убедитесь, что не запущены никакие процессы)

/etc/init.d/mysql start

Теперь, если вы смотрите на процессы, safe_mysqld работает как root, процесс mysqld работает как mysql. Если mysqld дает сбой, safe_mysqld зацикливается и пытается перезапустить mysql. Safe_mysqld или mysqld - это процесс, который вы видели запущенным от имени пользователя root?

По умолчанию my.cnf говорит port = 3306 и bind-address = 127.0.0.1. Если у вас не настроен интерфейс обратной связи, эта привязка завершится ошибкой.

Чтобы создать интерфейс обратной петли:

ifconfig lo up 127.0.0.1