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を起動するためにどこを見る/どうすればよいですか?Ubuntu 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

Ubuntu 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

これで問題は解決しませんでした!しかし、それは一部のために。

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に置き換えることにより、aptitudeを使用できます。

掃除

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

sockファイルに触れることは悪い考えです。実際には、特殊な種類のファイルであるソケットの場合、通常のファイルを作成しました。
クリギー

3

警告:これは危険です。mysqlは安全ではなく、だれでもテーブルに接続、編集などできるようになります。このコマンドでサーバーを実行したままにしないでください。

セーフモードで起動してみてください: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

これが機能する場合、information_schemaまたはmysqlテーブルに問題がある可能性があります。うまくいかない場合は、インストールに何か問題があります。


1
これは良いことです。syslogに詳細なエラーが表示されます。コマンドが変更されましたsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
。Ubuntu12.04

3

他の回答と同様に、ログファイルを確認してください。また、十分な(またはディスク領域)があることを確認します。MySQLは、空のパーティションでこのように動作できます。

df -h

そうでない場合は、サーバーのデバッグに関するMySQLのドキュメントを参照してください。それらはmyisamchk(MyISAMを使用している場合)特に便利です。


3

最近、ubuntuを更新した後にこの問題が発生しました。問題が何であるかはまだわかりません。しかし、mysqlを実行するために今のところ働いていた1つのworakroundはそうすることでした

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

これは動作し、apparmorがmysqlの実行を停止したことを示し、おそらくログも空である理由を説明します。mysqlは実行を許可されませんでした。

これには奇妙な問題が残っていますが、これまでのところ「苦情」はなく/var/log/apparmor、kern.logの唯一の監査エントリは苦情モードへのプロファイルの変更からです。

これを行う際に/etc/apparmor.d/local/usr.sbin.mysql、aa-complainコマンドがこのファイルを見つけられないと不平を言ったため、(空の)ファイルも追加したことに注意してください。


どうもありがとうございました!私の髪を引き裂くことに近づいた後、それは最終的にそれを修正しました。
オレーセ

3

512MBのDigital Oceanドロップレットでも同じ問題が発生しました。

メモリー不足が原因であることが判明しました。

即座の解決策は、他のサービスを再起動してメモリを解放することです。

sudo service apache2 restart

その後、うまくいけば、十分なメモリがあれば、mysqlを再起動できるはずです

sudo service mysql restart

長期的な解決策は、RAMを増やすか、スワップメモリ​​を作成することです。


2

ログファイルを見てください。少なくともDebianでは、mysql *ログインを取得し/var/logます。


3
mysql.errとmysql.logは両方とも空である
アンドリュー・

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タイプで調整したい)に移行したかった

指示に従って最新バージョンをインストールしました
が... 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.