1. ホーム
  2. mysql

[解決済み] MySQLが失敗した場合: mysql "ERROR 1524 (HY000): プラグイン 'auth_socket' はロードされていません。

2022-04-26 08:04:30

質問

私のローカル環境は

  • フレッシュUbuntu 16.04
  • PHP7搭載
  • MySQL 5.7をインストールした場合

    sudo apt-get install mysql-common mysql-server
    
    

MySQLに(CLIで)ログインしようとしたとき。

mysql -u root -p

3ステップの周期的な問題に遭遇しました。

1) まず、ソケットの問題

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

解決策:PCを再起動する。

その結果、別のエラーが発生しました。

2) アクセスが拒否された場合

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

考えられる問題点は?root ユーザーのパスワードが間違っている!

解決方法 ルートパスワードのリセット方法 .

正しいパスワードとソケットが動作している場合、最後のエラーが発生します。

3) 認証プラグインが正しくない

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

ここでまた立ち止まったり、なんとなく1)にたどり着いたり。

解決方法は?

解決しました!

手順2)でrootのパスワードをリセットする際も、authプラグインを mysql_native_password :

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

これで無事にログインできました


フルコードでの解決方法

1. bashコマンドを実行する

1. まず、以下のbashコマンドを実行します。

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. 次に、mysql コマンドを実行します => これを手動で cli にコピーペーストします。

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. bashコマンドをさらに実行する

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p 

4. ソケットの問題(皆様のコメントより)

が表示されたら ソケット というエラーが発生した場合、2つの解決策を提案しているコミュニティがあります。

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(@Cerin に感謝)

または

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

(Peter Dvukhrechensky に感謝します。)


ブラインドパスとエッジエラーの可能性

ローカルホストの代わりに127.0.0.1を使用する

mysql -uroot # "-hlocalhost" is default

ファイルが見つからない"またはsltエラーになる可能性があります。

mysql -uroot -h127.0.0.1

より良く動作します。

ソケットの問題をスキップする

を作成する方法はたくさんありますね。 mysqld.sock ファイルを作成したり、アクセス権を変更したり、シンボリックリンクしたりすることができます。結局問題なかったんですね。

をスキップして my.cnf ファイル

また、問題もありませんでした。よくわからない場合は これはあなたの助けになるかもしれません .