MySQLに勝てそうな日
今日は〜
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〜
とりあえず、今日のブログはここまで^^
あ、忘れずにスナップショット激写。