Ubuntu 15.10 mysqlエラー1524-unix_socket


51

Ubuntu 15.10では、ある時点(mariadbのインストールと削除後)でmysqlが動作しませんでした。タスクはアップしていますが、サーバーはダウンしています。

コマンドで:

mysql -u root -p

システムは次のように応答します:

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

ログインする方法、プラグインが見つからない、設定ファイルにエラーがない(すべてデフォルト)。

制御を取り戻し、mysqlサーバーを実行する方法は?


私は、この特定のエラーに精通していないですが、この議論を参照してください。lists.launchpad.net/maria-developers/msg08177.html
ヨス

@Jos:その議論は、おそらく同様の状況のた​​めに、解決策を提供しません。私は多くのことをグーグルで検索しましたが、完全なソリューションが公開されていることを発見していません。とにかく、私は実用的な答えを投稿しました。
ハイドラスターマスター

エラーメッセージの理由について:unix_socketプラグインは(MySQLではなく)MariaDBの一部であり、それを使用する許可が機能するためにロードする必要があります:mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

回答:


94

「unix_socket」はmysql認証プロセスによって呼び出されています(データベースのmariadbへの部分的な移行に関連している可能性がありますが、現在は削除されています)。すべてを元に戻すにはsuを実行します。

sudo su

続いてください:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot

これにより、mysqlが完全に停止し、ユーザー認証がバイパスされ(パスワードは不要)、ユーザー「root」でmysqlに接続されます。

次に、mysqlコンソールで、mysql管理データベースを使用します。

use mysql;

rootパスワードをmynewpasswordにリセットするには(希望に応じて変更します)、念のために:

update user set password=PASSWORD("mynewpassword") where User='root';

そして、これは認証メソッドを上書きし、unix_socketリクエスト(およびその他すべて)を削除し、通常の機能するパスワードメソッドを復元します。

update user set plugin="mysql_native_password";

mysqlコンソールを終了します。

quit;

mysqlに関連するすべてを停止して開始します。

/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

exitsuモードを忘れないでください。

これで、mySQLサーバーが稼働しています。rootでログインできます:

mysql -u root -p

またはあなたが望むもの。パスワードの使用は有効です。

それでおしまい。


私のmysqld_safeようなオプションはありません--skip-grant-tables
heemayl

私はmysqld 5.6.27-0ubuntu1を使用しています。あなたは見て、そのオプションを見つける必要があります:mysqld --verbose --help
ハイドラStarmaster

2
これでうまくいきました。mysqld_safe引数--skip-grant-tablesが存在しなかったという不満の代わりに、いくつかの違いがありましたmysqld。ただし、でソケットファイルを作成できないと不平を言っていました/var/run/mysqld/。apparmorの設定を確認しましたが、適切な権限がありました。これを修正するためにmkdir /var/run/mysqld/、完全にオープンな許可を与えなければなりませんでしたchmod -R 777 /var/run/mysqld/。その後、最終的にデーモンを起動し、プラグインを「mysql_native_password」に変更できました。
-dennmat

1
ユーザーテーブルにはパスワードフィールドがありません(Ubuntu 16 mysql 5.7.13)。このSQLを使用しました:UPDATE mysql.user SET authentication_string = PASSWORD( 'foobar123')、password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
アンソニー

ここでの指示は簡潔で、問題の解決に役立ちました。ありがとうございました!
エドゥアルドB.

11

これを行うための私の手順は次のとおりです。

/etc/init.d/mysql stop
sudo killall mysqld_safe
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
sudo kill -9 $(pgrep mysql)
/etc/init.d/mysql start

1
今、「mysql -u root」の後、エラー1524(HY000):プラグイン 'root'がロードされていません
-dxvargas

2つのUPDATEクエリを混同したようです。偶然にplugin = "root"を設定しましたか?
アダムプロッチャー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.