LinuxコマンドラインからMySQLクレデンシャルをテストしますか?


回答:


5

@ Phil's Answer@ Mr.Brownstone's Answerはあなたの質問に十分であるはずなので、両方とも+1します。

以下では、ユーザー名でログインしていると仮定しましょう myuser

mysqlに接続したら、次のクエリを実行する必要があります。

SELECT USER(),CURRENT_USER();
  • USER()は、MySQLで認証しようとした方法を報告します
  • CURRENT_USER()は、MySQLでの認証を許可された方法を報告します

時々、それらは異なります。これにより、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つの方法で許可または制限することができます。

パスワードがあれば、あなたは、単にチェックする場合myuserwhateverpassword、次の操作を実行できます。

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のパスワードは良好であると検証されます。


13
mysql -h host -u user -p<whatever> -e"quit"

これにより、プログラムでサーバーにクエリを送信するために使用するものと同じ接続文字列を使用できます。|| exit 1最後に追加して、無効な引数で自動終了することができます。また/dev/null、自動生成されたMySQLエラーメッセージが気に入らない場合は、stderrをリダイレクトすることもできます。


6

次のコマンドを使用できます(PATHにmysqlがセットアップされていると仮定)。

mysql -hホスト-uユーザー-p

ホストユーザーを正しい値に置き換えるだけで、パスワードの入力を求められます。


2
プログラムで確認したいです。trueまたはfalseを返すもののように。
ジェイクウィルソン

2
mysql --user=user_name --password=your_password dbname

あなたの質問は簡単ですか、それともテストする必要がある特定のケースがありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.