MySQLのセットアップ(MAC編)
MySQL ABのサイトにMac用のインストーラがあるらしいですが、今回はPortsでインストールしてみる。
インストール
まずはPortsからMySQLを探す。
$ port search mysql
gauche-dbd-mysql databases/gauche-dbd-mysql 0.2.1 Gauche database driver for MySQL
mysql3 databases/mysql3 3.23.58 Multithreaded SQL database server
mysql4 databases/mysql4 4.1.22 Multithreaded SQL database server
mysql5 databases/mysql5 5.0.45 Multithreaded SQL database server
mysql5-devel databases/mysql5-devel 5.1.20-beta Multithreaded SQL database server
・・・
こんな感じで沢山ヒットする。
最新バージョンのmysql5をインストールする。
(削除する場合はsudo port uninstall mysql5)
$ sudo port install mysql5 +server
※ この+serverってのは「port variants mysql5」で表示されるserverのこと。(だと思う)
インストール確認
$ ls /opt/local/bin/mysql*
とかでちゃんとインストールされたか確認。
$ ls /opt/local/var/run
$ ls /opt/local/var/db
とかでmysql5ディレクトリが作成されているか確認。
$ ls /Library/LaunchDaemons
でorg.macports.mysql5.plistが存在しているか確認。
自動起動設定
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
アンロードする場合はloadをunloadにする。
$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
launchctlに登録されているplistを確認するには
$ sudo launchctl list
とすれば確認出来る。
初期DB作成
私の環境(Mac OS X 10.4)では既にMySQL用のアカウントとしてmysqlが作成されていたので、それを使って初期DBを作成する。
$ sudo -u mysql mysql_install_db5
password: <- sudoなのでパスワードを聞かれる。
Installing MySQL system tables...
070820 16:33:36 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive
OK
Filling help tables...
070820 16:33:36 [Warning] Setting lower_case_table_names=2 because file system for /opt/local/var/db/mysql5/ is case insensitive
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
/opt/local/lib/mysql5/bin/mysqladmin -u root -h hostname password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /opt/local/lib/mysql5/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
ちゃんと作成されたか/opt/local/var/db/mysql5を確認してみる。
mysqlとtestディレクトリが作成されていた。
MySQLを起動する
$ sudo ls
$ sudo /opt/local/bin/mysqld_safe5 --user=mysql&
で起動する。
1行目のsudo lsは特にlsでなくても構わないが、2行目の起動時にsudoのパスワード入力がバックグラウンドに潜ってしまうのを回避するために一旦sudoを実行している。
psで確認
$ ps -aux | grep mysql
mysql 15463 0.0 -0.1 39692 2732 ?? SNs 4:33PM 0:00.22 /System/Library/Frameworks/ CoreS
root 15502 0.0 -0.0 27808 772 p3 SN 4:40PM 0:00.03 /bin/sh /opt/local/bin/mysqld_sa
mysql 15518 0.0 -0.6 65848 13236 p3 SN 4:40PM 0:00.07 /opt/local/libexec/mysqld --base
socketファイルが作成されているか確認する。
$ ls /opt/local/var/run/mysql5
mysqld.sock
OK。無事作成された。
ソケットファイルが作成されていない場合、起動処理でsudoがパスワードの入力を待っている場合も考えられる。その場合は「fg」で起動したMySQLのジョブをフォアグラウンドにするとパスワード入力プロンプトが表示されているはず。で、ここでパスワードを入力してもちゃんと起動してバックグラウンドになってくれる訳じゃなくてキー入力を受け付けなくなってしまったので、ここは次のようにkillするのが良さそう。
このソケットファイルが作成されていないと次のパスワード設定等でエラーになってしまうので、ソケットファイルが無い場合はMySQLを再起動する。本来MySQLの停止はmysqladmin5を使うが、そもそもソケットファイルが無いとmysqladmin5がMySQLサーバに接続出来ないようで、エラーになってしまう。その場合はpsでMySQLのプロセスを確認してkillする。(launchctl stopとかでも可能なのかも知れないけど試していない)
MySQLを停止する
$ sudo /opt/local/bin/mysqladmin5 shutdown
データベース作成時のメッセージではmysqladminのパスは「 /opt/local/lib/mysql5/bin/mysqladmin」と書かれているが、少なくともMacPosrtsでインストールした場合は「/opt/local/bin/mysql5」となっている。
パスワード設定
MySQLが起動している状態で次のコマンドを叩いてrootのパスワードを設定する。
(このrootと言うのはOSのrootじゃなくてMySQLのrootアカウントだと思われる)
$ sudo /opt/local/bin/mysqladmin5 -u root password "your password"
パスワードを設定するとMySQLを停止させる場合に、単に
$ sudo /opt/local/bin/mysqladmin5 shutdown
とやってもエラーになるので、
$ sudo /opt/local/bin/mysqladmin5 -u root -p shutdown
のようにrootユーザでシャットダウンするようにする。-pを指定するとパスワードを聞かれるので、パスワード設定時に設定したパスワードを入力する。
いちいちパスワードを入力するのは面倒なので、開発用のマシンではrootのパスワードを設定しなくても良さそうな気もするけど、まだ試してない。
ともあれ無事インストールは完了。
参考
最終更新:2007年08月22日 17:34