Ошибка запуска сервера MySql "Сервер вышел без обновления файла PID"
На Snow Leopard при запуске MySQL выдается следующая ошибка:
Сервер вышел без обновления файла PID
my.cnf
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
pid-file=/var/run/mysqld/mysqld.pid
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
55 ответов
Попробуйте найти ваш лог-файл с суффиксом ".err", там должно быть больше информации. Это может быть в:
/usr/local/var/mysql/your_computer_name.local.err
Это, вероятно, проблема с разрешениями
проверьте, работает ли какой-либо экземпляр mysql
ps -ef | grep mysql
если да, вы должны остановить это или убить процесс
убить -9 PID
где
PID
число, отображаемое рядом с именем пользователя на выходе предыдущей командыпроверить право собственности на
/usr/local/var/mysql/
ls -laF /usr/local/var/mysql/
если это владелец
root
Вы должны изменить этоmysql
или жеyour_user
sudo chown -R mysql /usr/local/var/mysql/
Вы следовали инструкциям от brew install mysql
?
Настройте базы данных для запуска в качестве учетной записи пользователя с:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Чтобы настроить базовые таблицы в другой папке или использовать другого пользователя для запуска mysqld, просмотрите справку для mysqld_install_db
:
mysql_install_db --help
и просмотрите документацию MySQL:
- http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html
- http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
Например, для запуска от имени пользователя "mysql" может потребоваться sudo
:
sudo mysql_install_db ...options...
Запустите mysqld вручную:
mysql.server start
Примечание: если это не удается, вы, вероятно, забыли выполнить первые два шага выше
У меня была та же проблема на моем компьютере Mac (правильно выполнили все шаги установки, предложенные brew install
).
Удаление файла ошибки исправило это для меня:
sudo rm -rf /usr/local/var/mysql/dev.work.err
(dev.work
это мое имя хоста)
Это сработало, потому что dev.work.err
принадлежал _mysql:wheel
вместо моего собственного имени пользователя.
CHOWN-in файл ошибок, вероятно, исправил бы это также.
После перезагрузки у меня возникла такая же проблема. Вот как я это исправил:
sudo chown -R _mysql /usr/local/var/mysql
Это сработало для меня...
Проверьте все запущенные процессы MySQL:
$ ps aux | grep mysql
USER PID %CPU %MEM
_mysql 5970 0.0 0.4 ...
Затем убейте все процессы, перечисленные в приведенной выше команде, используя следующее:
$ sudo kill -9 [PID]
замещать [PID]
с индивидуальным PID из списка выше, например 5970
,
Сделайте это для всех строк, которые вы видите с первой командой.
Затем вы можете снова запустить сервер MySQL:
mysql.server start
Попробуй удалить ib_logfile0
а также ib_logfile1
файлы, а затем снова запустите mysql
rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1
Меня устраивает.
Эта ошибка может возникать при попытке запустить msql после неправильного завершения работы.
Взгляните на файл журнала ошибок mysql. Если упоминается что-то вроде "Убедитесь, что у вас еще нет другого процесса mysqld, использующего те же данные или файлы журнала"., то вам нужно правильно завершить этот процесс.
Посмотрите, на каком процессе запущен mysql, используйте эту команду:
lsof -i:3306
Ваш вывод должен выглядеть так:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 4249 username 17u IPv4 0x7843d9d130469c0b 0t0 TCP localhost:mysql (LISTEN)
- Завершите процесс, выполняющий mysql:
kill -15 4249
Kill -15 отправляет сиганла процессу, чтобы высвободить все ресурсы, которые он блокирует, и завершает процесс после.
- Теперь MySQL должен запуститься без проблем:
mysql.server start
Если вам не помог ни один ответ, просто удалите папку /usr/local/var/mysql
и затем снова установите mysql brew reinstall mysql
,
Мой файл ошибок также сказал мне, что порт может использоваться другим процессом, но просто работает sudo mysql.server start
исправил проблему для меня.
Для меня решение было простым:
top
показал, что mysqld уже работает
sudo killall mysqld
затем позволил процессу начать
Я недавно сталкивался с этой проблемой, однако это работало прежде, затем прекратилось.
Это было потому, что я изначально начал mysql.server
как корень вместо меня.
Исправление состояло в том, чтобы удалить файл журнала ошибок (который принадлежал _mysql
). Начиная это снова получил это прошло.
Для меня мне пришлось переустановить MySQL
brew reinstall mysql
а затем ниже Чтобы запустить, запустите MySQL сейчас и перезапустите при входе в систему:
brew services start mysql
Решение, которое работает для меня, было здесь: https://serverfault.com/questions/334284/cant-create-pid-file-on-mysql-server-permission-denied
Изменение некоторых моих разрешений, похоже, помогло. Я использую Macbook Air середины 2012 года с OS X 10.8.2 и mysql был установлен вместе с homebrew.
chmod 0755 /var
chown root:wheel /var/tmp
sudo chmod 0771 /usr/local/var/mysql/*
Это сработало для меня:
На Mac с Homebrew:
Перечислите все существующие экземпляры mysql, запустив
$ brew services
Удалите каждый экземпляр, запустив
$ brew uninstall <instance_name>
Удалите каталог Mysql в /usr/local/var/mysql:
$ rm -rf /usr/local/var/mysql
Переустановите mysql с помощью homebrew:
$ brew install mysql
$ brew install mysql@<version> #Optional
Повторно запустить mysql.server start
$ mysql.server start
Я использую,
- новый MacBook Pro OSX 10.7.3.x
- gcc через OSX GCC Installer
Я установил MySQL с помощью homebrew ('brew install mysql'). Он установил пару зависимостей, а затем mysql.
Когда я попытался запустить его,
west$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/west.local.pid).
Я выполнил эту команду,
west$ /usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db
и MySQL работает.
Обратите внимание, что вам нужно запустить mysql_install_db из верхнего уровня каталога mysql (IE, usr/local/Cellar/mysql/5.5.25). Запуск его непосредственно в каталоге /scripts не дает ему достаточно контекста для запуска.
С помощью нескольких ответов, опубликованных здесь, я смог найти проблему
Сначала я бегу
sudo -i
Так что я мог бы иметь root-доступ.
Чем я удалил файл xxxx.err
rm -rf /usr/local/mysql/data/xxxx.err
после того, как я запустил MySQL в SafeMode
/usr/local/mysql/bin/mysqld_safe start
Он попытается запустить и завершит работу из-за ошибки... будет создан новый файл xxx.err, и вам необходимо прочитать его, чтобы увидеть причину ошибки
tail -f /usr/local/mysql/data/mysqld.local.err
В моем случае по какой-то причине в нем отсутствовала какая-то папка и файл /var/log/
папка... Итак, я создал оба
cd /var/log
mkdir mysql
touch mysql-bin.index
После создания нового файла, чем вам нужно изменить разрешение
chown -R _mysql /var/log/mysql
Когда все эти шаги были сделаны, моя база данных сразу начала работать...
Надеюсь, что это может помочь другим здесь... Ключ должен прочитать ошибку и войти в систему и найти, что не так...
У меня была эта проблема при попытке заваривать обновление на MacOS X 10.7.5.
К сожалению, MySQL был также обновлен до 5.6.10 с 5.5.14. Пробовал новое, не сработало.
Я решил вернуться к своей старой настройке и сделал
brew switch mysql 5.5.14
Это не решило проблему. В другом месте я прочитал и сделал это, вуаля! Все вернулось:)
cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
Для меня решение было переопределить / исправить каталог данных в / etc / my / cnf.
Я собрал MySQL 5.5.27 из исходного кода, следуя указаниям в файле readme:
# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
mysqld_safe завершил свою работу без объяснения причин. Бег /etc/init.d/mysql.server start
привело к ошибке:
"Сервер вышел без обновления файла PID"
Я заметил кое-что странное в инструкции по установке. Он изменил владельца на mysql для каталога "data", но не на "var"; это необычно, потому что в течение многих лет мне приходилось следить за тем, чтобы директория var была доступна для записи в mysql. Так я вручную побежал chown -R mysql /usr/local/mysql/var
а затем попытался запустить его снова. Все еще не повезло. Но что еще хуже, нет файла.err в директории var - он был в директории data! поэтому scripts / mysql_install_db устанавливает лагерь в / usr / local / mysql / var, но остальная часть приложения, похоже, хочет выполнить свою работу в / usr / local / mysql / data!
Поэтому я просто отредактировал /etc/my.cnf и в разделе [mysqld] я добавил директиву для явного указания каталога данных mysql на var (как я обычно ожидаю, что это будет каким-либо образом), и после этого mysqld запускается просто хорошо. Директива для добавления выглядит следующим образом:
datadir = / usr / local / mysql / var
Работал на меня. Надеюсь, это поможет вам.
Если в вашей системе несколько версий Mysql, вы, вероятно, столкнетесь с этой ошибкой PID
мы можем начать с уничтожения всего процесса MySQL
sudo killall mysqld
Перейдите в / usr / local, выберите, какую версию MySQL вы хотите установить, а затем предоставьте для нее разрешение MySQL. В моем случае мне нужна была версия 8.
sudo chown -R mysql mysql-8.0.21-macos10.15-x86_64
Перейдите в папку /usr/local/mysql-8.0.21-macos10.15-x86_64 и запустите SQL-сервер
sudo ./mysql.server start
(Введите пароль вашего портативного компьютера) Если он дает результат ниже... проблема PID решена
@xxxx-M-R0SU support-files $ sudo ./mysql.server start Starting MySQL .. SUCCESS!
Кажется, что процесс MySQL работает, следовательно, вы не можете использовать порт. Вы можете проверить запущенный процесс MySQL, используя следующую команду:
пс auxf | grep mysql
Если вы получили какой-либо процесс MySQL, уничтожьте этот идентификатор процесса, используя kill -9 PID, а затем попробуйте запустить MySQL.
Запустите Mysql в безопасном режиме
/usr/local/mysql/bin/mysqld_safe start
ИЛИ ЖЕ
на MAC End любой mysql
или же mysqld
задание (или другое) в приложении Activity Monitor.
или проверьте вашу ошибку
tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err
В моем случае ошибка происходит из-за проблемы с доступом к файлу журнала ошибок.
Следующие две команды помогают мне решить проблему.
sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err
Что говорит журнал ошибок? Я получил эту ошибку, и она оказалась старой недопустимой настройкой в my.cnf, которую указал журнал ошибок mysql. Если настройки конфигурации не плохие, журнал ошибок должен, по крайней мере, указать вам правильное направление.
Что ж, я предполагаю, что OP исправил это на данный момент... но, надеюсь, это указывает другим, видящим эту ошибку в правильном направлении.
Каким-то образом я испортил свои разрешения на El Capitan и решил переустановить MySQL с нуля.
Я использую brew на el capitan, и решил переустановить:
brew uninstall mysql
sudo rm -rf /usr/local/var/mysql
brew install mysql
mysql.server start # ... SUCCESS
Права доступа к файлу при новой установке изменились с _mysql
включить мое имя пользователя
› ls -alh /usr/local/var/mysql
drwxr-xr-x 22 lfender admin 748B Mar 22 09:58 .
# ... etc
У меня такая же проблема. перемещение моего файла /etc/my.cnf сработало для меня. Я получил информацию здесь
У меня была та же самая проблема, для меня это было удаление варева, когда выполнялась предыдущая установка mysqld. Кажется, brew не останавливает службу перед удалением.
После проверки файла.err я увидел зарегистрированную ошибку, что может быть запущена еще одна копия mysql после прекращения работы старой службы. Затем я смог перезапустить новую установку MySQL.
Попробуй это..
- Перейдите в родительский каталог проблемы
cd YOURPATH/usr/local/mysql
rm -rf *.local.err
(удаляет файл)touch YOURUSERNAME.local.pid
(создает новый файл *.local.pid, на который была выдана ошибка)- вернитесь в ваш проект и перезапустите MySQL, используя
mysql.server start
Проверьте, осталось ли место на вашем диске. Я получил эту проблему, когда в моем диске не осталось места.
Просто....
Исправьте ошибку MySQL Socket 2002
Исправлена ошибка с надвигающимся сокетом 2002 года, которая связывает, где MySQL размещает сокет и где OSX считает, что это должно быть, MySQL помещает его в / tmp, а OSX ищет его в /var/mysql, сокет - это тип файла, который позволяет клиенту mysql / сервер связи.
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Отлично сработано:)
Это поможет мне много! я взял это руководство у ребят на http://coolestguidesontheplanet.com/
Я надеюсь, что эта работа для вас.
После проверки журнала ошибок я нашел это:
120309 17:42:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120309 17:42:50 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
120309 17:42:50 [Warning] You need to use --log-bin to make --binlog-format work.
120309 17:42:50 [Note] Plugin 'FEDERATED' is disabled.
120309 17:42:50 InnoDB: The InnoDB memory heap is disabled
120309 17:42:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120309 17:42:50 InnoDB: Compressed tables use zlib 1.2.3
120309 17:42:50 InnoDB: Initializing buffer pool, size = 16.0M
120309 17:42:50 InnoDB: Completed initialization of buffer pool
120309 17:42:50 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /usr/local/mysql/data/ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120309 17:42:50 mysqld_safe mysqld from pid file /usr/local/mysql/data/lu1s.local.pid ended
И для ее решения я передал права собственности на всю папку mysql:
cd /usr/local
sudo chown mysql mysql
sudo chown mysql mysql-5.5.21-osx10.6-x86_64
sudo chown _mysql mysql
sudo chown _mysql mysql-5.5.21-osx10.6-x86_64
Затем (вы можете сделать это и из командной строки), я применил разрешения (как только я передал это право собственности пользователям _mysql и mysql) ко всем вложенным папкам в меню "get info" папки в /usr/local/mysql-5.5.21-osx10,6-x86_64. Вам не нужно указывать это для псевдонима, поскольку это только псевдоним.
Имя папки зависит от версии установки mysql, которая у вас есть.