Я использую 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 я с такой проблемой не сталкивался.
Итак, мои вопросы:
Как я могу запустить сервер MySQL от пользователя с именем mysql в Ubuntu Lucid Lynx (10.04)?
Это самый надежный способ запустить сервер 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.
Более подробное объяснение того, что произошло:
Я использую Amazon EC2, у которого есть общедоступный IP-адрес и частный IP-адрес для каждого экземпляра, в моем случае экземпляр Ubuntu Lucid Lynx.
С настройкой адреса привязки по умолчанию в my.cnf, который имеет адрес привязки = 127.0.0.1 (localhost), «остановка службы mysql» и «запуск службы mysql» работали.
В my.cnf я изменил адрес привязки на публичный IP-адрес Amazon EC2. Тогда "служба mysql stop" работала, но "service mysql start" зависла.
В /var/log/mysql/error.log я увидел «[ОШИБКА] Невозможно запустить сервер: привязка к порту TCP / IP: невозможно назначить запрошенный адрес».
В my.cnf я изменил адрес привязки на частный IP-адрес Amazon EC2. Затем зависают и "service mysql stop", и "service mysql start".
В my.cnf я изменил адрес привязки на 127.0.0.1 по умолчанию. По-прежнему зависают и "service mysql stop", и "service mysql start".
В my.cnf я изменил адрес привязки на частный IP-адрес Amazon EC2. Затем я перезагрузил сервер Linux (командой перезагрузки Amazon EC2). Затем сервер MySQL запустился правильно с пользователем с именем mysql.
«sudo netstat -na» отображает порт 3306 (порт для сервера MySQL) с частным IP-адресом с состоянием «LISTEN».
Доступ к порту из другого экземпляра 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