Erro de inicialização do servidor MySql 'O servidor saiu sem atualizar o arquivo PID'


284

No Snow Leopard, iniciar o MySQL gera o seguinte erro:

O servidor saiu sem atualizar o arquivo 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
sendo executado como usuário administrador. com sudo /usr/local/mysql/support-files/mysql.server start
Chinmay

6
mesmo problema.
Instalando o

20
mesmo problema aqui. também instalado com cerveja.
jspooner

11
Eu também peguei esse caso no meu mac e apenas removi o log de erros, como '/usr/local/var/mysql/*.err', iniciado com êxito.
Mathew P. Jones

3
Eu também tenho o mesmo erro no mac. Mas eu resolvi isso. Se você estiver instalado via arquivo .dmg, vá para as preferências do sistema, clique no ícone mysql e clique no botão iniciar mysql.
Amaranadh Meda 7/03/16

Respostas:


276

tente encontrar seu arquivo de log com o sufixo ".err", deve haver mais informações. Pode estar em:

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

Provavelmente é um problema com permissões

  1. verifique se alguma instância do mysql está em execução

    ps -ef | grep mysql

    se sim, você deve interromper ou matar o processo

    kill -9 PID

    onde PIDé o número exibido ao lado do nome de usuário na saída do comando anterior

  2. verifique a propriedade de /usr/local/var/mysql/

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

    se for o proprietário, rootvocê deve alterá-lo mysqlouyour_user

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


24
Eu tive que mudar para o usuário mysql em vez do meu usuário.
Jared

3
trabalhou para mim. Eu verifiquei o arquivo de erro e disse que era devido a permissões de arquivo. executou o comando chown e trabalhou. obrigado!!
Packet Tracer

2
sudo chown -R my_user / usr / local / var / mysql / trabalhou para mim, pelo menos
Bjørn Børresen

De minha própria experiência - tenha cuidado para que, depois de concluir o sudo chown, você não tenha atualmente alguns processos mysql em execução sob outro usuário ou raiz. ps -ef | O grep mysql confirmará que você não tem nada em execução - caso contrário, você não poderá iniciá-lo.
Arthur Frankel

1
Salva-vidas total. Minha única observação é que o caminho do arquivo para a pasta mysql pode variar.
ALisboa 13/04/19

198

Você seguiu as instruções de brew install mysql?

Configure bancos de dados para executar COMO SUA CONTA DE USUÁRIO com:

Para o mysql 5.x:

unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Para configurar tabelas base em outra pasta ou usar um usuário diferente para executar o mysqld, veja a ajuda de mysqld_install_db:

mysql_install_db --help

e veja a documentação do MySQL:

Para o mysql 8.x:

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

Verifique se o diretório de dados /usr/local/var/mysqlacima está vazio, faça backup, se necessário.

Para executar como, por exemplo, usuário "mysql", pode ser necessário sudo:

sudo mysql_install_db ...options...

Inicie o mysqld manualmente com:

mysql.server start

Nota: se isso falhar, você provavelmente esqueceu de executar os dois primeiros passos acima


78
Se você repetidamente receber o mesmo erro, mesmo depois de seguir as etapas da saída, exclua o arquivo * .err do mesmo diretório que o arquivo * .pid. mahdiyusuf.com/post/21022913180/...
ekillaby

6
Tentei seguir estas instruções um milhão de vezes, mas nunca consegui que elas funcionassem. Eu tentei "trapacear", não limpando todas as coisas que o médico da bebida me avisou, pois achei que elas não faziam diferença. No final, a limpeza e as orientações dos médicos de fermentação tornaram possível executar a configuração descrita acima. Então, uma nota para qualquer pessoa que esteja passando; não tente enganar o médico e pense que você sabe melhor!
span

9
Ainda tenho um monte de coisas erradas quando preparo o médico e a adição de permissão de gravação ao meu próprio usuário fez o truque. sudo chown -R your_user /usr/local/var/mysql/assim como @Tombart 's resposta :)
GabLeRoux

1
@countfloortiles Yes! A remoção do arquivo de erro fez isso. :-)
ott-- 24/10

6
O mysqld_install_dbcomando me dá o erro #mysql_install_db: [ERROR] unknown variable 'tmpdir=/tmp'
1116 Snowcrash

125

Eu tive o mesmo problema na minha máquina Mac (segui corretamente todas as etapas de instalação sugeridas por brew install).

A exclusão do arquivo de erro o corrigiu para mim:

sudo rm -rf /usr/local/var/mysql/dev.work.err( dev.worké o meu nome de host)

Isso funcionou porque dev.work.errera de propriedade _mysql:wheeldo meu nome de usuário. ESCOLHER o arquivo de erro provavelmente também o teria corrigido.


2
Isso resolveu o meu problema também, após a reinicialização mysql não poderia trabalhar mais, me dar esta mesma questão, mas a remoção do log de erro que foi possuído por _mysql: admin resolveu o problema
user980085

5
Isso pareceu ser o mais útil, me fez perceber que não deveria iniciar esse serviço com o SUDO, mas executá-lo com minha própria conta de usuário.
Bnjmn

3
Esta é uma resposta muito boa para aqueles que instalaram o MySQL usando o Homebrew
Stephane Paquet

Depois de semanas tentando coisas diferentes, quando removi o arquivo de erro, tudo começou a funcionar. Obrigado
DF

Não precisei excluí-lo, apenas devolvê-lo à minha conta, porque em algum lugar a conta _mysql assumiu o controle.
Sammy Larbi

90

Após a reinicialização, tive o mesmo problema. Aqui está como eu o consertei:

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

muito obrigado - não se esqueça de material de backup, porém, apenas no caso de você está mexendo w / o permissões
m02ph3u5

Obrigado. Eu estava tendo um problema com o Lampp no ​​Ubuntu. Copiei a pasta lampp inteira de / opt para um novo servidor. Quando tentei iniciar o mysql, recebi uma mensagem: O servidor saiu sem atualizar o arquivo PID. Vá para lampp / var / e faça chown -R mysql mysql / Isso funcionou para mim!
Dave

6
Obrigado, você é meu herói;)
Fareed Alnamrouti

Muito obrigado companheiro! Salvou o dia!
Masiar

8
No El Capitan, isso funcionou:sudo chown -R _mysql /usr/local/mysql/data
Justin

33

Isso funcionou para mim ...

Verifique todos os processos do MySQL em execução:

$ ps aux | grep mysql

USER     PID    %CPU  %MEM 
_mysql   5970   0.0   0.4 ...

Em seguida, mate todos os processos listados no comando acima usando o seguinte:

$ sudo kill -9 [PID]

Substitua [PID]pelo PID individual da lista acima, por exemplo 5970.

Faça isso para todas as linhas que você vê com o primeiro comando.

Então você pode iniciar seu servidor MySQL novamente:

mysql.server start

ou use pkill mysqlpara matar todos os processos que correspondem ao "mysql" ( -9na maioria dos casos, é desnecessário).
Bfontaine

matar todo processo com ID específico e iniciá-lo novamente
Anupam Maurya 14/03

26

Este erro pode ocorrer ao tentar iniciar o msql após o desligamento incorreto.

  1. Dê uma olhada no arquivo de log de erros do mysql. Se ele mencionar algo como "Verifique se você ainda não possui outro processo mysqld usando os mesmos dados ou arquivos de log". , é necessário encerrar adequadamente esse processo.

  2. Veja em que processo o mysql está sendo executado, use este comando: lsof -i:3306

Sua saída deve ficar assim:

COMMAND  PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mysqld  4249 username   17u  IPv4 0x7843d9d130469c0b      0t0  TCP localhost:mysql (LISTEN)
  1. Finalize o processo executando o mysql: kill -15 4249

O Kill -15 envia um siganl para o processo para liberar todos os recursos bloqueados e finalizar o processo depois.

  1. Agora o mysql deve iniciar sem problemas: mysql.server start

Isso ainda funciona para mim em High Sierra, por tudo o que vale a pena.
Jonathan Stegall

24

Meu arquivo de erro também me disse que a porta pode estar sendo usada por outro processo, mas simplesmente a execução sudo mysql.server startcorrigiu o problema para mim.


sim ... isso funcionou para mim também ... e nada acima funcionou
Prashant

Eu estava seguindo as instruções que li em algum lugar para iniciar o MySQL em um Mac 'sudo /usr/local/mysql/support-files/mysql.server start'. Isso produziu o erro "o servidor saiu sem atualizar o arquivo pid" e foi assim que cheguei a esta página. Depois de tentar várias respostas, encontrei 'sudo mysql.server start' e funcionou. Obrigado.
Rodmclaughlin

19

Tente remover ib_logfile0e ib_logfile1arquivos e execute o mysql novamente

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

Funciona para mim.


1
Também removi o .errarquivo no mesmo diretório, que funcionou para mim.
Anthony até

Bem. Isso é absolutamente simples e realmente funciona para mim. Mas, no meu caso, eu apenas o ib_log*.bak
renomeei

18

Se ninguém respondeu, basta remover a pasta /usr/local/var/mysqle instalar o mysql novamente brew reinstall mysql.


9
AVISO isso significa apagar todos os bancos de dados.
Theredled

Eu instalo uma versão superior do mysql antes, do que instalo o mysql5.7 e esse problema ocorre. Basta remover / usr / local / var / mysql e brew reinstall mysql@.57resolvê-lo.
Pegasus

Mova o dbs em / usr / local / var / mysql para outra pasta primeiro. Após a instalação e iniciar o serviço mysql com sucesso, tente mover o banco de dados necessário de volta.
civic.LiLister

15

Recentemente, deparei com esse problema, mas ele estava funcionando antes e depois parei.

Isso foi porque eu comecei inicialmente mysql.servercomo root em vez de mim mesmo.

A correção foi excluir o arquivo de log de erros (pertencente a _mysql). Começá-lo novamente conseguiu passar.


Obrigado! Eu tive o mesmo problema ao pesquisar por uma hora e deparei com sua resposta.
FLY

11

Para mim eu tive que reinstalar o mysql

brew reinstall mysql

e depois abaixo Para iniciar, execute o mysql agora e reinicie no login:

brew services start mysql


10

Para mim, a correção foi simples:

top

mostrou que o mysqld já estava rodando

sudo killall mysqld 

então permitiu que o processo iniciasse


8

Eu tive esse problema ao tentar preparar a atualização no MacOS X 10.7.5.

Infelizmente, o mysql também foi atualizado para 5.6.10 a partir de 5.5.14. Tentei o novo, não funcionou.

Decidi voltar à minha configuração antiga e fiz uma

brew switch mysql 5.5.14

Isso não resolveu o problema. Em outros lugares, li e fiz isso, pronto! Tudo estava de volta :)

cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak

Isso funcionou para mim após o primeiro uso brew upgrade mysqle, em seguida, brew switch mysql 5.7.17qual era a minha versão anterior. Esquisito!
Jorge Orpinel

7

Estou a usar,

Instalei o MySQL usando o homebrew ('brew install mysql'). Ele instalou algumas dependências e depois o mysql.

Quando tentei iniciar,

west$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/west.local.pid).

Eu executei este comando,

west$ /usr/local/Cellar/mysql/5.5.25/scripts/mysql_install_db 

e o MySQL funciona.

Observe que você precisa executar o mysql_install_db no nível superior do diretório mysql (IE, usr / local / Cellar / mysql / 5.5.25). A execução direta no diretório / scripts não fornece contexto suficiente para sua execução.


Trabalhei para mim com o 5.5.28 e o brew no OSX
10.7.5

7

Para mim, a solução foi substituir / corrigir o diretório de dados em / etc / my / cnf.

Eu construí o MySQL 5.5.27 a partir da fonte com as instruções fornecidas no arquivo leia-me:


# 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 terminou automaticamente sem explicação. A execução /etc/init.d/mysql.server startresultou no erro:

"O servidor saiu sem atualizar o arquivo PID"

Notei algo estranho nas instruções de instalação. A propriedade foi alterada para mysql no diretório "data", mas não para "var"; isso é incomum, porque durante anos tive que garantir que o diretório var fosse gravável no mysql. Então eu corri manualmente chown -R mysql /usr/local/mysql/vare tentei iniciá-lo novamente. Ainda sem sorte. Mas pior, nenhum arquivo .err no diretório var - estava no diretório "dados"! então scripts / mysql_install_db configura o acampamento em / usr / local / mysql / var, mas o restante do aplicativo parece querer fazer seu trabalho em / usr / local / mysql / data!

Então, eu apenas editei o /etc/my.cnf e, na seção [mysqld], adicionei uma diretiva para apontar explicitamente o diretório de dados do mysql para var (como normalmente espero que seja assim) e, depois disso, o mysqld inicia apenas bem. A diretiva a adicionar tem a seguinte aparência:

datadir = / usr / local / mysql / var

Trabalhou para mim. Espero que ajude para você.


5

Parece que o processo MySQL está em execução, portanto, você não pode usar a porta. Você pode verificar o processo MySQL em execução usando o seguinte comando:

ps auxf | grep mysql

Se você obtiver algum processo do MySQL, mate o ID do processo usando kill -9 PID e tente iniciar o MySQL.


Essa resposta é minha salvadora.
Sangbeom Han 25/03/19

5

Inicie o Mysql no modo de segurança

/usr/local/mysql/bin/mysqld_safe start

OU

no MAC End qualquer mysqlou mysqldtarefa (ou outro) em seu aplicativo Activity Monitor.

ou verifique seu erro

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

4

O que o log de erros diz? Eu recebi esse erro e ele acabou sendo uma configuração inválida antiga no my.cnf, que o log de erros do mysql indicava. Se não for uma configuração incorreta, o log de erros deve pelo menos apontá-lo na direção certa.

Bem, suponho que o OP o tenha corrigido neste momento ... mas espero que isso aponte os outros que estão vendo esse erro na direção certa.


4

Com a ajuda de algumas respostas postadas aqui, consegui encontrar o problema

Primeiro eu corro

sudo -i

Então eu poderia ter acesso root.

Então eu apaguei o arquivo xxxx.err

rm -rf /usr/local/mysql/data/xxxx.err

depois que iniciei o MySQL no SafeMode

/usr/local/mysql/bin/mysqld_safe start

Ele tentará iniciar e será encerrado devido a um erro ... um novo arquivo xxx.err será criado e você precisará lê-lo para ver a causa do erro

tail -f /usr/local/mysql/data/mysqld.local.err

No meu caso, por algum motivo, faltavam algumas pastas e arquivos dentro da /var/log/pasta ... Então eu criei os dois

cd /var/log

mkdir mysql

touch mysql-bin.index

Depois que o novo arquivo foi criado, você precisa alterar a permissão

chown -R _mysql /var/log/mysql

Quando todas essas etapas foram executadas, meu banco de dados começou a funcionar imediatamente ...

Espero que isso possa ajudar outras pessoas aqui ... A chave é ler o erro e registrar e descobrir o que está errado ...


4

No meu caso, o erro ocorre devido ao problema de acesso ao arquivo de log de erros.

Os dois comandos a seguir me ajudam a resolver o problema.

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

3

Espero que este trabalho para você.

Depois de verificar o log de erros, encontrei o seguinte:

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

E para resolvê-lo, dei direitos de propriedade a toda a pasta 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

Então (você também pode fazê-lo na linha de comando), apliquei as permissões (depois de atribuir essa propriedade aos usuários _mysql e mysql ) a todas as pastas fechadas no menu "obter informações" da pasta em / usr / local / mysql -5.5.21-osx10.6-x86_64 . Você não precisa enviar isso para o alias, pois é apenas um alias.

O nome da pasta depende da versão de instalação do mysql que você possui.


3

Eu tive o mesmo problema. mover meu arquivo /etc/my.cnf funcionou para mim. Eu tenho as informações aqui


3

Teve o mesmo problema, para mim, ele estava fazendo uma remoção do brew enquanto tinha uma instalação anterior do mysqld em execução. Parece que o brew não interrompe um serviço antes da desinstalação.

Após verificar o arquivo .err, vi o erro registrado de que outra cópia do mysql pode estar em execução, após o término do serviço antigo. Eu era capaz de reiniciar a nova instalação do mysql.


Sim, verifique os logs de erro. No meu caso, corri ls -latr /usr/local/var/mysql/para encontrar o arquivo modificado mais recente, que incluía o log de erros, e depois tail -50 name.errpara ver o erro, que era um problema na configuração.
mahemoff

graças a deus, você estava certo. I utilizado ps aux | grep mysqlde, em seguida, terminou o processo com kill -9 [proccessid]eo servidor iniciado com êxito
Sagish

3

Simples....

Corrija o erro do soquete do MySQL 2002

Corrija o iminente erro de soquete 2002 - que está vinculando onde o MySQL coloca o soquete e onde o OSX pensa que deveria estar, o MySQL o coloca em / tmp e o OSX o procura em / var / mysql o soquete é um tipo de arquivo que permite ao cliente mysql comunicação / servidor.

sudo mkdir / var / mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Bem feito : )

Isso me ajuda muito! Eu peguei este guia dos caras em http://coolestguidesontheplanet.com/


3

Tente isso ..

  1. Navegue para o diretório pai do problema cd YOURPATH/usr/local/mysql
  2. rm -rf *.local.err (exclui arquivo)
  3. touch YOURUSERNAME.local.pid (gera um novo arquivo * .local.pid do qual o erro lançado estava reclamando)
  4. cd de volta ao seu projeto e reinicie o mysql usando mysql.server start

1
Isso funcionou para mim. Por isso, o error.logarquivo pertence a "_mysql" lançando erros nos logs. Só queria registrar que, caso alguém tenha esse problema. 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
18715 Donovan

Isso não funciona se o seu problema estiver relacionado a permissões, que gera o mesmo erro do mysql.
mpoletto

Trabalhou para mim também. Eu também tive que reiniciar meu apache (para aqueles que também usam uma pilha LAMP).
Tommyixi

3

De alguma forma, estraguei minhas permissões no El Capitan e decidi reinstalar o MySQL do zero.

Eu uso o brew no el capitan e decidi reinstalar:

brew uninstall mysql
sudo rm -rf /usr/local/var/mysql
brew install mysql
mysql.server start # ... SUCCESS

As permissões de arquivo na nova instalação foram alteradas _mysqlpara incluir meu nome de usuário

 ls -alh /usr/local/var/mysql
drwxr-xr-x   22 lfender  admin   748B Mar 22 09:58 .
# ... etc

2

Verifique se você ainda tem espaço em sua unidade. Eu tenho esse problema quando não há espaço na minha unidade.


Eu nunca teria pensado no problema espacial se você não tivesse mencionado. Você é um salvador!
Kshitij Bajracharya

2

O problema é de permissão, não pode ser iniciado porque não pode ser gravado no mac.err porque pertence a outra pessoa.

Verifique se a pasta / usr / local / var / mysql pertence ao usuário que iniciará o mysql. Se eu iniciar o mysql como jack, está tudo bem. No entanto, se você iniciá-lo como root, ele criará um arquivo mac.err (de propriedade do root) no qual o jack não pode gravar, portanto, quando você tentar reiniciá-lo como jack, ele falhará.

  1. Verifique se a pasta e os arquivos pertencem ao usuário que executa o mysql.server start
  2. Verifique se ainda não existe um mac.err ou mac.pid pertencente a outra pessoa.
  3. Iniciar é como o usuário certo.

Eu usei chown -R <nome_do_usuário> / usr / local / var / mysql e funcionou muito bem. Ótima solução.
Mbokil 15/05

2

No meu caso, eu peguei esse problema no vps, cPanel .

Eu tentei a maioria das respostas acima, mas não obtive sucesso.

  1. verifique onde está o seu log de erros. Isso seria mencionado no final da linha de erro.

ERRO! O servidor saiu sem atualizar o arquivo PID (/var/lib/mysql/111318.vps-11.com.pid).

  1. Abra esse arquivo (/var/lib/mysql/111318.vps-11.com.err) e cheque a parte inferior para ver as linhas atrasadas. No meu caso, há

[ERRO] Erro fatal: não é possível abrir e bloquear tabelas de privilégios: A tabela './mysql/db' está marcada como travada e deve ser reparada

  1. Como resolver isso: Recuperando e corrigindo os índices da tabela por comando:

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

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

  1. (Re) Inicie seu mysql
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.