ラベル MySQL の投稿を表示しています。 すべての投稿を表示
ラベル MySQL の投稿を表示しています。 すべての投稿を表示

2009年2月20日金曜日

MacPortsでMySQLとApache

そう言えば、MacPortsで入れたMySQLとApacheを自動起動する様に設定するのを忘れていた。

MacPorts で Apache をインストール

を参考にさせて頂き、自動起動を設定した。

% launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
% launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

これでMySQLとApacheの自動起動が設定できた。かつ、サーバ起動もこの時点で完了。

簡単だ。

2009年1月30日金曜日

MacPortsでMySQLとPostgreSQL

とりあえず、普通にMacOS X向けインストーラでインストールしてあったPostgreSQL 8.3をアンインストールし、更にMySQL5もアンインストール。ただ、こちらは手動であれこれやる必要有り。

  1. アプリケーションの"MySQL Tools"はそのままゴミ箱へ
  2. システム環境設定に残っているMySQLサーバの起動設定は/System/Library/PreferencePanes/配下のMySQL.prefPane(だったかな?うろ覚え)ディレクトリをrm -rfして削除
  3. MySQLの実体は/usr/local/以下にあるのでこれもディレクトリを丸ごとrm -rfして削除

こんな感じでとりあえずMySQLは片付いた。

PostgreSQLは/Library/PostgreSQL/8.3/配下にアンインストーラのアプリケーションがあったのでそれを実行。データベースファイルとpostgresユーザだけは消しませんよ、という警告メッセージと共にアンインストーラ終了。データベースファイルは/Library/PostgreSQL/8.3/dataディレクトリ配下にあるので、これはrootにsu -してrm -rfで削除。ユーザ云々に関しては/etc/passwdを見るが、どうやらこれはシステムでは参照していない模様。

さて、先ほどMacPortsからPHP5を入れようとした際の残骸が問題を起こすので、一旦mysql5関連のportsの残骸を削除。

% port clean mysql5

ちなみに、さすがに/opt/local/binにパスを通しました。rootユーザの場合~/.bash_profileは読まれない模様。代わりに.profileは読んでくれますね。

さて、この上でmysql5をインストール。

% port install mysql5 +server

今度は無事入りました。MySQL5をデーモンとして起動するスクリプトは"/opt/local/share/mysql5/mysql/mysql.server"ですので、これに"start"引数を渡して起動してみる事に。しかし、、、

% /opt/local/share/mysql5/mysql/mysql.server start
Starting MySQL
... ERROR! Manager of pid-file quit without updating file.

というわけでエラーが。ネット上の情報などを調べてみて、この辺を参考にさせて頂きMySQLを初期化する。すると、、、

% mysql_install_db5 --user=mysql
Installing MySQL system tables...
090130 1:37:12 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090130 1:37:12 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090130 1:37:12 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive
OK
Filling help tables...
090130 1:37:12 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090130 1:37:12 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090130 1:37:12 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive
OK
...
(以下、沢山の参考情報が表示されるが初期化とは無関係)
...

といった感じで初期化は無事終了。再度MySQLのデーモンを起動する。

% /opt/local/share/mysql5/mysql/mysql.server start
Starting MySQL
. SUCCESS!

今度は無事成功!なお、コマンドインタプリタがmysqlじゃなくてmysql5なので注意。異なるバージョンのMySQLを共存できる用にする為の配慮かな?

さて、次はPostgreSQLへ。

% port install postgresql83 +perl

普段PerlでもDBI/DBDでデータベースアクセスするので、一応Perlサポートも入れておく。何やら、依存関係でlibxml、libxsltそしてuuidなるパッケージも同時にインストールしているっぽい。ここで、この辺を見てびっくり。パッケージ"postgresql83"はクライアントだけだそうだ。どうりでインストール後の/opt/local/share以下を漁ってもpostmasterが無いわけだ。じゃあ、ということで早速サーバもインストールする。

% port install postgresql83-server

今度はクライアントの10倍くらいのスピードでインストール完了。共通しているソースがビルド済だったとかかしらん?MacOS起動時に自動でPostgreSQLを起動したいなら以下のコマンドを実行しろ、とご丁寧にインストーラがメッセージを吐いています。

% sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist

今回はとりあえずスキップして、更にインストーラのメッセージにあるデフォルトDBの作成を行います。


% mkdir -p /opt/local/var/db/postgresql83/defaultdb
% chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb
% su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'

ここまでつつがなく完了。上記の3つのコマンドのうち最後のひとつが更なるメッセージを表示。

% /opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb

これでpostmaster (PostgreSQLのデーモンプロセス)が起動するらしい。早速やってみる。

% /opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise. See the documentation for
more information on how to properly start the server.

rootで起動しようとしたら怒られた・・・orz
じゃあ、って言うんでpostgresユーザで起動してみる。

% su postgres -c "/opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb"
LOG: database system was shut down at 2009-01-30 02:20:36 JST
LOG: autovacuum launcher started
LOG: database system is ready to accept connections

とここで止まる。シェルプロンプトが返ってこないので、フォアグラウンドでプロセスが起動しているみたいだ。早速別のターミナルを上げてコマンドインタプリタを実行してみる。ちなみに、コマンドインタプリタはMySQLの時と同様にバージョン番号がくっついているので注意。コマンドはpsqlじゃなくてpsql83です。

% psql83 -U postgres -l
List of databases
Name | Owner | Encoding
-----------+----------+-----------
postgres | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(3 rows)

うまく行きました!

さて、この後PHP5をいよいよ入れるわけですが、一息入れましょう。。。

2009年1月29日木曜日

MacPortsでPHP5

JavaFlavor Blogさんの「MacPortsでApache2+PHP5」を参考にさせて頂き、MacPortsからPHP5を入れることにする。

既にMacPortsは導入済みなので、早速以下のコマンドラインを試してみることに。

% /opt/local/bin/port variants php5

すると、上記のblogエントリにあるよりももっと多くのオプションが利用可能に。。。凄い、凄いよMacPorts!

というわけで、現在MySQL5を使っていて、今後はPostgreSQL 8.3を使いたい(というか既にインストール済)な私は、以下のコマンドラインでインストールにトライ。

% /opt/local/bin/port -v install php5 +apache2 +mysql5 +postgresql83

しかし残念ながらエラーで止まる。エラーメッセージはこんな感じ。

Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_databases_mysql5/work/mysql-5.0.67" && make all " returned error 2

もしかして、MySQLはMacPorts経由じゃなく入れているからだろうか。

ApacheはMacOS Xのデフォルトでインストールされているのでそちらを使うとして、MySQLとPostgreSQLはMacPorts経由で入れ直した方が良いかしら。

2009年1月28日水曜日

MacOS XのPHP

いわゆるLAMP (Linux, Apache, MySQL, and PHP) ならぬMAMP (MacOS X, Apache, MySQL, and PHP) な環境でソフト開発をしていたんですが、今度はMySQLの代わりにPostgreSQLを使うことになり、早速MacOS X用のインストーラを落としてきて入れました。

ところが、何とMacOS XデフォルトのPHP5はPostgreSQLに対応していません。phpinfo()で見ると、ビルド時のconfigureオプションでPostgreSQLを有効にしていないのです。

何たる割り切り・・・orz

というわけで、何とかしてMySQLもPostgreSQLも使えるPHP5を導入しなければいけなくなりました。MA(M|P)Pって感じです。(←分かり辛っ)

2008年7月30日水曜日

日本語化

MySQL 5 (正確にはバージョン5.1) のリファレンスマニュアルが日本語化されている事に気付いた。

ここ1年半ほどMySQLとPHPでの開発をしていたが、日本語のリファレンスマニュアルはバージョン4までしか無かったので、バージョン4と5の差分は英語のリファレンスマニュアルを読んでしのいでいたが、ここに来て日本語版が出てくれたことは非常に助かる。

MySQL 4には、RDBMSとしてはちょっと信じがたいのだが、viewが無かったりするのだ。MySQLを使って行くには、やはりバージョン5を使いこなす事が必要に思う。

エンジニアにも英語力は必要だと思うし、自分も仕事で英語の読み書きは毎日の様に行っているけれど、やはり母国語での処理能力に比べると格段に劣ってしまう。

マニュアルの翻訳という地道な作業でオープンソースソフトウェアの普及に貢献されている方々に感謝したい。

2007年1月2日火曜日

PHPからMySQLへの接続で問題発生

Mac OS X Server 10.4: PHP から MySQL への接続時に生じる問題

MacOS X (Serverぢゃなくて普通のクライアント版)にはデフォルトでApacheが仕込まれており、更にご丁寧な事にPHP 4.0のモジュールまで導入済みだ。設定ファイルをちょっといじってApacheを再起動すればすぐにPHPが利用可能となる。

更に、MySQLは簡単に導入可能であったりして、もはやLAMP (Linux Apache MySQL PHP)の開発専用コンピュータなのではないかと思ってしまうくらい、MacOS XはLAMP Readyだ(笑)。

そして、ちょっとPHPを使ってみたらMySQLへの接続でエラーが出てしまったが、冒頭の様にAppleのサイトには既にFAQ(?)らしく、ちゃんと情報が載っている。

素晴らしい!やっぱMacOS Xは開発者の為にもベストチョイスだ。涙出そうだ・・・(大げさ)