Ошибка запуска сервера MySql «Сервер вышел без обновления файла PID»


284

На 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

7
работает как администратор с запуском sudo /usr/local/mysql/support-files/mysql.server
Chinmay

6
та же проблема. Установил mysql с
заваркой

20
та же проблема здесь. также установлен с заваркой.
jspooner

11
Я тоже получил этот случай на моем Mac, и просто удалил журнал ошибок, такой как «/usr/local/var/mysql/*.err», успешно запущенный.
Мэтью П. Джонс

3
Я также получил ту же ошибку на Mac. Но я решил это. Если вы установлены через файл .dmg, перейдите в системные настройки, затем нажмите на иконку mysql, затем нажмите кнопку start mysql.
Амаранад Меда

Ответы:


276

попробуйте найти ваш лог-файл с суффиксом ".err", там должно быть больше информации. Это может быть в:

/usr/local/var/mysql/your_computer_name.local.err

Это, вероятно, проблема с разрешениями

  1. проверьте, работает ли какой-либо экземпляр mysql

    ps -ef | grep mysql

    если да, вы должны остановить его или убить процесс

    убить -9 PID

    где PIDчисло отображается рядом с именем пользователя на выходе предыдущей команды

  2. проверить право собственности на /usr/local/var/mysql/

    ls -laF / usr / local / var / mysql /

    если это владелец, rootвы должны изменить его mysqlилиyour_user

    sudo chown -R mysql / usr / local / var / mysql /


24
Я должен был стать пользователем mysql, а не моим пользователем.
Джаред

3
работал на меня. Я проверил файл ошибок и сказал, что это потому, что у него есть права доступа. выполнил команду chown и работал. Спасибо!!
Packet Tracer

2
sudo chown -R my_user / usr / local / var / mysql / работал, по крайней мере, для меня
Бьёрн Бёрресен

Из моего собственного опыта - будьте осторожны, что после того, как вы выполнили команду sudo, у вас в настоящий момент нет процессов mysql, работающих под другим пользователем или пользователем root. ps -ef | grep mysql проверит, что у вас ничего не работает, иначе вы не сможете его запустить.
Артур Франкель

1
Всего спасителя. Мое единственное наблюдение - путь к файлу в папке MySQL может отличаться.
ALisboa

198

Вы следовали инструкциям от brew install mysql?

Настройте базы данных для запуска в качестве учетной записи пользователя с:

Для MySQL 5.x:

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:

Для MySQL 8.x:

unset TMPDIR
mysqld --initialize-insecure --log-error-verbosity --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Убедитесь, что каталог данных /usr/local/var/mysqlвыше пуст, сделайте резервную копию, если это необходимо.

Например, для запуска от имени пользователя «mysql» может потребоваться sudo :

sudo mysql_install_db ...options...

Запустите mysqld вручную с помощью:

mysql.server start

Примечание: если это не удается, вы, вероятно, забыли выполнить первые два шага выше


78
Если вы неоднократно получаете одну и ту же ошибку, даже после выполнения шагов из вывода, удалите файл * .err из того же каталога, что и файл * .pid. mahdiyusuf.com/post/21022913180/…
ekillaby

6
Я пытался следовать этим инструкциям миллион раз, но так и не заработал. Я пытался «обмануть», не убирая все вещи, о которых доктор предупреждал меня, так как я думал, что они ничего не изменили. В конце концов, очистка и следование советам пивоваренных врачей позволили выполнить настройку, описанную выше. Таким образом, записка для всех, кто проходит мимо; не пытайтесь обмануть доктора, и вы думаете, что знаете лучше!
продолжительность

9
У меня все еще есть куча неправильных вещей, когда я завариваю доктора и добавляю разрешение на запись своему собственному пользователю. sudo chown -R your_user /usr/local/var/mysql/как ответ
@Tombart

1
@countfloortiles Да! Удаление файла ошибки сделало это. :-)
ot--

6
Команда mysqld_install_dbвыдает ошибкуmysql_install_db: [ERROR] unknown variable 'tmpdir=/tmp'
Snowcrash

125

У меня была та же проблема на моем компьютере Mac (правильно выполнили все шаги установки, предложенные brew install).

Удаление файла ошибки исправило это для меня:

sudo rm -rf /usr/local/var/mysql/dev.work.err( dev.workэто мое имя хоста)

Это работало, потому что dev.work.errпринадлежало _mysql:wheelвместо моего собственного имени пользователя. CHOWN-in файл ошибок, вероятно, исправил бы это также.


2
Это решило и мою проблему, после перезагрузки mysql больше не мог работать, и я получил ту же проблему, но удаление журнала ошибок, принадлежавшего _mysql: admin решил проблему
user980085

5
Это оказалось наиболее полезным, заставило меня понять, что я не должен запускать этот сервис с SUDO, а запускать его под своей учетной записью.
Bnjmn

3
Это довольно хороший ответ для тех, кто установил MySQL, используя Homebrew
Stephane Paquet

После нескольких недель попыток разных вещей, когда я удалил файл ошибок, все начало работать. Спасибо
DF

Мне не нужно было удалять его, просто добавьте его обратно в мою учетную запись, потому что где-то _mysql учетная запись взяла его на себя.
Сэмми Ларби

90

После перезагрузки у меня возникла такая же проблема. Вот как я это исправил:

 sudo chown -R _mysql /usr/local/var/mysql


Спасибо. У меня была проблема с Lampp в Ubuntu. Я скопировал всю папку lampp из / opt на новый сервер. Когда я попытался запустить mysql, я получил сообщение: сервер вышел без обновления файла PID. Перейдите в lampp / var / и выполните chown -R mysql mysql / Это сработало для меня!
Дейв

6
Спасибо, Ты мой герой;)
Фарид Алнамрути

Большое спасибо друг! Спас день!
Масиар

8
На Эль-Капитане это сработало:sudo chown -R _mysql /usr/local/mysql/data
Джастин

33

Это сработало для меня ...

Проверьте все запущенные процессы 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

или используйте pkill mysqlдля уничтожения всех процессов, которые соответствуют «mysql» ( -9в большинстве случаев не требуется ).
bfontaine

завершить процесс с определенным идентификатором и запустить его снова
Anupam Maurya

26

Эта ошибка может возникать при попытке запустить msql после неправильного завершения работы.

  1. Взгляните на файл журнала ошибок mysql. Если упоминается что-то вроде «Убедитесь, что у вас еще нет другого процесса mysqld, использующего те же данные или файлы журнала». , то вам нужно правильно завершить этот процесс.

  2. Посмотрите, на каком процессе запущен 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)
  1. Завершите процесс, выполняющий mysql: kill -15 4249

Kill -15 отправляет сиганла процессу, чтобы высвободить все ресурсы, которые он блокирует, и завершает процесс после.

  1. Теперь MySQL должен запускаться без проблем: mysql.server start

Это все еще работает для меня в Высшей Сьерре, несмотря ни на что.
Джонатан Стегалл

24

Мой файл ошибок также сказал мне, что порт может использоваться другим процессом, но просто запуск sudo mysql.server startисправил проблему для меня.


да ... это тоже сработало для меня ... и ничего выше не сработало
Прашант

Я следовал инструкциям, которые где-то читал, чтобы запустить MySQL на Mac - sudo /usr/local/mysql/support-files/mysql.server start. Это привело к ошибке «сервер вышел без обновления файла pid», и вот как я попал на эту страницу. Перепробовав многочисленные ответы, я нашел «sudo mysql.server start», и это сработало. Спасибо.
Rodmclaughlin

19

Попробуйте удалить ib_logfile0и ib_logfile1файлы, а затем снова запустить mysql

rm /usr/local/var/mysql/ib_logfile0
rm /usr/local/var/mysql/ib_logfile1

Меня устраивает.


1
Я также удалил .errфайл в том же каталоге, который работал для меня.
Энтони до

Хорошо. Это очень просто и действительно работает для меня. Но, в моем случае, я только переименовал его вib_log*.bak
mochadwi

18

Если вам не помог ни один ответ, просто удалите папку, /usr/local/var/mysqlа затем снова установите mysql brew reinstall mysql.


9
ВНИМАНИЕ, это означает, что стереть все базы данных.
theredled

Я устанавливаю более раннюю версию mysql до того, как устанавливаю mysql5.7, и эта проблема возникает. Просто удалите / usr / local / var / mysql и brew reinstall mysql@.57решите это.
Pegasus

Сначала переместите базу данных в / usr / local / var / mysql в другую папку. После установки и успешного запуска службы MySQL попытайтесь переместить нужную базу данных обратно.
civic.LiLister

15

Я недавно сталкивался с этой проблемой, однако это работало прежде, затем прекратилось.

Это было потому, что я изначально начал mysql.serverс правами root а не как я.

Исправление состояло в том, чтобы удалить файл журнала ошибок (который принадлежал _mysql). Начиная это снова получил это прошло.


Спасибо! У меня была такая же проблема в поисках часа, потом наткнулся на ваш ответ.
FLY

11

Для меня мне пришлось переустановить MySQL

brew reinstall mysql

а затем ниже Чтобы запустить, запустите MySQL сейчас и перезапустите при входе в систему:

brew services start mysql

10

Решение, которое сработало для меня, было здесь: /server/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/*

10

Для меня решение было простым:

top

показал, что mysqld уже работает

sudo killall mysqld 

затем позволил процессу начать


8

У меня была эта проблема при попытке заваривать обновление на 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

Это сработало для меня после первого использования, brew upgrade mysqlа затем, brew switch mysql 5.7.17который был моей предыдущей версией. Weird!
Хорхе Орпинель

7

Я использую,

Я установил 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 не дает ему достаточно контекста для запуска.


Работал у меня с 5.5.28 и заваривал на OSX 10.7.5
ch3rryc0ke

7

Для меня решение было переопределить / исправить каталог данных в / 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

Работал на меня. Надеюсь, это поможет вам.


5

Кажется, что процесс MySQL работает, следовательно, вы не можете использовать порт. Вы можете проверить запущенный процесс MySQL, используя следующую команду:

пс auxf | grep mysql

Если вы получили какой-либо процесс MySQL, уничтожьте этот идентификатор процесса, используя kill -9 PID, а затем попробуйте запустить MySQL.


Этот ответ мой спаситель.
Sangbeom Han

5

Запустите Mysql в безопасном режиме

/usr/local/mysql/bin/mysqld_safe start

ИЛИ

на MAC Завершите любую mysqlили mysqldзадачу (или другую) в приложении Activity Monitor.

или проверьте вашу ошибку

tail -f /usr/local/mysql/data/XXXXX-XXXXX-Pro.local.err

4

Что говорит журнал ошибок? Я получил эту ошибку, и она оказалась старой недопустимой настройкой в ​​my.cnf, которую указал журнал ошибок mysql. Если настройки конфигурации не плохие, журнал ошибок должен, по крайней мере, указать вам правильное направление.

Что ж, я предполагаю, что OP исправил это на данный момент ... но, надеюсь, это указывает другим, видящим эту ошибку в правильном направлении.


4

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

Сначала я бегу

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

Когда все эти шаги были сделаны, моя база данных сразу начала работать ...

Надеюсь, что это может помочь другим здесь ... Ключ должен прочитать ошибку и войти в систему и найти, что не так ...


4

В моем случае ошибка происходит из-за проблемы с доступом к файлу журнала ошибок.

Следующие две команды помогают мне решить проблему.

sudo chown <user> /usr/local/var/mysql/<my-host-name>.err
sudo chmod 666 /usr/local/var/mysql/<my-host-name>.err

3

Я надеюсь, что эта работа для вас.

После проверки журнала ошибок я нашел это:

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, которая у вас есть.


3

У меня такая же проблема. перемещение моего файла /etc/my.cnf сработало для меня. Я получил информацию здесь


3

У меня была та же проблема, для меня это было удаление варева, когда выполнялась предыдущая установка mysqld. Кажется, brew не останавливает службу перед удалением.

После проверки файла .err я увидел зарегистрированную ошибку, что может быть запущена еще одна копия mysql после прекращения работы старой службы. Затем я смог перезапустить новую установку MySQL.


Да, проверьте журналы ошибок. В моем случае я побежал, ls -latr /usr/local/var/mysql/чтобы найти последний измененный файл, который включал журнал ошибок, а затем, tail -50 name.errчтобы увидеть ошибку, которая была проблемой в конфигурации.
Mahemoff

слава богу, ты был прав. Я использовал, ps aux | grep mysqldа затем завершил процесс, kill -9 [proccessid]и сервер успешно запустился
Sagish

3

Просто....

Исправьте ошибку 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/


3

Попробуй это..

  1. Перейдите в родительский каталог проблемы cd YOURPATH/usr/local/mysql
  2. rm -rf *.local.err (удаляет файл)
  3. touch YOURUSERNAME.local.pid (создает новый файл * .local.pid, на который была выдана ошибка)
  4. вернитесь в ваш проект и перезапустите MySQL, используя mysql.server start

1
Это сработало для меня. Причина в том, что error.logфайл принадлежал "_mysql", который выдавал ошибки в журналах. Просто хотел войти, если кто-то еще имеет эту проблему. 150818 19:32:06 mysqld_safe Logging to '/opt/boxen/log/mysql/error.log'. 150818 19:32:06 mysqld_safe Starting mysqld daemon with databases from /opt/boxen/data/mysql /opt/boxen/homebrew/bin/mysqld_safe: line 129: /opt/boxen/log/mysql/error.log: Permission denied
Донован

Это не работает, если ваша проблема связана с разрешениями, которая выдает ту же ошибку MySQL.
Мполетто

У меня тоже сработало. Мне также пришлось перезапустить мой Apache (для тех, кто также использует стек LAMP).
Tommyixi

3

Каким-то образом я испортил свои разрешения на 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

2

Проверьте, осталось ли место на вашем диске. Я получил эту проблему, когда в моем диске не осталось места.


Я бы никогда не подумал о проблеме космоса, если бы ты не упомянул. Ты спаситель!
Кшитий Байрачарья

2

Проблема с правами доступа, она не может запуститься, потому что она не может писать в mac.err, потому что она принадлежит кому-то другому.

Убедитесь, что папка / usr / local / var / mysql принадлежит пользователю, который запустит mysql. Если я начну MySQL как Джек, все хорошо. Однако, если вы запустите его как root, он создаст файл mac.err (принадлежит root), в который jack не сможет записать, поэтому, когда вы попытаетесь перезапустить его как jack, произойдет сбой.

  1. Убедитесь, что папка и файлы принадлежат пользователю, запустившему mysql.server start
  2. Убедитесь, что mac.err или mac.pid не принадлежат кому-то еще.
  3. Начните как правильный пользователь.

Я использовал chown -R <user_name> / usr / local / var / mysql, и он отлично работал. Хорошее решение.
Мбокил

2

В моем случае я получил эту проблему на VPS, cPanel .

Я попробовал большинство из вышеперечисленных ответов, но не успех.

  1. проверьте где ваш журнал ошибок. Это будет упомянуто в конце строки ошибки.

ОШИБКА! Сервер вышел без обновления файла PID (/var/lib/mysql/111318.vps-11.com.pid).

  1. Откройте этот файл (/var/lib/mysql/111318.vps-11.com.err) и проверьте нижнюю часть для последних строк. В моем случае есть

[ОШИБКА] Неустранимая ошибка: невозможно открыть и заблокировать таблицы привилегий: таблица «./mysql/db» помечена как аварийная и должна быть исправлена

  1. Как решить эту проблему: Восстановление и исправление табличных индексов командой:

[~] # myisamchk -r /var/lib/mysql/mysql/db.MYI

https://forums.cpanel.net/threads/mysql-is-not-running.407142/

  1. (Re) Начните свой MySQL
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.