web-dev-qa-db-ja.com

Homebrew Mariadb Mysqlのインストールrootアクセスが拒否されました

だから私は基本的に、mysqlでmariadbをhomebrewを使用してMacにインストールしています。これらは私が作ったステップです:

  • 醸造ドクター->働いた
  • 醸造の更新->働いた
  • brew install mariadb->成功
  • mysql_install_db->失敗

    警告:ホスト「Toms-MacBook-Pro.local」は、/ usr/local/Cellar/mariadb/10.4.6_1/bin/resolveipで検索できませんでした。これはおそらく、libcライブラリがこのバイナリのMariaDBバージョンと100%互換性がないことを意味します。 MariaDBデーモンmysqldは、ホスト名の解決が機能しないことを除いて、正常に機能するはずです。つまり、MariaDB特権を指定するときは、ホスト名ではなくIPアドレスを使用する必要があります。 mysql.userテーブルはすでに存在します!

ランニング mysql_upgradeその後、次のエラーが表示されました:

バージョンチェックに失敗しました。 「mysql」コマンドラインクライアントのエラー1698(28000)の呼び出し時に次のエラーが発生しました:ユーザー「root」@「localhost」のアクセスが拒否されました致命的なエラー:アップグレードに失敗しました

次のようにmysqlを入力することはできません。

mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

しかし、このように:

Sudo mysql -u root

Userテーブルはこれを返します:

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user;
+---------------+-------------------------+-----------------------+
| User          | Host                    | plugin                |
+---------------+-------------------------+-----------------------+
| root          | localhost               | mysql_native_password |
| toms          | localhost               | mysql_native_password |
|               | localhost               |                       |
|               | toms-macbook-pro.local |                       |
+---------------+-------------------------+-----------------------+
4 rows in set (0.004 sec)
3
junfo

私はこれを使っていますmysql_secure_installationそして今それは私のために動作します:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

現在のパスワードとしてrootと入力します

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

残りを行います

0
Agus Sudarmanto

MariaDB 10.4は、デフォルトでローカルルートの nixソケット 認証プラグインを有効にします。つまり、新しくインストールされたシステムでは、ローカルルートであり(Sudoで実行)、TCPではなくソケットを使用している限り、パスワードなしで実行中のサーバーに接続できます。

さらに、MariaDB 10.4では、アカウントに複数の認証方法を使用できます。ローカルルートを構成してパスワード認証も使用できるようにしますが、最初はパスワードを無効にします(以前のように空のパスワードを設定しません)。パスワード認証を使用してmysql -uroot -pとして接続する場合は、まずUnixソケットを使用してルートとして接続し、SET PASSWORD=...を実行する必要があります。

高度なユーザー構成は、JSON形式でmysql.global_privテーブルに保存されるようになりました。 mysql.userは下位互換性を保つために残されていますが、テーブルではなくなりビューになっています。複数の認証方法を許可した結果、ユーザー設定が常に正確に表示されるとは限りません。具体的には、ユーザーが使用できるすべての認証方法が表示されるわけではないため、mysql.global_privを照会する必要があります。新規インストールでは、次のようなものが表示されます

+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Host      | User   | Priv                                                                                                                                       |
+-----------+--------+--------------------------------------------------------------------------------------------------------------------------------------------+
| localhost | root   | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
...

10.4認証の変更についての詳細情報 こちら をご覧ください。

0
elenst