リモートのMySQLサーバーに接続するには、直接またはSSHトンネルを介して、unix_socket
を使用することはできません。 DBサーバーオペレーティングシステム上のUNIXソケットファイルへのローカルアクセスを必要とする認証プラグイン。
unix_socket
プラグインは、* nixシステムのプロセス間通信(IPC)の形式である特殊なタイプのファイル(unixソケット)を使用して実装されます。これにより、mysql CLIクライアントがDBと通信できるようになり、ソケットファイル(/tmp/mysql.sock
)へのローカルアクセスが必要になります。 )。ソケットに接続すると、unix_socket
プラグイン(サーバー側)は、ソケットに接続されているユーザー(つまり、youruser)のuidを取得し、パスワードを必要とせずに自動的に認証します。
考えられる解決策:
root以外のユーザーでマシンBに接続する場合は、root以外のオペレーティングシステムのユーザーアカウント名と同じ名前のDBユーザーを作成する必要があります。
GRANT ALL PRIVILEGES ON *.* TO 'youruser'@'localhost' IDENTIFIED VIA unix_socket;
これで、次を実行するだけで、ユーザーアカウントとmysqlCLIクライアントを使用してmysqlに接続できます。
youruser:~$ mysql
rootユーザーでDBに接続する場合は、mysqlクライアントを実行するためにrootアカウントまたはユーザーに関連付けられたsudoポリシーにアクセスする必要があります。
youruser:~$ sudo mysql
明らかに、DBルートアカウントへの定期的な認証済みネットワークアクセスを有効にすることができます。これはセキュリティの問題につながる可能性があるため、ローカルホストに制限することをお勧めします:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION;
ログインを認証できる場合は、任意のローカルオペレーティングシステムアカウントからログインできるようになりました:
youruser:~$ mysql -u root -p