Mac OSX に MySQL をインストール(再々チャレンジ)

(MySQLのインストールは、その後挑戦したMac OS X YosemiteへHomebrewをインストールであっさり成功しました。お急ぎの場合は新しい記事をごらんください。)

最初からやり直し

$ sudo port install mysql5 +server

成功

$ sudo -u mysql mysql_install_db5

ここで失敗。同じ症状だ。

$ sudo -u mysql mysql_install_db5
 mkdir: /opt/local/var/db/mysql5/mysql: Permission denied
 chmod: /opt/local/var/db/mysql5/mysql: Permission denied
 mkdir: /opt/local/var/db/mysql5/test: Permission denied
 chmod: /opt/local/var/db/mysql5/test: Permission denied
 Installing MySQL system tables...
 120511 16:26:25 [Warning] Can't create test file /opt/local/var/db/mysql5/localhost.lower-test
 120511 16:26:25 [Warning] Can't create test file /opt/local/var/db/mysql5/localhost.lower-test
 /opt/local/libexec/mysqld: Can't change dir to '/opt/local/var/db/mysql5/' (Errcode: 13)
 120511 16:26:25 [ERROR] Aborting

120511 16:26:25 [Note] /opt/local/libexec/mysqld: Shutdown complete

Installation of system tables failed! Examine the logs in
 /opt/local/var/db/mysql5 for more information.

アクセス権限がないから、必要なディレクトリを作れないんだろう。
いいかげん焦れてきたので、MacのGUIから一時的にディレクトリのパーミッションを変更した。

改めてクリーンアップのコマンド

$ sudo -u mysql mysql_install_db5

ディレクトリが作れない問題は解消したようだ。
少し警告文が減った。

$ sudo -u mysql mysql_install_db5
 Installing MySQL system tables...
 ERROR: 1005 Can't create table 'db' (errno: 13)
 120511 16:28:01 [ERROR] Aborting

120511 16:28:01 [Note] /opt/local/libexec/mysqld: Shutdown complete

Installation of system tables failed! Examine the logs in
 /opt/local/var/db/mysql5 for more information.

調べてみると、このエラーも
「mysql」が必要なディレクトリへの権限を持っていないのが原因らしい。

エラー文中にあった、問題のディレクトリを指定し
mysql:mysqlを所有者として設定。

$ sudo chown -R mysql:mysql /opt/local/var/db/mysql5

エラーが出なかったってことは、上手くいったか?
改めてクリーンアップを実行。

$ 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 localhost 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!

いけたくさい!!!!
さっそくパスを通して続きを実行してみる。

$ export PATH=$PATH:/opt/local/lib/mysql5/bin

動けー!

$ sudo mysqld_safe &
 [1] 63336
 $ 120511 21:01:31 mysqld_safe Logging to '/opt/local/var/db/mysql5/localhost.err'.
 mkdir: /opt/local/var/run: No such file or directory
 chown: /opt/local/var/run/mysql5: No such file or directory
 chmod: /opt/local/var/run/mysql5: No such file or directory
 120511 21:01:31 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5
 120511 21:01:37 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/localhost.pid ended
[1]+  Done                    sudo mysqld_safe

…はい、ソケットソケット。

$ sudo mkdir -p /opt/local/var/run/mysql5
$ sudo touch /opt/loacl/var/run/mysql5/mysqld.sock
$ sudo chown mysql:mysql /opt/local/var/run/mysql5/mysqld.sock

今度は起動できるかな…

$ sudo mysqld_safe &
[1] 63816
$ 120511 21:30:44 mysqld_safe Logging to '/opt/local/var/db/mysql5/localhost.err'.
120511 21:30:44 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mysql5

いけた…?

起動確認してみる。

$ sudo mysql ping
 ERROR 1049 (42000): Unknown database 'ping'

エラーやんけ。
よく分からなくので、rootユーザでもう一度試してみる。

$ sudo mysqld_safe --user=root &
 [2] 63867
 $ 120511 21:33:06 mysqld_safe Logging to '/opt/local/var/db/mysql5/localhost.err'.
 120511 21:33:06 mysqld_safe A mysqld process already exists

[2]+ Exit 1 sudo mysqld_safe --user=root

起動確認

$ sudo mysql ping
 ERROR 1049 (42000): Unknown database 'ping'

内容が変わったけど、エラーやんけ。

$ sudo mysqld_safe --user=root &
 [2] 63908
 $ 120511 21:35:14 mysqld_safe Logging to '/opt/local/var/db/mysql5/localhost.err'.
 120511 21:35:14 mysqld_safe A mysqld process already exists

[2]+ Exit 1 sudo mysqld_safe --user=root

よく見たら、内容がすこし変わっている。
調べてみたら「もう起動してますよ!」とおっしゃっているらしい。
MySQL Workbenchを開いてみたら、確かに起動していた!

ためしにMySQLサーバをシャットダウンしてみたが、一応起動はしていたようだ。

$ sudo mysqladmin -u root shutdown
Password:
120511 22:07:29 mysqld_safe mysqld from pid file /opt/local/var/db/mysql5/localhost.pid ended
[1]+  Done                    sudo mysqld_safe

はぁぁぁ、長かった。
しかし、rootユーザのパスワード変更もできないし違和感あるわ…。
また後日やり直そうか。

関連記事

Pocket