> show databases -A -uroot -pPASSWORD; や show databases -A -urootD; などととやっても
うまくいかなくて当たり前です。
認証するのは接続するときなんですからmysql.exeを実行した時点で接続は完了します。
show databases;はもうSQL文なんですからここでは認証できるはずもありません。
> 他方、4.0.26で、my.iniに、
> [WinMySQLadmin]
> user=root
> password=mypassword
> と設定してあるものが認識されていないようです。
これはWinMySQLadminがMySQLサーバーに接続するときのユーザー名とパスワードを指定しているだけです。
他の物には関係ありません。
> $DBPASSWORD = ""; //←ここを空白にする
> とやったら、MySQLに接続できました。
ユーザーの情報(ユーザー名とパスワードおよび権限等)はMySQLサーバーにmysqlという名前のデータベースに保存・管理されています。
これと照合して認証するわけですからmy.iniは関係ありません。
また、新規にMySQLサーバーをインストールした場合はroot(管理者権限のユーザー)のパスワードは指定されていません。(つまり空欄がパスワードである)
よって、パスワードが空欄であれば認証できるということです。
最後に始めの質問での正しい使用例を以下に示します。
C:\>mysql -uUSERNAME -pPASSWORD
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.0.26-nt-max
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+-----------+
| Database |
+-----------+
| test |
| mysql |
+-----------+
2 rows in set (0.03 sec)
質問者
お礼
> ユーザー名、パスワードを設定した覚えはないのですが、
> そもそも、データベースmysqlに私のユーザー名、パスワードは
> なんと保存されているのか知るすべはありますでしょうか?
すみません、phpMyAdminからデータベース=mysqlの userテーブルを
のぞいてみたら、次のようになってました。
(横に長いので行と列を入れ替えて縦長にして掲示します。)
やっぱりroot+passなしというユーザーしかいないのですよね?
だとしたら、ご教示のようにDOS窓で
C:\>mysql -uroot -pとやればいいように思うのですが。
Host localhost localhost
User root
Password
Select_priv Y N
Insert_priv Y N
Update_priv Y N
Delete_priv Y N
Create_priv Y N
Drop_priv Y N
Reload_priv Y N
Shutdown_priv Y N
Process_priv Y N
File_priv Y N
Grant_priv Y N
References_priv Y N
Index_priv Y N
Alter_priv Y N
Show_db_priv Y N
Super_priv Y N
Create_tmp_table_priv Y N
Lock_tables_priv Y N
Execute_priv Y N
Repl_slave_priv Y N
Repl_client_priv Y N
ssl_type
ssl_cipher [BLOB - 0 バイト] [BLOB - 0 バイト]
x509_issuer [BLOB - 0 バイト] [BLOB - 0 バイト]
x509_subject [BLOB - 0 バイト] [BLOB - 0 バイト]
max_questions 0 0
max_updates 0 0
max_connections 0 0
質問者
補足
Etherskyさん、いつもお世話になっております。
> 認証するのは接続するときなんですからmysql.exeを実行した時点で接続は完了します。
そういう仕組みでしたか。
ようやくわかってきました・・
> これはWinMySQLadminがMySQLサーバーに接続するときのユーザー名とパスワードを指定しているだけです。
> 他の物には関係ありません。
これ(my.iniのID/パスの意義)は、本当によくわからなくて悩んでました。
つまりは、削除してしまってもかまわないものなのでしょうか。
> よって、パスワードが空欄であれば認証できるということです。
非常に理路整然としたご解説、感謝にたえません。
今までの謎が次々と晴れていくようで、本当に勉強になります。
> 最後に始めの質問での正しい使用例を以下に示します。
> C:\>mysql -uUSERNAME -pPASSWORD
> Welcome to the MySQL monitor. Commands end with ; or \g.
これがなぜかできません・・C:\ってことは、mysql.exeでなく、
cmd.exeですよね?
winmysqladmin.exeが起動した状態で、cmd.exeを実行すると、
■C:\>mysql -uroot -p[enter]
'mysql' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
■C:\Documents and Settings\n-sawazu>mysql -uroot -p[enter]
同上のエラーで、うんともすんともいいません・・
ユーザー名、パスワードを設定した覚えはないのですが、
そもそも、データベースmysqlに私のユーザー名、パスワードは
なんと保存されているのか知るすべはありますでしょうか?
お礼
Etherskyさん、一連のご講義、本当に勉強になりました。 まずは御礼申し上げます。 > my.iniにWinMySQLAdminと同じようにmysql.exeが接続する際にデフォルトで > 使用するユーザー名・パスワードを指定しておくことができます。 なるほど。今まで(4.0.16)は、これを指定していたから使えていた のでしょうね。初めてMySQLをセットアップしたときは、あちらこちらの Web情報を切り貼りしていて「何とか動く」環境を作ったものですから、 今回はその設定をしていなかったのだと思います。 > -uとrootがくっついていて分かりにくいですが注意すべき点です。 こちらも、よく打ち間違えます。。念を押していただけたおかげで もう忘れることはなさそうです。 > 何のプログラムの初回起動時に尋ねられたのでしょうか? > WinMySQLAdminに訊かれたのなら入力したものはmy.iniに書き加えられます。 ご推察のとおり、WinMySQLAdminに訊かれたものです。 my.iniも、いろいろいじったので、少し混乱していました。 #おかげさまで整理がつきました。 > 代わりとして > MySQL Administrator > や > phpMyAdmin え そうなのですか? また覚えることが増えそうですが、身の程知らずな新しいもの好きなので ぜひ挑戦したいと思います。明日にでも入門本を一冊買ってきます。 とりあえずパスを通してshow databases;ができたので、表題の目的は 達成することができました。この過程で、大変わかりやすくご解説 いただけたおかげで、本当に勉強になりました。 ログは大切に保存しておくことにします。本当にありがとうございました。