mariadbログインエラー:1698-ユーザーのアクセスが拒否されました

シェルターミナルからパスワードなしでログインできますがmysql -uroot、mariadbエラーの場合はNavicatでログインします。1698 - Access denied for user 'root'@'localhost'

Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8

MariaDB [mysql]> select user,host,plugin from user where user='root'\G;
*************************** 1. row ***************************
  user: root
  host: %
plugin: unix_socket
1 row in set (0.00 sec)

rootはローカルのunixソケットログインのみを許可していることがわかります。

unix_socketの紹介について

unix_socketの認証プラグインのローカルUnixソケットファイルを経由してMariaDBへの接続時に、ユーザーがオペレーティングシステムの資格情報を使用することができます。このUnixソケットファイルは、ソケットシステム変数によって定義されます。unix_socketの認証プラグインは、それがソケットに接続されているプロセスのUIDを取得することができますSO_PEERCREDソケットオプションとgetsockoptのシステムコールを呼び出すことで動作します。その後、そのuidに関連付けられたユーザー名を取得できます。ユーザー名を取得すると、接続しているユーザーを同じユーザー名のMariaDBアカウントとして認証します。差出人:https://mariadb.com/kb/en/authentication-plugin-unix-socket/

この問題を解決するために、mysql.userテーブルのrootユーザーの行のプラグインフィールドを空に変更できます。変更後、シェルターミナルからのrootログインにもパスワードが必要です。rootパスワードを忘れる手間を省くために、新しいデータベースユーザーを作成することにしました。

# myql -uroot
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> create user 'sure'@'%' identified by '1234567'
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> select user,host,plugin from user;
+------+------+-------------+
| user | host | plugin      |
+------+------+-------------+
| root | %    | unix_socket |
| sure | %    |             |
+------+------+-------------+
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

ご覧のとおり、新しく作成されたユーザーのプラグインフィールド値はデフォルトで空であり、問​​題はここで解決されます。

プラグイン列が空の場合、MariaDBはデフォルトでmysql_native_passwordまたはmysql_old_passwordプラグインのいずれかを使用してアカウントを認証します。[パスワード]列の値で使用されているハッシュに基づいて、どちらを決定します。パスワードが設定されていない場合、または4.1パスワードハッシュ(41文字の長さ)が使用されている場合、MariaDBはmysql_native_passwordプラグインを使用します。mysql_old_passwordプラグインは、4.1より前のパスワードハッシュ(16文字の長さ)で使用されます。
差出人:https://mariadb.com/kb/en/mysqluser-table/#authentication-plugin

一般的に、プラグインフィールドが空の場合、デフォルトのパスワードベースのログイン方法がデフォルトで使用されます。

mysql.userテーブルのフィールド意味:https//mariadb.com/kb/en/mysqluser-table/

mariadbがユーザーパスワードを更新しますhttps//www.techonthenet.com/mariadb/change_password.php

おすすめ

転載: blog.csdn.net/lx1848/article/details/106592967
おすすめ