O diretório mysqld_safe '/ var / run / mysqld' para o arquivo de soquete UNIX não existe

188

Ao iniciar o servidor mysql 5.7.17 usando o mysqld_safe, ocorre o seguinte erro.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Como corrigi-lo ?

Rajadip
fonte

Respostas:

507

Parece estranho que esse diretório não tenha sido criado na instalação - você alterou manualmente o caminho do arquivo de soquete no my.cfg?

Você já tentou simplesmente criar esse diretório e reiniciar o serviço?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
fonte
2
Não, não fiz alterações manualmente. Vou tentar isso criando um diretório. Obrigado por sugestões
Rajadip
14
Isso acontece no mysql 5.7. Quando você para, o serviço mysql / var / run / mysqld é removido e recriado quando você inicia o serviço novamente.
achou
2
Teve que usar o sudo para ambos
Kasun Rajapaksha
1
@Capy - upvoted - @ Matt Clark - você gentilmente editar sua resposta para incluir o infomation que mesmo que o DIR poderia ter sido criada, mas serão apagados se corremos - $ sudo /etc/init.d/mysql stop, graças
Rohit Dhankar
Se você ainda estiver recebendo o mesmo erro seguindo estas etapas, oBSERVAÇÃO que sudoresolverá isso, pois este diretório será removido assim que mysqlfor interrompido e sem sudoele não haverá acesso a essas pastas !!!
Jadeye
72

Quando usei o código, mysqld_safe --skip-grant-tables &mas recebo o erro:

O diretório mysqld_safe '/ var / run / mysqld' para o arquivo de soquete UNIX não existe.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Eu resolvi:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Agora eu uso o mesmo código mysqld_safe --skip-grant-tables &e obtenho

mysqld_safe Iniciando o daemon mysqld com bancos de dados em / var / lib / mysql

Se eu usar $ mysql -u root, vou receber:

Versão do servidor: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle e / ou suas afiliadas. Todos os direitos reservados.

Oracle é uma marca registrada da Oracle Corporation e / ou de suas afiliadas. Outros nomes podem ser marcas registradas de seus respectivos proprietários.

Digite 'help'; ou '\ h' para obter ajuda. Digite '\ c' para limpar a instrução de entrada atual.

mysql>

Agora é hora de alterar a senha:

mysql> use mysql
mysql> describe user;

Lendo as informações da tabela para concluir os nomes de tabelas e colunas Você pode desativar esse recurso para obter uma inicialização mais rápida com -A

Banco de dados alterado

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

ou Se você possui uma conta root mysql que pode se conectar de qualquer lugar, você também deve:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Método alternativo:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

E se você tiver uma conta root que possa acessar de qualquer lugar:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

agora precisa quitdo mysql e parar / iniciar

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

agora novamente `mysql -u root -p 'e use a nova senha para obter

mysql>

Partha Sen
fonte
9
desde o MySQL 5.7.6, a coluna Senha foi renomeada como "authentication_string" Aqui você pode ler mais sobre isso: bugs.mysql.com/bug.php?id=76655
IberoMedia
6

Trabalhe para mim no CentOS:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart
Heli Perez
fonte
0

Você pode tentar o seguinte, se o banco de dados não tiver nenhum dado OU se houver outro ausente para restaurar esses dados. Você precisará saber a senha root do servidor Ubuntu, mas não a senha root mysql.

É muito provável que muitos de nós tenha instalado "mysql_secure_installation", pois esta é uma prática recomendada. Navegue para o diretório bin onde existe mysql_secure_installation. Pode ser encontrado no diretório / bin nos sistemas Ubuntu. Ao executar novamente o instalador, você será solicitado a alterar a senha do banco de dados raiz.

David Baldwin
fonte
Mas, acho que isso é para usar apenas o servidor mysql seguro. Não é? Não faz diferença neste problema.
Rajadip
Isso não ajuda se você esqueceu a senha root, pois você deve digitar a senha atual primeiro.
Jistanidiot