sql >> データベース >  >> RDS >> Mysql

unix_socketを使用してMySQLアカウントにログインします

    リモートの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
    



    1. SQLServerでのデータ圧縮の節約を見積もる

    2. SQLServerで日付をddmmyyyyとして返す

    3. SQLデータ定義言語

    4. UNIX_TIMESTAMP()の例– MySQL