MySQLに勝てそうな日

今日は〜

  1. Eclipseの同期化設定・MySQLのユーザー設定
  2. Flash<->PHP間のHTTP通信の確認です

Eclipseの同期化設定

ソースをいじって、マウスでSCPやFTPでファイルをUPする〜という作業は手間なので、
Eclipseから任意のタイミングでアップロードする機能をつけます。
EclipseのデフォルトではFTPでアップ・ダウンロードできないみたいなので、プラグインをインストールしなければ。


Eclipse -> ヘルプ -> 新規ソフトウェアのインストール でインストールダイアログが出ます。
作業対象の右側「追加」クリック → ロケーションに次のURLを入力 http://eclipse.jcraft.com/ → 「OK」クリック
EclipseFTPおよびWebDAV のチェックボックスにチェックして、次へ。あとはダイアログの指示通りに進めればめでたくFTPができるようになります。
ちなみに、途中、謎の証明書を承認しなければなりません。


これでプラグインのインストールは完了
次は設定〜
Eclipseのプロジェクトを右クリック→エクスポート→FTP→UPしたいフォルダを指定→新規サイト作成→
サイト接続設定 FTP鯖のURL、ユーザー、パスワード入力→同期するディレクトリを選択→FTP鯖のディレクトリ内容を変更


これで、設定完了。
FTPでUPしたいときは、


ウィンドウ→パースペクティブを開く→チーム同期化で同期化タグが出るので、
同期化アイコンクリック→FTP→さっき設定したリソース選択→完了


そうすると、大量にアイコンが出てきます。その中に発信モード(受信/発信じゃない)のアイコンをクリック
その後、ソースをいじって保存すると、変更されたファイルの一覧が出てきます。


変更されたソースがあることを確認して 右クリ→アップロード or UPload Our going changesアイコン でアップロード完了〜


これで、手もとのソースと鯖のソースの同期ができるっと。

MySQLと格闘

さて、問題のMySQLだ。どうしたものかなー ログインできない。
ライブラリとか、関連ファイルが旧バージョンのままでエラーおこしてるのかな。
とりあえず、アンインストール

rpm -e MySQL-server-5.1.37-0.glibc23.i386


で、yum でインストールできるか試す。前回のバージョンより古いので、アンインストールできてるかわかる。

yum install mysql
file /usr/bin/mysql from install of mysql-5.0.45-7.el5.i386 conflicts with file from package MySQL-client-5.0.83-0.i386

失敗。なるほど、ファイルのバージョンなのねん。


で、旧バージョンを入れる。

rpm -ivh MySQL-server-5.0.85-0.i386.rpm

インストールは完了したが、起動時エラー

Starting MySQL.d ERROR! Manager of pid-file quit without updating file.

あ、my.cnfそのままだったね。

rm my.cnf


my.cnf消して、アンインストール→再インストール

rpm -e MySQL-server-5.0.85-0.i386.rpm
rpm -ivh MySQL-server-5.0.85-0.i386.rpm
Starting MySQL. SUCCESS!

おk、立ち上がった。
次に、DB初期化・ログイン

mysql_install_db
mysql -u root -p
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

…なん…だとw
わかった。最終手段だ。DBを消してしまおう。MySQLは自身のDBでユーザー管理しているので、消してしまえば、インストール時に検知して適切な設定でインストールされるはず。

rpm -e MySQL-server-5.0.85-0.i386.rpm
find / -name mysql
1 /usr/include/mysql
2 /usr/bin/mysql
3 /home/operator01/mysql-5.1.37-linux-i686-glibc23/data/mysql
4 /home/operator01/mysql-5.1.37-linux-i686-glibc23/bin/mysql
5 /var/lib/mysql
6 /var/lib/mysql/mysql

上記はわかりやすく番号を付けてみました。この中で、1・2・5・6をrm。
そして、改めてインストール

rpm -ivh MySQL-server-5.0.85-0.i386.rpm
Starting MySQL. SUCCESS!


エス

mysqladmin -u root password '(パスワード)'

エラーなし。イエス


ここで残念な結果が。。。上記のmysqlファイル総削除で、/bin/mysql消去・・・
はい。Mysqlにアクセスできず。。コマンドがない状態に。
なんだ、この運命的なミス。


考え中・・・考え中・・・
んーVM上だけど、スナップショットとるの忘れてるし、スナップショット適用してもかなり前のバージョンに。。。
スナップショット大切です。


復旧か・・・これはハードル高い。。。いろいろ調査した結果。強制インストール。超KIAI。
こうすれば、/bin/mysqlは生成されるはず。
やってみた。

$rpm -ivh --force MySQL-server-5.0.85-0.i386.rpm
(ログ)
A MySQL server package (MySQL-server-5.1.37-0.glibc23) is installed.
(ログ)
エラー: %pre(MySQL-server-5.0.85-0.i386) スクリプトの実行に失敗しました。終了ステータス 1

なるほど、すでにアップグレード版いれてしまった為はじかれた。
と、なると。

 rpm -ivh --force MySQL-server-5.1.37-0.glibc23.i386.rpm
 (ログ)
 Starting MySQL. SUCCESS!

よし、/bin/mysql復活。ログインしてみる。

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

…ソケットが見つからない?
そういえば、Unixって全てファイルで管理してるんだっけ。
ソケットもファイルで管理してるんだ?へーx20
で、どうしよう。
調査中…

# netstat -tanp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2303/mysqld

mysqldプロセスは上がってる。。
mysql.sockが違うところにあるのかな?findコマンドで調べてみる。

# find / -name mysql.sock
/var/lib/mysql/mysql.sock


あった。調べてみると、/tmp/mysql.sock にシンボリックリンクを張るとできるとのこと。

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

で、find。

# find / -name mysql.sock
/tmp/mysql.sock
/var/lib/mysql/mysql.sock

再びアクセスしてみる。

mysql -u root -p
mysql>


きたああああああ。ちゃんとスキーマ見れるぜ。超KIAI。
よし、最低限のユーザーを設定しないと。…ん、バテたのでちょっと後で。


(QK中)

HTTP通信確認

次はHTTP通信確認だー


とりあえず、先に出したphpinfo()をtraceしてみる。

package  
{
	import flash.events.Event;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import org.flashdevelop.utils.FlashConnect;
	public class TestHTTP{
		public function TestHTTP() {
			var request:URLRequest = new URLRequest ( "http://(ホスト名)" );
			var loader:URLLoader = new URLLoader (request);  
			loader.addEventListener(Event.COMPLETE, onHTTPLoad);
			loader.load(request);
			
		}
		protected function onHTTPLoad(evt:Event):void {
			FlashConnect.trace(evt.target.data);
		}
		
	}
	
}


おお、見事にphpinfoのHTMLが出てきた。
outputがめっちゃ流れたけど、とりあえず、おk
追記:FlashDevelop上のoutput枠に出力するためには、traceだけではできません。
FlashConnectクラスのtraceメソッドを発行する必要があります。
出力するだけのlogクラスとか作ればいいかな。FlashDevelop上で動くデバッガが欲しい。。。

再びMySQL ユーザー設定


さて、さっきのMySQLのユーザーの設定

create user (HIROBAのユーザー) identified by '(HIROBAのパスワード)';

はい。ユーザー追加

grant all privileges on *.* to (HIROBAのユーザー)@鯖IP identified by '(HIROBAのパスワード)';

はい、権限譲渡。全部渡してしまったけど、細かい権限は調べないと。


で、先ほど設定したユーザーでログインして、

mysql> create database (スキーマ名);
Query OK, 1 row affected (0.00 sec)


はい。作れた。

mysql> use (スキーマ名);

スキーマ選択おk。

mysql> create table testTable(id int(8) AUTO_INCREMENT NOT NULL,name varchar(255),PRIMARY KEY(id) );

テスト的なテーブル作成おk。

テーブル構成確認して、挿入、選択してみる

mysql> desc testTable;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(8)       | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> insert into testTable(id,name) values(1,'testName');
Query OK, 1 row affected (0.00 sec)

mysql> select * from testTable;
+----+----------+
| id | name     |
+----+----------+
|  1 | testName |
+----+----------+
1 row in set (0.00 sec)

mysql> update testTable set name='testHoge' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from testTable;
+----+----------+
| id | name     |
+----+----------+
|  1 | testHoge |
+----+----------+
1 row in set (0.00 sec)

OK〜
とりあえず、選択・更新SQLまでは確認OK〜



とりあえず、今日のブログはここまで^^
あ、忘れずにスナップショット激写。