Mac OS X 開発環境構築手順:DB実行環境(MySQL)インストール


こちらのエントリを参考にしつつ、導入〜設定〜接続確認まで進めてみました。

まずはどんなのがあるか確認。

$ brew search mysql
mysql			
mysql++			
mysql-cluster		
mysql-connector-c	
mysql-connector-c++	
mysql-connector-odbc	mysql-proxy		
mysqlreport
homebrew/versions/mysql51


インストール。brewで一発。

$ brew install mysql
==> Installing mysql dependency: cmake
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/cmake-2.8.9.lion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring cmake-2.8.9.lion.bottle.tar.gz
/usr/local/Cellar/cmake/2.8.9: 662 files, 32M
==> Installing mysql dependency: pidof
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/pidof-0.1.4.lion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring pidof-0.1.4.lion.bottle.tar.gz
/usr/local/Cellar/pidof/0.1.4: 3 files, 24K
==> Installing mysql
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.5.27.lion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring mysql-5.5.27.lion.bottle.tar.gz
==> Caveats
Set up databases to run AS YOUR USER ACCOUNT with:
    unset TMPDIR
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

#------------------------------------------------
# (超適当訳)
# 基本的なテーブルを別のフォルダにセットアップする際、
# 又はmysqldを異なるユーザで利用したい場合は
# 以下のコマンドでヘルプを参照してね
#------------------------------------------------
To set up base tables in another folder, or use a different user to run
mysqld, view the help for mysqld_install_db:
    mysql_install_db --help

#------------------------------------------------
# (超適当訳)
# あと、MySQLのドキュメントは以下を参照。
#------------------------------------------------
and view the MySQL documentation:
  * http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html
  * http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html

#------------------------------------------------
# (超適当訳)
# "mysql"ユーザーとしてインスタンスを立ち上げる場合、sudoが必要。
#------------------------------------------------
To run as, for instance, user "mysql", you may need to `sudo`:
    sudo mysql_install_db ...options...

#------------------------------------------------
# (超適当訳)
# mysqldの手動起動コマンドは以下の通り。
#   (※注:もし失敗する場合は、上述した2つの手順を忘れているのかも)
#------------------------------------------------
Start mysqld manually with:
    mysql.server start

    Note: if this fails, you probably forgot to run the first two steps up above

#------------------------------------------------
# (超適当訳)
# /etc/my.cnf"ファイルを別途インストールするとhomebrew絡みで影響出る?
#------------------------------------------------
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

#------------------------------------------------
# (超適当訳)
# 接続の際は以下。
#------------------------------------------------
To connect:
    mysql -uroot

#------------------------------------------------
# (超適当訳)
# 初回起動の際は以下。
# *初回インストールの場合
# *アップグレード、又は既に関連ファイルがロードされていた場合
# 正しい"UserName"で編集の必要があるかもしれない。
#------------------------------------------------
To launch on startup:
* if this is your first install:
    mkdir -p ~/Library/LaunchAgents
    cp /usr/local/Cellar/mysql/5.5.27/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

* if this is an upgrade and you already have the homebrew.mxcl.mysql.plist loaded:
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    cp /usr/local/Cellar/mysql/5.5.27/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

You may also need to edit the plist to use the correct "UserName".

==> Summary
/usr/local/Cellar/mysql/5.5.27: 6385 files, 222M
$ 


インストール時のログに従ってコマンドを実行してみる。実行したのは以下の2つ。ログの内容をそのままコピペして実行。

$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

実行結果。

$ unset TMPDIR
$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Installing MySQL system tables...
OK
Filling help tables...
OK

#------------------------------------------------
# (超適当訳)
# mysql起動の際に気をつける事?
# 以下のファイルをコピー取っておいて云々?
#------------------------------------------------
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

#------------------------------------------------
# (超適当訳)
# 以下のコマンドを用いて、rootユーザのパスワード設定を行なっておく事!
#------------------------------------------------
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/Cellar/mysql/5.5.27/bin/mysqladmin -u root password 'new-password'
/usr/local/Cellar/mysql/5.5.27/bin/mysqladmin -u root -h shinyaa31-no-MacBook-Air.local password 'new-password'

#------------------------------------------------
# (超適当訳)
# もしくは以下のコマンドで実行。
#------------------------------------------------
Alternatively you can run:
/usr/local/Cellar/mysql/5.5.27/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 /usr/local/Cellar/mysql/5.5.27 ; /usr/local/Cellar/mysql/5.5.27/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/Cellar/mysql/5.5.27/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/Cellar/mysql/5.5.27/scripts/mysqlbug script!

$ 

導入場所と導入バージョンを確認。

$ mysql --version
mysql  Ver 14.14 Distrib 5.5.27, for osx10.7 (i386) using readline 5.1
$ which mysql
/usr/local/bin/mysql
$ 

起動・停止・再起動コマンド。

$ mysql.server start
Starting MySQL
.. SUCCESS! 
$ mysql.server stop
Shutting down MySQL
. SUCCESS! 
$ mysql.server restart
Shutting down MySQL
. SUCCESS! 
Starting MySQL
.. SUCCESS! 

rootユーザのパスワード設定。

$ mysqladmin -u root password 'xxxxxxxxxxxx'
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
$ mysql -u root -p
Enter password: (************)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.27 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> 

my.cnfファイルが導入直後にパス( /etc/my.cnf ) に無かったので所定のパスからコピって配置することに。

$ pwd
/usr/local/Cellar/mysql/5.5.27/support-files
$ ls *.cnf
my-huge.cnf		my-innodb-heavy-4G.cnf	my-large.cnf		my-medium.cnf		my-small.cnf
$ 

ファイルの種類が幾つかあるらしい。下記エントリを参考に選択してみる。

普段使いのMBA(Mac OS X)もさくらVPSサーバ(Ubuntu12.04)も確認してみた所メモリは4GB。とは言えフルで4GB使い切る訳にも行かないだろうということで1〜2GBのもの(huge)を利用する事にしてみる。

$ pwd
/usr/local/Cellar/mysql/5.5.27/support-files
$ sudo cp my-huge.cnf /etc/my.cnf
$ sudo vi /etc/my.cnf
---------------------------
[mysqld]
character-set-server  = utf8
[mysqldump]
character-set-server  = utf8
[mysql]
default-character-set = utf8


公式マニュアルを元に勉強して行くっす。

データベース作成
mysql> CREATE DATABASE shinyaa31db CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
テーブル作成
mysql> use shinyaa31db;
Database changed
mysql> create table MST_PREF (
    PREF_CODE CHAR(2) unique,
    PREF_NAME VARCHAR(20),
    PREF_CAP  VARCHAR(20),
    POPULATION integer
);
Query OK, 0 rows affected (0.05 sec)
mysql> 
データ投入
vi insert_mst_pref.sql
----------------------
delete from mst_pref;
commit;
insert into MST_PREF values('01','北海道','札幌市',5644504);
insert into MST_PREF values('02','青森県','青森市',1452977);
insert into MST_PREF values('03','岩手県','盛岡市',1396005);
insert into MST_PREF values('04','宮城県','仙台市',2369489);
insert into MST_PREF values('05','秋田県','秋田市',1161298);
insert into MST_PREF values('06','山形県','山形市',1224811);
insert into MST_PREF values('07','福島県','福島市',2106232);
insert into MST_PREF values('08','茨城県','水戸市',2991976);
insert into MST_PREF values('09','栃木県','宇都宮市',2012585);
insert into MST_PREF values('10','群馬県','前橋市',2034368);
insert into MST_PREF values('11','埼玉県','さいたま市',7057365);
insert into MST_PREF values('12','千葉県','千葉市',6042667);
insert into MST_PREF values('13','東京都','東京(新宿区)',12439663);
insert into MST_PREF values('14','神奈川県','横浜市',8726087);
insert into MST_PREF values('15','新潟県','新潟市',2449511);
insert into MST_PREF values('16','富山県','富山市',1116163);
insert into MST_PREF values('17','石川県','金沢市',1177353);
insert into MST_PREF values('18','福井県','福井市',826240);
insert into MST_PREF values('19','山梨県','甲府市',887115);
insert into MST_PREF values('20','長野県','長野市',2212392);
insert into MST_PREF values('21','岐阜県','岐阜市',2115795);
insert into MST_PREF values('22','静岡県','静岡市',3795025);
insert into MST_PREF values('23','愛知県','名古屋市',7187079);
insert into MST_PREF values('24','三重県','津市',1866282);
insert into MST_PREF values('25','滋賀県','大津市',1370803);
insert into MST_PREF values('26','京都府','京都市',2646715);
insert into MST_PREF values('27','大阪府','大阪市',8839055);
insert into MST_PREF values('28','兵庫県','神戸市',5589566);
insert into MST_PREF values('29','奈良県','奈良市',1431358);
insert into MST_PREF values('30','和歌山県','和歌山市',1052849);
insert into MST_PREF values('31','鳥取県','鳥取市',610260);
insert into MST_PREF values('32','島根県','松江市',749833);
insert into MST_PREF values('33','岡山県','岡山市',1950249);
insert into MST_PREF values('34','広島県','広島市',2878475);
insert into MST_PREF values('35','山口県','山口市',1506921);
insert into MST_PREF values('36','徳島県','徳島市',816163);
insert into MST_PREF values('37','香川県','高松市',1019335);
insert into MST_PREF values('38','愛媛県','松山市',1477307);
insert into MST_PREF values('39','高知県','高知市',803838);
insert into MST_PREF values('40','福岡県','福岡市',5056173);
insert into MST_PREF values('41','佐賀県','佐賀市',869922);
insert into MST_PREF values('42','長崎県','長崎市',1494985);
insert into MST_PREF values('43','熊本県','熊本市',1851157);
insert into MST_PREF values('44','大分県','大分市',1214563);
insert into MST_PREF values('45','宮崎県','宮崎市',1160161);
insert into MST_PREF values('46','鹿児島県','鹿児島市',1768095);
insert into MST_PREF values('47','沖縄県','那覇市',1352496);
commit;
mysql> source /xxx/xxx/insert_mst_pref.sql
Query OK, 0 row affected (0.00 sec)
:
Query OK, 1 rows affected (0.00 sec)
mysql> select count(*) from mst_pref;
+----------+
| count(*) |
+----------+
|       47 |
+----------+
1 row in set (0.01 sec)

mysql> select * from mst_pref;
+-----------+--------------+-------------------+------------+
| PREF_CODE | PREF_NAME    | PREF_CAP          | POPULATION |
+-----------+--------------+-------------------+------------+
| 01        | 北海道       | 札幌市            |    5644504 |
| 02        | 青森県       | 青森市            |    1452977 |
| 03        | 岩手県       | 盛岡市            |    1396005 |
| 04        | 宮城県       | 仙台市            |    2369489 |
| 05        | 秋田県       | 秋田市            |    1161298 |
| 06        | 山形県       | 山形市            |    1224811 |
| 07        | 福島県       | 福島市            |    2106232 |
| 08        | 茨城県       | 水戸市            |    2991976 |
| 09        | 栃木県       | 宇都宮市          |    2012585 |
| 10        | 群馬県       | 前橋市            |    2034368 |
| 11        | 埼玉県       | さいたま市        |    7057365 |
| 12        | 千葉県       | 千葉市            |    6042667 |
| 13        | 東京都       | 東京(新宿区)      |   12439663 |
| 14        | 神奈川県     | 横浜市            |    8726087 |
| 15        | 新潟県       | 新潟市            |    2449511 |
| 16        | 富山県       | 富山市            |    1116163 |
| 17        | 石川県       | 金沢市            |    1177353 |
| 18        | 福井県       | 福井市            |     826240 |
| 19        | 山梨県       | 甲府市            |     887115 |
| 20        | 長野県       | 長野市            |    2212392 |
| 21        | 岐阜県       | 岐阜市            |    2115795 |
| 22        | 静岡県       | 静岡市            |    3795025 |
| 23        | 愛知県       | 名古屋市          |    7187079 |
| 24        | 三重県       | 津市              |    1866282 |
| 25        | 滋賀県       | 大津市            |    1370803 |
| 26        | 京都府       | 京都市            |    2646715 |
| 27        | 大阪府       | 大阪市            |    8839055 |
| 28        | 兵庫県       | 神戸市            |    5589566 |
| 29        | 奈良県       | 奈良市            |    1431358 |
| 30        | 和歌山県     | 和歌山市          |    1052849 |
| 31        | 鳥取県       | 鳥取市            |     610260 |
| 32        | 島根県       | 松江市            |     749833 |
| 33        | 岡山県       | 岡山市            |    1950249 |
| 34        | 広島県       | 広島市            |    2878475 |
| 35        | 山口県       | 山口市            |    1506921 |
| 36        | 徳島県       | 徳島市            |     816163 |
| 37        | 香川県       | 高松市            |    1019335 |
| 38        | 愛媛県       | 松山市            |    1477307 |
| 39        | 高知県       | 高知市            |     803838 |
| 40        | 福岡県       | 福岡市            |    5056173 |
| 41        | 佐賀県       | 佐賀市            |     869922 |
| 42        | 長崎県       | 長崎市            |    1494985 |
| 43        | 熊本県       | 熊本市            |    1851157 |
| 44        | 大分県       | 大分市            |    1214563 |
| 45        | 宮崎県       | 宮崎市            |    1160161 |
| 46        | 鹿児島県     | 鹿児島市          |    1768095 |
| 47        | 沖縄県       | 那覇市            |    1352496 |
+-----------+--------------+-------------------+------------+
47 rows in set (0.00 sec)

mysql> 

GUIツールはMySQL公式から提供されている『MySQL Workbench』を使ってみる。2012/10/20時点での最新は5.2.44。