Mac OS X に MacPorts で MySQL をインストールする

これまで XAMPP で MySQL を使えるようにしていたが、開発用に MacPortsMySQL をインストールする。

MySQL をインストールする

% sudo port install mysql5-server
--->  Computing dependencies for mysql5-server
--->  Fetching mysql5-server
--->  Verifying checksum(s) for mysql5-server
--->  Extracting mysql5-server
--->  Configuring mysql5-server
--->  Building mysql5-server
--->  Staging mysql5-server into destroot
--->  Creating launchd control script
--->  Activating mysql5-server @5.1.45_0
--->  Cleaning mysql5-server

これでインストールは完了する

データベースを初期化する

新規で MySQL をインストールしたのならば、まずはデータベースを作成する。
MacPorts でインストールをした際に下記のメッセージが表示されているので実行する。

--->  Installing mysql5-server @5.1.45_0
******************************************************
* In order to setup the database, you might want to run
* sudo -u _mysql mysql_install_db5
* if this is a new install
******************************************************

この内容の意味は、sudo コマンドを利用して (root や自分の権限ではなく) mysql ユーザーとして MySQL のデータベースを初期化するという内容になる。
上記のコマンドを実行する。

% sudo -u _mysql mysql_install_db5
Installing MySQL system tables...
OK
Filling help tables...
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 MacBookPro.local password 'new-password'

Alternatively you can run:
/opt/local/lib/mysql5/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

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 /opt/local/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /opt/local/lib/mysql5/bin/mysqlbug script!

実行後に表示されるメッセージには、

  1. Mac OS X 起動時に MySQL を起動させるための注意
  2. MySQL に接続するためのコマンド
  3. より安全な MySQL のデータベースをインストールする方法
    (おそらく MySQL に接続するためのパスワードが入力済みなのだと思う)
  4. コマンドから MySQL を起動する方法

などが表示される。

MySQL を起動する

インストール時に表示される起動方法ではなく、次のコマンドで起動させる。

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

インストール時に表示される起動方法でもいいが、「&」を追加してバックグラウンドで動くようにした方がいい。

% sudo /opt/local/lib/mysql5/bin/mysqld_safe &
[2] 310
% 100323 20:31:56 mysqld_safe Logging to '/opt/local/var/db/mysql5/MacBookPro.local.err'.
100323 20:31:56 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
100323 20:32:22 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/MacBookPro.local.pid ended
[2]  + done       sudo /opt/local/lib/mysql5/bin/mysqld_safe

起動を確認する。

% ps aux | grep mysql | grep -v grep                     
root       160  98.7  0.0  2436184   1668 s001  RN    8:07PM  29:39.18 sudo /opt/local/share/mysql5/mysql/mysql.server start
root       510   0.0  0.0  2435464    852 s002  S+    8:37PM   0:00.03 /bin/sh /opt/local/lib/mysql5/bin/mysqld_safe
_mysql     553   0.0  0.5  2510852  18996 s002  S+    8:37PM   0:00.05 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql5 --user=_mysql --log-error=/opt/local/var/db/mysql5/MacBookPro.local.err --pid-file=/opt/local/var/db/mysql5/MacBookPro.local.pid

MySQL を停止する場合

停止する場合は下記のコマンドを実行する。

% sudo /opt/local/share/mysql5/mysql/mysql.server stop
Shutting down MySQL
... SUCCESS! 

MySQL に接続できるユーザーの権限を設定する

MySQL インストール直後は、ユーザー名やパスワードがなくても接続できる状態のため、名無しのユーザーの接続を拒否し、パスワードを入力して接続するように変更する。

% /opt/local/bin/mysql5 -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE `MySQL`;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

mysql> SELECT `User`, `Host`, `Password` FROM `USER`;
+------+------------------+----------+
| User | Host             | Password |
+------+------------------+----------+
| root | localhost        |          |
| root | MacBookPro.local |          |
| root | 127.0.0.1        |          |
|      | localhost        |          |
|      | MacBookPro.local |          |
+------+------------------+----------+
5 rows in set (0.00 sec)

mysql> 

root ユーザーのパスワードを登録する。

mysql> SET PASSWORD FOR 'root'@'localhost' = password('yourpassword');
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'MacBookPro.local' = password('yourpassword');
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = password('yourpassword');
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT `User`, `Host`, `Password` FROM `USER`;
+------+------------------+-------------------------------------------+
| User | Host             | Password                                  |
+------+------------------+-------------------------------------------+
| root | localhost        | *0480E553996615211F49D24A263ACACD723FB599 |
| root | MacBookPro.local | *0480E553996615211F49D24A263ACACD723FB599 |
| root | 127.0.0.1        | *0480E553996615211F49D24A263ACACD723FB599 |
|      | localhost        |                                           |
|      | MacBookPro.local |                                           |
+------+------------------+-------------------------------------------+
5 rows in set (0.00 sec)

mysql>

次に、名無しのユーザーを削除する。

mysql> DELETE FROM `User` WHERE `User` = '';
Query OK, 2 rows affected (0.00 sec)

mysql> SELECT `User`, `Host`, `Password` FROM `USER`;
+------+------------------+-------------------------------------------+
| User | Host             | Password                                  |
+------+------------------+-------------------------------------------+
| root | localhost        | *0480E553996615211F49D24A263ACACD723FB599 |
| root | MacBookPro.local | *0480E553996615211F49D24A263ACACD723FB599 |
| root | 127.0.0.1        | *0480E553996615211F49D24A263ACACD723FB599 |
+------+------------------+-------------------------------------------+
3 rows in set (0.00 sec)

mysql>

これで、一番最初の初期設定は完了。

MySQL をデーモンとして登録する

これもインストール時に表示されるメッセージ通りにコマンドを実行する。

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

デーモンの対象から外したい場合は、

% sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist

と実行する。