MySQL이 시작되지 않습니다!


12

명령 행에서 MySQL에 로그인하려고 할 때이 오류가 발생합니다.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

이것이 MySQL이 아직 시작되지 않았 음을 의미한다고 생각합니다. 그래서 시작하려고합니다.

sudo /etc/init.d/mysql start

이 메시지가 나타납니다.

* Starting MySQL database server mysqld [fail] 

MySQL을 시작하려면 어디에서 보거나 어떻게해야합니까? 우분투 8.04를 실행 중이며 apt-get을 통해 MySQL을 설치했습니다. 나는 그것을 시작하고 그것을 몇 번 사용하여 그것이 왜 작동을 멈췄는지 모르겠다.

업데이트 : sudo /etc/init.d/mysql status를 실행할 때 다음 메시지가 나타납니다.

* MySQL is stopped.

업데이트 # 2 : 내 로그 파일 (/var/log/mysql.log & /var/log/mysql.err)이 비어 있습니다 (올바른 파일 인 경우)


/etc/init.d/mysql 상태를 sudo하면 어떻게됩니까
emgee

답변:


10

우분투 12.04에서 /etc/mysql/my.cnf 파일의 버퍼 크기를 변경 한 후에도 같은 문제가 발생했습니다. 어쨌든 기본 설정으로 다시 변경하려고하면 MySQL이 여전히 시작되지 않습니다.

해결하기 위해 여러 가지 다른 방법을 시도했지만 /var/run/mysql/mysql.sock이 누락되었음을 알았습니다. 이것은 문제가 될 수 있으므로 여기서 확인할 수 있으며 누락 된 경우 다음을 수행하여 교체 할 수 있습니다.

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

이것은 않았다 NOT 나를 위해 문제를 해결! 그러나 일부 사람들에게는 그럴 수도 있습니다.

내가해야했던 일은 MySQL을 완전히 다시 설치하는 것이 었습니다.이를 수행하려면 sudo 명령을 사용해야합니다. MySQL을 완전히 제거하고 다시 설치하는 단계는 다음과 같습니다.

MySQL을 제거

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

선택적으로 apt-get --purgeaptitude 로 바꾸어 적성을 사용할 수 있습니다

정리

sudo apt-get autoremove
sudo apt-get autoclean

MySQL 디렉토리 제거

sudo rm -rf /etc/mysql

MySQL 설치

sudo apt-get install mysql-server mysql-client

이제 MySQL이 실행 중이어야합니다. 다음을 수행하여이를 확인할 수 있습니다.

sudo service mysql status

넌 봐야 해

mysql start/running, process xxxxx

이것이 도움이되기를 희망하며 여전히 사용 가능한 모든 데이터베이스 및 테이블을 수행 한 후에 추가 할 수 있다고 생각했지만 해당 데이터베이스의 사용자 및 비밀번호를 다시 작성해야했습니다.

참고 : PHP 용 mysql 확장명을 가지고 있다면 이것을 다시 설치해야합니다.

sudo apt-get install php5-mysql

이것은 나를 위해 일했지만 나는 그것을 다음 sudo touch /var/run/mysqld/mysqld.sock과 같이 바꿔야했다. 그리고 나는 이것을 /var/log/syslog (예 : mysqld로 변경) 끝에서 발견했다.
Programster

그것은인가 /var/run/mysqld또는 /var/run/mysql?
CMCDragonkai

양말 파일을 만지는 것은 나쁜 생각입니다. 실제로 파일이 소켓 인 특수 파일 인 일반 파일을 만들었습니다.
Criggie

3

경고 : 이것은 위험합니다. mysql은 안전하지 않으며 누구나 테이블을 연결하고 편집 할 수 있습니다.이 명령으로 서버를 실행하지 마십시오.

안전 모드에서 시작해보십시오. /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

이것이 작동하면 information_schema 또는 mysql 테이블에 문제가있을 수 있습니다. 작동하지 않으면 설치에 문제가있는 것입니다.


1
이것은 syslog에 자세한 오류를 제공합니다. 명령이 변경되었습니다. Ubuntu 12.04에서sudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000

3

다른 답변에서와 같이 로그 파일을 확인하십시오. 또한 충분한 디스크 공간이 있는지 확인하십시오. MySQL은 빈 파티션에서 이런 식으로 동작 할 수 있습니다.

df -h

그렇지 않은 경우 서버 디버깅에 대한 MySQL 문서를 확인하십시오 . 그들의 myisamchk(MyISAM을 사용하는 경우) 특히 유용합니다.


3

또한 최근 우분투를 업데이트 한 후이 문제가 발생했습니다. 정확히 문제가 무엇인지 아직 확실하지 않습니다. mysql을 실행하기 위해 잠시 동안 일한 한 worakround는해야했습니다.

sudo aa-complain /etc/apparmor.d/*mysql*

그러면 apparmor가 mysql의 실행을 중지했으며 로그가 비어있는 이유를 설명 할 수 있습니다. mysql을 실행할 수 없었습니다.

에서 "불만"이없고 /var/log/apparmorkern.log의 유일한 감사 항목은 프로필을 불평 모드로 변경하는 것만 으로도 이상한 문제로 남아 있습니다.

이 작업을 수행 /etc/apparmor.d/local/usr.sbin.mysql하면서 aa-complain 명령 이이 파일을 찾을 수 없다는 불만으로 (빈) 파일을 추가했습니다 .


대단히 감사합니다! 머리를 찢어 버린 후에 마침내 고쳐졌습니다.
Olathe

3

512MB Digital Ocean 방울과 같은 문제가있었습니다.

메모리가 부족하기 때문입니다.

즉각적인 해결책은 다른 서비스를 다시 시작하여 메모리를 확보하는 것입니다.

sudo service apache2 restart

그런 다음 충분한 메모리로 mysql을 다시 시작할 수 있기를 바랍니다.

sudo service mysql restart

장기적인 해결책은 더 많은 RAM을 얻거나 스왑 메모리를 만드는 것 입니다.


2

로그 파일을 살펴보십시오. 데비안에서는 최소한 mysql * 로그인을 얻습니다 /var/log.


3
mysql.err 및 mysql.log가 모두 비어 있음
Andrew

1

이 같은 문제가 있었지만 해결책이 나를 쳐다보고있는 것으로 나타났습니다. 드라이브가 가득 찼습니다. 기록 할 위치가 없기 때문에 로그가 없습니다 .....


0

같은 문제가 PPA에서 mysql 5.6이 설치된 Ubuntu 12.04 Digital Ocean VPS에서 오랫동안 괴롭 혔습니다. 증상은 mysql.sock 파일 /var/run/mysqld/mysql.sock이 제거되었지만 다시 생성되지 않았기 때문에 mysql이 업데이트되거나 서버가 재부팅 될 때마다 다음 명령을 수동으로 실행해야했습니다.

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

이것은 Kyle C의 대답에서 얻은 것입니다 (mysql 대신 mysqld 제외). 결국 나는 일반적으로 sudo apt-get install mysql-server명령을 수행 할 때 오는 mysql 5.5로 다운 그레이드했다 . 그러나 그것은 간단하지 않았으므로 여기에 내가해야 할 일이 있습니다.

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

바라건대 이것은 다른 사람이 같은 고통을 겪는 데 도움이 될 것입니다.


0

이것이 다른 사람들을 도울 수 있다고 생각합니다. 그래서 여기 있습니다.

mysql 5.5 (ubuntu의 기본값)를 새로운 5.7 (새로운 기본 JSON 유형으로 arround를 원함 )으로 마이그레이션하고
싶었습니다.

지침에 따라 최신 버전을 설치
했지만 MySQL을 시작하고 싶지 않았습니다.

꽤 오랜 시간을 보냈고 다음 줄을 찾았습니다 /var/log/mysql/errors.log.

unknown variable 'key_buffer=16M'

과에서 설정의 어떤 것을 /etc/mysql/my.cnf즉, 업그레이드하는 동안, 나는 계속하기로 결정했습니다.

그래서, 아주 쉽게 그 이후로는 :
내 대체 my.cnfmy.cnf.dpkg-dist같은 디렉토리에있는 버전 ...

그런 다음 달렸다

sudo mysql_upgrade -u root -p sudo service mysql restart

이제 MySQL이 백업되어 실행 중입니다.


0

무엇이 잘못 될 수 있는지에 대한 다른 변형을 발견했습니다. 나는 데이터 디렉토리를 옮겼고 mysql 사용자의 디렉토리를 chown하는 것을 잊어 버렸고 출력도 실패했습니다. 후시에는 분명히 잘못되었지만 오류 메시지가 없으면 모든 사소한 문제를 찾기가 어렵습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.