LinuxサーバーでコマンドラインからMySQLクレデンシャルをどのようにテストしますか?
LinuxサーバーでコマンドラインからMySQLクレデンシャルをどのようにテストしますか?
回答:
@ Phil's Answerと@ Mr.Brownstone's Answerはあなたの質問に十分であるはずなので、両方とも+1します。
以下では、ユーザー名でログインしていると仮定しましょう myuser
mysqlに接続したら、次のクエリを実行する必要があります。
SELECT USER(),CURRENT_USER();
時々、それらは異なります。これにより、mysqlへのログインが許可されている理由を知ることができます。
実行する必要がある別のクエリを次に示します。
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
これにより、としてログインできる方法が表示されますmyuser
。
が表示されている場合は'myuser'@'localhost'
、DBサーバー内から認証できます。
が表示され'myuser'@'127.0.0.1'
、表示されない場合は'myuser'@'localhost'
、DBサーバー内から再度認証できますが--protocol=tcp
、コマンドラインから指定する必要があります。
が表示されている場合は'myuser'@'%'
、任意のサーバーからリモートログインできます。
が表示される場合'myuse'r@'10.20.30,%'
、10.20.30。%のnetblockからのみリモートログインできます。
「mysql.user」がユーザーに対して持っているものを確認したら、myuserのloggginを他の方法ではなく1つの方法で許可または制限することができます。
パスワードがあれば、あなたは、単にチェックする場合myuser
でwhateverpassword
、次の操作を実行できます。
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
次のようにコマンドラインから確認できます。
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
そうではなくroot
、myuserのみをテストしたい場合は、次のようにします。
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
1を取得した場合、myuserのパスワードは良好であると検証されます。