548

Ubuntu 12.04 LTS (Precise Pangolin) にLAMPをインストールし、 phpMyAdminに root パスワードを設定しました。パスワードを忘れてしまい、ログインできなくなりました。ターミナルからパスワードを変更しようとすると、次のようになります。

エラー 2002 (HY000): ソケット '/var/run/mysqld/mysqld.sock' を介してローカル MySQL サーバーに接続できません (2)

どうすればこれを修正できますか? LAMP を開いたり、アンインストールしたり、再インストールしたりできません。

4

84 に答える 84

333

私はかつてこの問題を抱えていて、 をインストールすることで解決したmysql-serverことがありmysql-serverますmysql-client

このエラーは、ファイルが存在しないことを意味します。/var/run/mysqld/mysqld.sockインストールしていない場合mysql-server、ファイルは存在しません。その場合は、それをインストールします

sudo apt-get install mysql-server

ただし、mysql-serverがすでにインストールされて実行されている場合は、構成ファイルを確認する必要があります。

構成ファイルは次のとおりです。

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

では/etc/my.cnf、ソケット ファイルの構成は である可能性が/tmp/mysql.sockあり/etc/mysql/my.cnf、ソケット ファイルの構成では である可能性があります/var/run/mysqld/mysqld.sock。したがって、 を削除または名前変更/etc/mysql/my.cnfし、mysql に を使用させる/etc/my.cnfと、問題が解決する場合があります。

于 2013-02-23T09:38:34.847 に答える
267

これを試して:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

また(実行されているかどうかを確認するため):

telnet 127.0.0.1 3306 

おそらく、それはmy.cnfファイルの設定ミスにすぎません/etc/somewhereLinuxディストリビューションによって異なります)。

于 2012-07-25T20:32:49.560 に答える
72

次の手順を試しました。

  1. としてログインsuper userまたは使用sudo
  2. gedit/etc/mysql/my.cnfを使用して開く
  3. を見つけbind-addressて、その値をデータベース サーバー ホスト マシンの IP アドレスに変更します。私にとって、それはlocalhostまたはでした127.0.0.1
  4. ファイルを保存して閉じます。
  5. ターミナルに戻って実行sudo service mysql start

そして、それは私のために働きました。

于 2012-10-11T06:27:36.797 に答える
63

私の場合は、ディスクがいっぱいで、mysqld が起動できなくなったことが原因でした。

mysql サービスを再起動してみてください。

> service mysql restart

また

> service mysql stop

> service mysql start

コマンドを認識しない場合はstop、間違いなくディスク容量です。パーティションにスペースをmysql確保するか、ディスクを大きくする必要があります。

でディスク容量を確認してください

> df -h
于 2013-06-19T07:46:08.703 に答える
39

同様の問題がありました。mysql が起動しない:

sudo service mysql start
start: Job failed to start

apparmor を無効にした場合:

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

問題はなくなりました。問題は、mysqld が /run/mysqld/mysqld.sock にアクセスしようとしていたが、apparmor プロファイルが /var/run/mysqld/mysqld.sock にしかアクセス許可を与えていなかったことです (/var/run は /run にシンボリック リンクされているため、これらは実際には同じ)。mysqld が var パスを使用しない理由はわかりません。これはすべての構成ファイルで設定されているためです。ただし、次を /etc/apparmor.d/usr.sbin.mysqld に追加することで問題を解決できます。

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
于 2012-09-12T16:22:18.300 に答える
31

プロセスを強制終了することでこれを解決しましたmysql

ps -ef | grep mysql
kill [the id]

そして、次のコマンドでサーバーを再起動しました。

sudo /etc/init.d/mysql restart

しかしstart、同様に機能します:

sudo /etc/init.d/mysql start

次に、としてログインし、admin完了しました。

于 2014-07-30T09:43:17.430 に答える
22

どういうわけか、MySQLサーバープロセスがソケットを作成しなかったか、クライアントが間違った場所でソケットを探しています。

私の最初の提案は、MySQLサーバーが実行されているかどうかを確認することです。2番目の提案は、MySQLサーバーが別のホストで実行されているかどうかです。-h <hostname>その場合は、ターミナルのMySQLクライアントにフラグを追加します。

MySQLが実際に実行されており、ローカルで実行されている場合は、my.cnfファイルを確認してください。次のような行があるはずです

socket = /var/run/mysqld/mysqld.sock

それがあなたの投稿で言及したソケットの場所と一致するかどうかを確認してください。

経験から、最も可能性の高いシナリオは、MySQLサーバーがまったく実行されていないか、ターミナルからMySQLクライアントを実行しているのと同じホストで実行されていないことです。

于 2012-07-25T20:32:34.100 に答える
21

本番サーバーを再起動する必要があった後、同じ問題が発生しました。DigitalOcean ドロップレットで Debian 8.1 (Jessie) を実行しています。

これは私の問題を解決するために私がしたことです:

  1. ファイル/var/run/mysqld/mysqld.sockが存在するかどうかを確認します。そうでない場合は、入力して手動で作成しますtouch /var/run/mysqld/mysqld.sock(これは私がしなければならなかったことです)。

  2. したがって、MySQL プロセスはこのファイルを使用できます。と入力して、このファイルの所有権を変更しますchown mysql /var/run/mysqld/mysqld.sock

  3. 「2」が完了したら、service mysql restartまたはを入力して MySQL サービスを再起動します/etc/init.d/mysql restart

上記の手順を実行した後、私の問題は解決しました。私はめったにこの問題を抱えていませんが、おそらくもっと良い方法があるので、必要に応じて建設的なフィードバックを提供してください:)。

于 2015-08-18T00:32:50.967 に答える
19

"bind-adress"my.cnfのパラメータを確認してください。

それ以外の場合は、次のコマンドを試してください。

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h host 127.0.0.1、つまり localhost の場合

  • -P (大文字の -P に注意) port 3306、つまり MySQL のデフォルト ポート

于 2013-11-17T11:02:15.087 に答える
15

mysql サーバーが実行されていない可能性があります。mysql.server startターミナルに入力して、実行されることを確認します。

于 2014-07-18T06:24:29.457 に答える
12

Amazon EC2を使用していて、インスタンスでこの問題が発生している場合は、次のことを行うだけで済みます。

sudo yum install mysql-server
sudo service mysqld restart

Amazon EC2 にはサーバーがインストールされていない (クライアントのみがインストールされている) ため、その場合はインスタンスにインストールする必要があり、その後試してください

 mysql -u root -p

それが機能したかどうかを確認します。

于 2015-10-30T06:11:09.630 に答える
11

これが私のために働いたものです:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysql restart

これにより、リンクが作成されます。

于 2015-02-25T00:19:04.303 に答える
11

localhost を使用する代わりに:

mysql -u myuser -pmypassword -h localhost mydatabase

127.0.0.1 を使用

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(-p と mypassword の間にスペースを入れないことにも注意してください)

楽しみ :)

于 2015-10-20T20:43:25.567 に答える
9

私もこの問題を抱えていましたが、私はちょうどやった:

sudo service mysql restart 

それは私のために働いた。

于 2014-02-03T01:34:11.273 に答える
8

私は解決策を見つけました

コマンドを実行する前に:mysql_secure_installation

  • ステップ1:sudo systemctl stop mariadb
  • ステップ2:sudo systemctl start mariadb
  • ステップ 3:mysql_secure_installation

次に、root パスワードを尋ねられます。Enter キーを押し て、新しい root パスワードを設定するだけです。

于 2017-06-20T01:55:54.137 に答える
7

インストールが最近のものである場合、インストールがインストールサーバーであるかどうかを確認する必要があります... mysql-server-5.5..「mysql」のみをインストールした可能性があります..これはサーバーではなくクライアントのみです。

于 2013-01-25T22:07:39.707 に答える
7

Linux マシンにXAMPPがインストールされている場合は、my.cnfファイルを から/opt/lampp/etc/my.cnfにコピーしてみてください/etc/my.cnf

次に、mysql -u rootもう一度実行します... これで正しいソケットが得られ、MySQL クライアントを実行できるようになります。

于 2013-11-01T23:17:47.863 に答える
6

私の場合、実行すると、mysqlプロセスを実際に強制終了できなかったようです

sudo service mysql stop
ps -ef | grep mysql

mysql プロセスは常にそこにあり、ソケット ファイルをブロックしているようで、新しい mysql プロセスはそれ自体を作成できませんでした。

だからこれは助けた

cd /var/run
sudo cp mysqld/ mysqld.bc -rf
sudo chown mysql:mysql mysqld.bc/
sudo service mysql stop
sudo cp mysqld.bc/ mysqld -rf
sudo chown mysql:mysql mysqld -R
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

を使用してデータベースにログインできるようになりました

mysql -u root

次に、root パスワードを更新します。

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS : root パスワードの更新に問題がありました。「auth_socket」プラグインに問題があるようです。そのため、完全な権限を持つ新しいユーザーを作成する必要がありました。

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

これにより、パスワードなしでユーザー「super」が作成され、次のように接続できますmysql -u super

于 2017-05-09T06:57:30.867 に答える
6

私の場合、デフォルトのポート 3306 が他のプロセスによって使用されていたため、起動していませんでした。他のサービスを停止して実行した後sudo service mysql start、正常に機能しました。ところで、sudo lsof -Pn -iTCP:3306ポートを使用している可能性のある人を確認するようなものを使用できます。

于 2014-01-21T20:03:40.990 に答える
5

経験上、サーバーが最初に実行されているかどうかを確認してから、MySQLを構成してみる必要があると思います。最後の解決策は、MySQLを再インストールすることです。

于 2012-11-01T15:56:37.050 に答える
5

ターミナルを開き、次のように入力します。

sudo apt-get purge mysql-client-core-5.6

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-client-core-5.5

sudo apt-get install mysql-server  

MySQL データベース コア クライアントと MySQL サーバーの両方のパッケージは、同じバージョン 5.5 になります。MySQL クライアント 5.5 および MySQL サーバー 5.5 は、パッケージ管理者によって決定された Ubuntu 14.04 のこれらのパッケージの現在の「最適な」バージョンです。

MySQL Client 5.6 および MySQL Server 5.6 をインストールする場合は、Ubuntu Software Center で mysql-client-core-5.6 および mysql-server-5.6 パッケージを見つけることもできます。重要なことは、クライアントとサーバーのバージョン番号がどちらの場合も一致することです。

これは私にとってはうまくいきました。

于 2014-11-15T17:54:47.410 に答える
5

適切な権利があるかどうかを確認します。

sudo chmod 755 /var/lib/mysql/mysql

私は同じ問題を抱えていましたが、これは私にとってはうまくいきました。これを行った後、MySQLを起動できました。

于 2014-05-16T20:47:21.767 に答える
4

同じ問題がありました。これは、MySQL サービスが停止している場合に発生することがあります。

だからあなたはそれを開始する必要があります:

sudo service mysql start
于 2014-10-21T14:07:32.790 に答える
4

それは今動作します...

この問題を克服するために、Homebrew を使用して Mac OS X に MariaDB 10.1.16 をインストールするというチュートリアルに従いました。

ただし、MariaDB の古いインストールを強制終了またはアンインストールすることを忘れないでください。

于 2016-12-27T11:41:19.497 に答える
3

私にとっては、アップデートで問題が解決しました:

Ubuntu の場合:

sudo apt-get update
sudo apt-get upgrade

CentOS の場合:

sudo yum update
于 2016-07-17T13:16:08.187 に答える
2

私の場合、問題はすべてのデータベースでのページの破損でした (mysql エラー ログを確認してください)。

Forcing InnoDB Recoveryで解決しました。トリックは /etc/mysql/my.cnf を編集して追加することです

innodb_force_recovery = 4

すぐ下

[mysqld]

そしてmysqlを再起動します。すべてが正しく機能することを確認したら、もう一度行を削除します。

于 2013-09-19T13:52:49.733 に答える
2

最初に、サービスが実行されているかどうかを次のように確認できます。

ps ax | grep mysql

私はこの応答を得ました:

6104 pts/0    S      0:00 /bin/sh /usr/bin/mysqld_safe
6431 pts/0    Sl     0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/m

応答がない場合は、サービスが実行されていないことを意味するため、次のようにします。

service  mysql start
于 2013-06-29T10:16:58.823 に答える
1

私にとっては:

/etc/mysql/my.cnfまたはを開い/etc/my.cnfて、「バインド アドレス」を検索します。でした127.0.0.1。localhost に変換したので、行の結果は「bind-address = localhost」になるはずです。

それ以外の場合は、bind-address ディレクティブに存在する IP アドレスを使用して MySQL サーバーを実行する必要がありますmysql -h 127.0.0.1

于 2015-10-01T14:18:53.427 に答える
1

同じ問題がありました。私はこれを見つけました。

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

これはmysqld、MySQL クライアントを起動する前にデーモンを実行していないためです。このファイル/var/lib/mysql/mysql.sockは、MySQL の最初のインスタンスの実行時に自動的に作成されます。

修正するには:

最初に MySQL デーモンを起動してから、次のように入力しますmysql

/etc/init.d/mysqld start
mysql

MySQL ルート パスワードの変更

デフォルトでは、MySQL データベースの root パスワードは空です。セキュリティの観点から、MySQL ルート パスワードを新しいパスワードに変更することをお勧めします。

mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;

完了したら、ログインして確認します。

mysql -u root -p
Enter Password: <your new password>
于 2014-06-15T10:49:57.647 に答える
1

my.conf( )もチェック/etc/mysql/my.cnfして、bind-address が 127.0.0.1 に設定されているかどうかを確認します。

そうでない場合、この問題が発生する可能性があります。

于 2014-04-18T11:28:20.667 に答える
1

Ubuntu を使用している場合は、特権の問題である可能性があります。

ディレクトリ権限を確認してください。root グループにいるだけでは十分ではありません。また、 MySQL が書き込むディレクトリでchmodを使用します (たとえば、ファイル/var/run/mysqld/の作成用)。mysqld.pid

これは私にとって役に立ちました。

于 2013-10-05T10:25:36.557 に答える
1

ローカルで実行しています。つまり、クライアントはサーバーと同じマシンで実行されます。

Unix ユーザーが実際に到達/読み取りできることを確認します/var/run/mysqld/mysqld.sock

ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock

そうでない場合は、システム管理者またはデータベース管理者に確認して、それらのディレクトリへの適切な読み取り/実行アクセスを許可するか、ソケット ファイルを別の場所に移動してください。

于 2014-03-12T17:47:24.340 に答える
1

うまく説明できませんが、kubuntu 12.04.2 以降では

sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic

それは働き始めました

于 2013-03-18T08:51:41.667 に答える
1

Ubuntu 18:10 Linode 1GB RAM で、このエラーが発生しました。/var/log/mysql/error.log を調べたところ、次のようになりました。

[注] InnoDB: innodb_empty_free_list_algorithm は、バッファー プール サイズが小さいため、レガシーに変更されました。バックオフを使用するには、バッファ プールを少なくとも 20MB まで増やします。

Linode を 2GB にアップグレードし、sudo mysql で mariadb を再起動しました。次に mysql_secure_admin が実行されましたが、root ユーザーが mysql_native_password プラグインを使用するように変更して、user-as ususl ユニットに root パスワードが設定されませんでした。確かではありませんが、sock は作成されたようですが、VPS のメモリ不足によりサーバーがシャットダウンしました。

于 2019-05-14T23:10:47.313 に答える
1

この回答は、少量の RAM を搭載したマシンでの MySQL 5.6 への更新に関連しています。

Debian 8 (Jessie) で MySQL 5.5 から 5.6 にアップグレードするときに同じ問題が発生しました。MySQL は開始されておらず (ステータスはアクティブ/終了を示していました)、単純に作成service mysql startが機能しませんでした。これは、/var/logs/mysql/error.logログ ファイルからわかったとおりです。

InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
Cannot allocate memory for the buffer pool

メモリが足りませんでした。RAM は 256 MB しかありませんでした。

MySQL には、設定がありますperformance_schema。デフォルトでは、MySQL 5.5 ではオフになっています。

https://dev.mysql.com/doc/refman/5.5/en/performance-schema-startup-configuration.html

しかし、MySQL 5.6 ではデフォルトでオンになっており、次の行を/etc/mysql/my.cnfファイルに追加して再起動するだけで機能しました。

performance_schema = off

警告:この設定をオフにすると、パフォーマンスの問題が発生する可能性がありますが、開発環境では問題にならないでしょう。

また、最小限のメモリを使用するように MySQL を構成するのに役立つ可能性のある記事、最小限のメモリを使用するように MySQL を構成する(元のリンクが将来期限切れになる場合の Web アーカイブ リンクhttps://web.archive.org/web/20201112041608/ http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html )。

于 2015-06-17T11:38:48.853 に答える
1

私の場合、mysqlデータのフォルダーでファイルが破損していました

mv /var/lib/mysql /var/lib/mysql_old

バックアップがあったので、ディレクトリを「_old」に移動し、dockerを再度起動しました。クリーンなデータを含む新しいフォルダー mysql を作成し、ソケットが機能しました。

于 2019-11-06T11:58:03.107 に答える
0

アドバイス: 常に MySQL に問題の原因を尋ねてください。私の場合、less /var/log/mysql/error.logこれを見てください:

2015-07-28 12:01:48 23224 [ERROR] /usr/sbin/mysqld: unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2015-07-28 12:01:48 23224 [ERROR] Aborting

でこのオプションのコメントを外したため、不平を言っていますが、このオプションをmy.cnfコメントした後、問題なく起動しました。

于 2015-07-28T12:38:53.590 に答える
0

セクション ([mysqld])から次の行を削除して、この問題を解決し/etc/mysql/my.confました。mysqld

default-character-set=utf8

再起動すると正常に動作します。

于 2013-07-29T09:40:16.897 に答える
0

私は言わなければなりませんでした:

sudo /etc/init.d/mysqld start
于 2015-08-04T17:45:07.290 に答える
0

私もこの問題を抱えていましたが、これらの回答はどちらも役に立ちませんでした。問題は異なりましたが、エラーはOPによって説明されていました。

で MySQL のログを確認したところ、次の/var/log/mysqlように表示されました。

150309  5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable   'lower_case_tables_names=1'

/etc/mysql/my.cnfファイルを開き、その行をアウトコメントしました#。その後、データベースに接続できました。

正直なところ、何が問題だったのかわかりません。Linode サーバーはメンテナンスのために再起動する予定でしたが、このエラーはどこからともなく発生しました。

于 2015-03-09T02:41:33.897 に答える
0

/etc/mysql/my.cnf、最後の行が次のようになっていることを確認します。

!includedir /etc/mysql/conf.d/
于 2015-02-26T12:44:19.750 に答える
0

このエラーは、データベースが保存されているディレクトリを変更しようとしたときに、構成ファイルに間違ったディレクトリを入力した場合にも発生する可能性があります (D正確な ではなく2 番目のドライブのタイプミスなどD_)。Typo ディレクトリが存在しないことを伝える代わりに、それにアクセスする権限がないことを伝えます (typo ディレクトリの権限を変更しようとすることになります)。したがって、ディレクトリの変更中にこのエラーが発生した場合は、構成ファイルを再確認して、タイプミスがないことを確認してください。

于 2015-05-15T19:17:34.840 に答える
0

MySQLをアップグレードすると修正されました。RHEL ベースのサーバーでは、次を実行します。

sudo yum upgrade mysql-server
于 2014-03-13T22:36:19.477 に答える
0

のグループの所有者を確認する必要があり/var/run/mysqldます。そうでない場合はmysql.mysql、次のようにします。

su root
chown mysql.mysql /var/run/mysqld
于 2014-02-25T12:30:48.680 に答える
0

構成ファイルに問題がある可能性があります。同様の問題がありましたが、Web 上で解決策を見つけることができませんでした。my.cnfに1 つ、もう 1 つに 2 つのファイルがあることに気付き/etc/mysqlました/etc。以下の手順に従います。

  1. my.cnfを使用して、コンピュータ上のファイルを確認しますlocate my.cnf

  2. と の 2 つのエントリがある場合は、別の名前/etc/my.cnf/etc/mysql/my.cnf変更/etc/mysql/my.cnfします。/etc/mysql/my.cnf.old

MySQL を再度実行してみてください。

于 2014-05-06T10:29:45.793 に答える
0

私は同じ問題に直面しましたが、問題は mysql-server がインストールされていたが実行されていなかったことです。

service mysql start または systemctl start mysql を試してください

于 2021-08-29T14:22:03.473 に答える