mysql -h host -u user -p<whatever> -e"quit"
これにより、サーバーにプログラムでクエリを送信するために使用するのと同じ接続文字列を使用できます。 || exit 1
を追加できます 最後に、無効な引数で自動終了します。 stderr を /dev/null
にリダイレクトすることもできます。 自動生成された MySQL エラー メッセージが気に入らない場合。
次のコマンドを使用できます (mysql が PATH に設定されていると仮定します):
<ブロック引用>mysql -h ホスト -u ユーザー -p
ホストを置き換えるだけです とユーザー 正しい値を入力すると、パスワードの入力を求めるプロンプトが表示されます。
@Phil の回答と @Mr.Brownstone の回答で十分なので、両方に +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'[email protected]'10.20.30,%'
が表示された場合 の場合、10.20.30.% ネットブロックからのみリモート ログインできます。
'mysql.user' がユーザーに対して何を持っているかを確認したら、myuser を 1 つの方法で logggin から許可または制限することをお勧めします。
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 のパスワードは有効であることが確認されます。