web-dev-qa-db-ja.com

sudoを実行せずにMySQLにアクセスすることはできません

最近、MySQLをARMシステム(RBPI3)にインストールしました。

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がDBに接続できないことも意味します。ここで何が欠けていますか?

2
DomingoSL

Debian/Ubuntu上のMariaDBは、デフォルトでUnixソケットを介して認証し、mysqlを呼び出すユーザーの有効なunixユーザーIDをチェックします。 mysqlをrootとして(またはSudoを使用して)実行しない場合、これは失敗します。

https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/

これを従来の方法に戻すには、SudoSudo mysql -u root)を使用してデータベースにログインし、次のようにユーザーを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
FLUSH PRIVILEGES;
4
Sven