UNIX 소켓 파일에 대한 mysqld_safe 디렉토리 '/ var / run / mysqld'가 존재하지 않습니다.


188

mysqld_safe를 사용하여 mysql 서버 5.7.17을 시작하는 동안 다음 오류가 발생합니다.

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.

고치는 방법?

답변:


507

이 디렉토리가 설치시 작성되지 않은 것이 이상합니다. my.cfg에서 소켓 파일의 경로를 수동으로 변경 했습니까?

이 디렉토리를 직접 작성하고 서비스를 다시 시작해 보셨습니까?

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

2
아니요, 수동으로 변경하지 않았습니다. 디렉토리를 만들어서 시도하겠습니다. 제안에 감사드립니다
— Rajadip

14
mysql 5.7에서 발생합니다. mysql 서비스를 중지하면 / var / run / mysqld가 제거되고 서비스를 다시 시작할 때 다시 작성됩니다.
— Capy

2
둘 다에 sudo를 사용했다
— Kasun Rajapaksha

1
@Capy - upvoted - @ 매트 클라크 - 당신이 친절을 편집 DIR이 만들어 왔지만 할지라도 우리가 실행하는 경우는 삭제되어야하는 정보] 포함하는 답변 - $ sudo /etc/init.d/mysql stop, 감사
— Rohit Dhankar

이 단계를 수행 한 후에도 여전히 같은 오류가 발생 sudo하는 경우이 디렉토리가 일단 제거되면 이 폴더 mysql가 중지 sudo되고이 폴더에 액세스 할 수 없으므로이 문제가 해결됩니다 !!!
— Jadeye

71

코드를 사용 mysqld_safe --skip-grant-tables &했지만 오류가 발생하면

mysqld_safe UNIX 소켓 파일 용 '/ var / run / mysqld'디렉토리가 없습니다.

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

나는 해결했다 :

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

지금은 같은 코드를 사용 mysqld_safe --skip-grant-tables &하고 GET을

mysqld_safe / var / lib / mysql에서 데이터베이스로 mysqld 데몬 시작

내가 사용하면 $ mysql -u root얻을 것이다 :

서버 버전 : 5.7.18-0ubuntu0.16.04.1 (우분투)

Copyright (c) 2000, 2017, Oracle 및 / 또는 그 계열사. 판권 소유.

Oracle은 Oracle Corporation 및 / 또는 그 계열사의 등록 상표입니다. 다른 이름은 해당 소유자의 상표 일 수 있습니다.

'help;'를 입력하십시오. 또는 도움을 받으려면 '\ h'. 현재 입력 명령문을 지우려면 '\ c'를 입력하십시오.

MySQL>

이제 비밀번호를 변경해야합니다.

mysql> use mysql
mysql> describe user;

테이블 및 열 이름 완성을위한 테이블 정보 읽기이 기능을 해제하여 -A로 더 빠르게 시작할 수 있습니다.

데이터베이스가 변경됨

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

또는 어디에서나 연결할 수있는 mysql 루트 계정이있는 경우 다음을 수행해야합니다.

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

다른 방법 :

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

그리고 어디서나 액세스 할 수있는 루트 계정이있는 경우 :

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

이제 quitmysql에서 시작하고 중지 / 시작해야합니다.

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

이제 다시 mysql -u root -p를 입력하고 새 암호를 사용하여

MySQL>


9
MySQL 5.7.6부터 Password 열의 이름이 "authentication_string"으로 변경되었습니다. 자세한 내용은 다음과 같습니다. bugs.mysql.com/bug.php?id=76655
— IberoMedia

6

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

0

데이터베이스에 데이터가 없거나 해당 데이터를 복원 할 다른 데이터가있는 경우 다음을 시도 할 수 있습니다. Ubuntu 서버 루트 비밀번호는 알아야하지만 mysql 루트 비밀번호는 알아야합니다.

우리 중 많은 사람들이 "mysql_secure_installation"을 설치했을 가능성이 높습니다. 이것이 최선의 방법입니다. mysql_secure_installation이 존재하는 bin 디렉토리로 이동하십시오. 우분투 시스템의 / bin 디렉토리에 있습니다. 설치 프로그램을 다시 실행하면 루트 데이터베이스 비밀번호 변경 여부에 대한 프롬프트가 표시됩니다.


그러나 이것이 안전한 mysql 서버만을 사용하는 것이라고 생각합니다. 이 문제에는 차이가 없습니다.
— Rajadip

현재 비밀번호를 먼저 입력해야하므로 루트 비밀번호를 잊어 버린 경우에는 도움이되지 않습니다.
— Jistanidiot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.