dポイントプレゼントキャンペーン実施中!

4.0.16から、4.0.26にバージョンアップしたのですが、root権限や、パスワードが
よくわかりません。

4.0.16の時は、mysql.exeを開き、DOS窓で「show databases;」とたたくだけで、
testとmysqlが表示されましたが、
4.0.26や、4.1x系ですと、testしか表示されません。たとえば、

show databases -A -uroot -pPASSWORD;  や、
show databases -A -urootD;  などととやっても、↓のようになってしまいます。

ERROR 1064: You have an error (中略)'-A -uroot -p PASSWORD' at line 1

他方、4.0.26で、my.iniに、
  [WinMySQLadmin]
  user=root
  password=mypassword
と設定してあるものが認識されていないようです。

既存のPHP+MySQL4.0.16(ローカルで使うだけのものなので、ユーザー名、パスワードなし)で
構築したPHPプログラムがあるのですが、これを
今回インストールしたMySQL 4.0.26の組み合わせに適用しても動かなかったので、

  $DBSERVER = "localhost";
  $DBUSER = "root"; //←ここと、
  $DBPASSWORD = "mypassword"; //←ここです
  $DBNAME = "mydb";
  $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
  $selectdb = mysql_select_db($DBNAME, $con);

とやってみましたが、エラーになってしまうので、

  $DBPASSWORD = ""; //←ここを空白にする

とやったら、MySQLに接続できました。
my.iniに記入したものは、適用されていないのでしょうか?

A 回答 (3件)

> # 少なくとも4.0.16では、-rootなどの儀式は不要で、


> # musql.exeを起動するだけでshow database; が利いたのです。

my.iniにWinMySQLAdminと同じようにmysql.exeが接続する際にデフォルトで使用するユーザー名・パスワードを指定しておくことができます。
その場合はmysql.exeだけでも接続できます。
デフォルトを指定しておいても他のユーザーで接続したいなら
mysql -uUSERNAME ~
とやればそれが利用されます。

ちなみに
-root
ではなく
-urootです。
-uがユーザー名の指定を表し、rootがユーザー名です。
-uとrootがくっついていて分かりにくいですが注意すべき点です。
パスワードの場合も同じで-pのあとに間をおかずにそのまま入力します。
分かりやすく
mysql --user=USERNAME --password=PASSWORD
と書くこともできます。
つまり
--user= を省略した形が -u
--password= を省略した形が -p
というわけです。

> 確かに、セットアップして一回目の起動の際に、管理者のID/Passを
> 尋ねられました。これはmy.iniの話ですよね?

何のプログラムの初回起動時に尋ねられたのでしょうか?
WinMySQLAdminに訊かれたのなら入力したものはmy.iniに書き加えられます。
質問文での
[WinMySQLadmin]
user=root
password=mypassword
がそうです。
なので、MySQLサーバーに対してユーザーの設定をしてくれているわけではありません。
あくまでWinMySQLAdminが接続しにいくときのユーザーの指定をしているだけです。

ちなみにMySQL 4.1以降はWinMySQLAdminは付いていません。(古いツールなのでサポートされなくなりました)
(4.1の初期のバージョンには付いていますが正式版以降にはありません)

代わりとして
MySQL Administrator
http://www.mysql.com/products/tools/administrator/

phpMyAdmin
で操作することが推奨されています。
    • good
    • 0
この回答へのお礼

Etherskyさん、一連のご講義、本当に勉強になりました。
まずは御礼申し上げます。

> my.iniにWinMySQLAdminと同じようにmysql.exeが接続する際にデフォルトで
> 使用するユーザー名・パスワードを指定しておくことができます。

なるほど。今まで(4.0.16)は、これを指定していたから使えていた
のでしょうね。初めてMySQLをセットアップしたときは、あちらこちらの
Web情報を切り貼りしていて「何とか動く」環境を作ったものですから、
今回はその設定をしていなかったのだと思います。

> -uとrootがくっついていて分かりにくいですが注意すべき点です。

こちらも、よく打ち間違えます。。念を押していただけたおかげで
もう忘れることはなさそうです。

> 何のプログラムの初回起動時に尋ねられたのでしょうか?
> WinMySQLAdminに訊かれたのなら入力したものはmy.iniに書き加えられます。

ご推察のとおり、WinMySQLAdminに訊かれたものです。
my.iniも、いろいろいじったので、少し混乱していました。
#おかげさまで整理がつきました。

> 代わりとして
> MySQL Administrator
> や
> phpMyAdmin

え そうなのですか?
また覚えることが増えそうですが、身の程知らずな新しいもの好きなので
ぜひ挑戦したいと思います。明日にでも入門本を一冊買ってきます。

とりあえずパスを通してshow databases;ができたので、表題の目的は
達成することができました。この過程で、大変わかりやすくご解説
いただけたおかげで、本当に勉強になりました。

ログは大切に保存しておくことにします。本当にありがとうございました。

お礼日時:2006/01/07 02:13

> 'mysql' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。



mysql.exeのあるディレクトリのパスが通っていないからこうなります。
パスを通せばカレントディレクトリがどこであっても実行できるようになります。

パスが通っていないならmysql.exeのあるディレクトリにカレントディレクトリを移動してからなら動かせます。

>これがなぜかできません・・C:\ってことは、mysql.exeでなく、
>cmd.exeですよね?

いいえ。
cmd.exeはあくまでコマンドプロンプトを出すだけ。
mysql は mysql.exe のことです。(.exeや.com、.bat等の実行形式のものの拡張子は省略できます)
C:\上で実行できるのは前述の「パスを通しているため」です。


> ユーザー名、パスワードを設定した覚えはないのですが、そもそも、データベースmysqlに私のユーザー名、パスワードはなんと保存されているのか知るすべはありますでしょうか?

新規にインストールしたての場合はroot以外にユーザーは登録されていません。
また、rootのパスワードは未設定です。

userテーブルを見ても、登録されているユーザー名は分かりますがパスワードはプレーンテキスト(パスワードの文字列そのまま)ではないので分かりません。

ちなみにphpMyAdminでユーザーの管理ができます。
テーブルを直接操作するのではなく、分かりやすく操作できます。
phpMyAdmin 2.7.0の場合は、トップページの「特権」というリンクから行けます。
(2.7.0以外でもほとんど同じです)

但し、ユーザーの登録や削除等の操作は管理者権限でないとできません。
そのためmysqlという名前のデータベースにもアクセスできるのはデフォルトでは管理者権限のみです。
そしてその管理者権限はrootという名前のユーザーというわけです。
もちろん、root以外にも管理者権限のユーザーを登録したり、rootと言う名前を別の名前に変えることもできます。
通常、管理者権限のアカウントは管理用にのみ使用し、実際にプログラムがMySQLサーバーに接続しに行く時には使用しません。
(セキュリティ上大問題ですので)
また、新規にインストールしたての場合はrootにパスワードが指定されていないのでパスワードを登録する必要もあります。
    • good
    • 0
この回答へのお礼

Etherskyさん、本当にありがとうございました。
結論からいいますとおかげさまで長年の(?)謎が解けました。

今後は、おかげさまで4.1.xもいけそうです。
# 少なくとも4.0.16では、-rootなどの儀式は不要で、
# musql.exeを起動するだけでshow database; が利いたのです。

> mysql.exeのあるディレクトリのパスが通っていないからこうなります。

cmd.exeで「'mysql' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
といわれた時点でそのように考えるべきだったのですね。
Namazuなどはインストーラが自動でPathを通して
くれるので、てっきりMySQL4.0.26も通してくれてもらえていると
思ってましたが、環境変数にPathを設定することで解決しました。

> C:\上で実行できるのは前述の「パスを通しているため」です。

これも実によくわかりました。
おかげさまで今までなんとなくセットアップマニュアルに
書いてあったことを実行するだけに過ぎなかったPathを通す作業の
意義までわかってしまいました。

> ちなみにphpMyAdminでユーザーの管理ができます。
> テーブルを直接操作するのではなく、分かりやすく操作できます。

おお!そうなのですか。

> phpMyAdmin 2.7.0の場合は、トップページの「特権」というリンクから行けます。

当方が使っているのはphpMyAdmin 2.6.3-pl1 ですが
確かに特権リンクをみつけました。

> (セキュリティ上大問題ですので)

これは、強く心に留めておきます。
所詮は社内LANなどで身辺データ整理に利用する程度なので
(いずれはlolipopなどでも遊んでみたいとは思っていますが)

> また、新規にインストールしたての場合はrootにパスワードが指定されていないので

確かに、セットアップして一回目の起動の際に、管理者のID/Passを
尋ねられました。これはmy.iniの話ですよね?

以上、もし追加コメント等いただける場合は追伸いただければ幸いですが、
今晩にでも締め切るようにいたします。本当にありがとうございました。

お礼日時:2006/01/06 12:59

> 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)

この回答への補足

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に私のユーザー名、パスワードは
なんと保存されているのか知るすべはありますでしょうか?

補足日時:2006/01/06 00:30
    • good
    • 0
この回答へのお礼

> ユーザー名、パスワードを設定した覚えはないのですが、
> そもそも、データベースmysqlに私のユーザー名、パスワードは
> なんと保存されているのか知るすべはありますでしょうか?

すみません、phpMyAdminからデータベース=mysqlの userテーブルを
のぞいてみたら、次のようになってました。
(横に長いので行と列を入れ替えて縦長にして掲示します。)

やっぱりroot+passなしというユーザーしかいないのですよね?
だとしたら、ご教示のようにDOS窓で
C:\>mysql -uroot -pとやればいいように思うのですが。


Hostlocalhostlocalhost
Userroot
Password
Select_privYN
Insert_privYN
Update_privYN
Delete_privYN
Create_privYN
Drop_privYN
Reload_privYN
Shutdown_privYN
Process_privYN
File_privYN
Grant_privYN
References_privYN
Index_privYN
Alter_privYN
Show_db_privYN
Super_privYN
Create_tmp_table_privYN
Lock_tables_privYN
Execute_privYN
Repl_slave_privYN
Repl_client_privYN
ssl_type
ssl_cipher[BLOB - 0 バイト][BLOB - 0 バイト]
x509_issuer[BLOB - 0 バイト][BLOB - 0 バイト]
x509_subject[BLOB - 0 バイト][BLOB - 0 バイト]
max_questions00
max_updates00
max_connections00

お礼日時:2006/01/06 00:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!