web-dev-qa-db-ja.com

Linuxでは、rootからのmysqlログインは許可されていますが、別のLinuxユーザーアカウントからのログインは許可されていません。

したがって、BlueHostが所有するWebサーバーに2つのユーザーアカウントがあります。それらを「root」と「user1」と呼びましょう。ルートLinuxアカウントにログインするときは、「ルート」mysqlアカウントでmysqlにログインしようとします。その後、mysqlにログインできます。そこはすべて良いです。

問題は、まったく同じ資格情報を使用して「user1」Linuxアカウントからmysql「root」ユーザーにログインしようとすると(なし。そのmysqlアカウントにパスワードがない)、エラーが発生することです。言うメッセージ:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Linuxには、「user1」ユーザーに対して変更する必要のあるユーザー権限がありますか?

1
Adam McGurk

最近のmysql/mariadbサーバーには、プラグインベースの認証システムがあります。

_MariaDB [(none)]> select user,Host,password,plugin from mysql.user limit 1;
+------+-----------+-------------------------------------------+-------------+
| user | Host      | password                                  | plugin      |
+------+-----------+-------------------------------------------+-------------+
| root | localhost |                                           | unix_socket |
+------+-----------+-------------------------------------------+-------------+
_

この構成では、root @ localhostへのアクセスはunixユーザー「root」にのみ許可され、実際のユーザーIDはmysqlサーバーに送信され、ログインは要求されたmysqlユーザーと一致する場合にのみ許可されます。

「user1」がmysqlサーバーにログインできるようにするには、次のいずれかを行う必要があります。

  • Root認証を「通常の」ログイン/パスワード認証に戻します(注意してください。自動化されたスクリプト、ログローテーション、サービスの開始/停止などのほとんどが壊れます)。 ALTER USER root@localhost identified with 'mysql_native_password'; SET PASSWORD = password('foo');

  • Unix_socket auth:_CREATE USER user1 IDENTIFIED VIA unix_socket;_を使用してmysql user1を作成し、彼にルートアクセス権を付与します_GRANT ALL WITH GRANT OPTION ON *.* TO user1@localhost;_

1
silmaril