パスワードを忘れた? アカウント作成
528881 journal

novaの日記: MySQL のインストールと接続設定

日記 by nova

 ちょっと DataBase が必要になったので、MySQL をインストールするコトにしました。 どーせなら最新版を入れたいので、MySQL 5.0.21 を get。 MySQLインストール完全ガイド (@IT) を参考にインストールしました。 このページで扱ってる MySQL は Ver3 系列ですが、大して変わりません。 スクリプトの名前がビミョーに違うくらいです。起動スクリプト名が "safe_mysqld" だったりとか (Ver5 系列では "mysqld_safe" です)。

 インストールが終ったので、テキトーな db 作って接続テストします。 取り合えず、"dummy" って db を作ってみます。

# mysqladmin create dummy

コレで終了。確認してみます。

# mysqlshow
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| dummy              |
| mysql              |
| test               |
+--------------------+

ちゃんと出来てますね。今後は windows PC からこの db を弄るので、CSE Ver1.59 から接続してみます。 ……エラーが出ました。

ERROR 1130: Host 'nova' is not allowed to connect to this MySQL server

nova は windows PC のホスト名です。接続が許可されていないのか。調べてみると、user と host を対で登録しないとダメなのね。 外には絶対出させないシステムなので、どのホストからでも接続出来るユーザを作ります。

# mysql

ってコマンドを起動すると、以下のようなメッセージが出て、SQL コマンドを受け付ける CUI が起動します。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 5.0.21-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

んで、どのホストからでも接続を許す user1 (passwd: decoy) ってアカウントを作ります。

mysql> GRANT ALL PRIVILEGES ON *.* TO user1@"%"
    -> IDENTIFIED BY 'decoy' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO user1@localhost
    -> IDENTIFIED BY 'decoy' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

この user1 アカウントは、権限が "ALL PRIVILEGES" の上、GRANT 実行権も持ってるので root と同等です。 当面は私しか使わないからコレで良いけど、運用する時は、SELECT, INSERT, UPDATE, DELETE のみ実行出来るように降格しとこう。 この権限で接続されたら、何でも出来ちゃうし。

 再び CSE から接続してみると……違うエラーが出た。

ERROR 1251: Client does not support authentication protocol requested by server;consider upgrading MySQL client

また、調べてみると……ナルホド。MySQL 4.1 から認証プロトコルが違ってるのね。 インストールしたのは 5.0.21 だから、CSE Ver1.59 ではムリと。つっても、CSE は Ver1.59 が最新なので、サーバの方で対処するしか無い。 皆、CSE 使うだろうし。…………やっぱサーバに登録されてるパスワードを古い形式で登録し直すか。 たぶん OLD_PASSWORD って関数使えばイケる……ハズ。mysql 起動して、以下のコマンドを実行。

mysql> SET PASSWORD FOR user1@"%" = OLD_PASSWORD('decoy');
mysql> SET PASSWORD FOR user1@localhost = OLD_PASSWORD('decoy');

 再び CSE から接続…… OK。接続出来ました。

 接続出来たので、テーブル作って書き込みのテストなんぞやってみたんですが……書き込めない。 テーブルが無いって言われる。何でかな~って思ってよくよく書き込みスクリプト見てみると……大文字小文字って関係有るのかな。 スクリプト側では書き込むテーブル名が大文字になってるけど、作成したテーブルは小文字だ。スクリプトの方を小文字にしてみると……書き込めた。 でもカラム名はどっちでもいいみたい。コレも、スクリプト側は大文字で、実際に登録されてる方は小文字なんだが。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

読み込み中...