最近ARMシステム(RBPI3)にMySQLをインストールし、以下を実行した場合:
pi@raspberrypi:~ $ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
しかし、sudoを使って接続できます。
pi@raspberrypi:~ $ sudo mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
私がsuでなければ、なぜサービスにアクセスできないのかわかりません。これは、たとえば、WWW-DATAユーザーとして実行されているNginxで実行されているWordPressがデータベースに接続できないことを意味します。私がここで何を見逃しているのでしょうか?
答え1
Debian / UbuntuのMariaDBはデフォルトでUnixソケットを介して認証し、呼び出し側ユーザーの有効なunixユーザーIDを確認しますmysql
。mysql
rootとして実行しないか、sudo
を使用しないと失敗します。
https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/
sudo
既存の方法に戻すには、()を使用してデータベースにログインし、sudo mysql -u root
次のようにユーザーを変更します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
FLUSH PRIVILEGES;