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.