Sunday, March 10, 2013

MySQL:Cygwinにインストール

CygwinでMySQLを使えるよう、インストールしました。いろいろ試して、結局不成功でした。できました。(TRY1の追記)

バージョンは、

$ mysqld --version
mysqld  Ver 5.5.28-log for CYGWIN on i686 (Source distribution)


TRY1:setup.exeを使ってインストール 


setup.exeを使うとインストールは問題なく完了しますが、起動時に問題が。

■mysql のdataディレクトリの設定
データ保存ディレクトリを/e/work/lib/mysql_dataに。

$cd /usr/bin
$vi  ./mysq_install_db
ldatadir="/e/work/lib/mysql_data"

■mysql_dbのセットアップ
$ ./mysql_install_db

これは成功。設定ファイルをコピー。

$ cp my-medium.cnf /etc/my.cnf

この先で問題が。mysql用のユーザーを作成したものの、
$ net user kinoko /add /fullname:kinoko /comment:'mysql user account' /homedir:"$(cygpath -w /home/kinoko)"

このユーザーを使って
$ ./mysqld_safe --user=kinoko &

を実行するとエラー。
(実行時にデータ保存先やエラーログファイルを指定したければ、--datadir=/usr/local/mysql/data --log-error=/var/log/mysql.log & というようなオプションをつけます。

エラー内容は、(抜粋)
chown: invalid user: `kinoko'

見ると/etc/passwdにkinokoが追加されておらず。Windowsを再起動してログイン画面を見るとkinokoさんが増えているので、Windowsにとってはユーザが存在しているようす。

adduserを使おうと考えましたがCygwinにはないようなので、いろいろ試しましたが結局うまくいかず断念です。

・CygwinはLinuxと違いrootユーザーがいない
・adduser(useradd)がないのでunixライクにユーザーの追加ができない。
・net user を使うと追加できているが、/etc/passwdに反映されない。

※追記:
調べてみるとWindowsのユーザーをcygwinのユーザーに追加する方法がありました。

$mkpasswd -l -u USERNAME >> /etc/passwd

試してみました。

$mkpasswd -l -i kinoko >>/etc/passwd
$mysqld_safe --user=kinoko &

(略)

$ mysqlshow.exe -u kinoko

+--------------------+
|     Databases         |
+--------------------+
| information_schema |
| test                       |
+--------------------+

成功です・・!


TRY2: Windows版インストーラを使ってインストール


install_dirとdata_dirを変更するとエラーになりました。
エラーログは、
1: Folder: E:\work\mysql_data\
1: Folder: E:\work\mysql_data\data\
1: The installer has insufficient privileges to access this directory: E:\work\mysql_data\data. The installation cannot continue. Log on as administrator or contact your system administrator.

これを手がかりに探すと似た古いログがありましたが、(2005年)
【mysqlをインストールしたディレクトリとdata_dirのドライブが違う場合、アップデートの際にこのエラーが発生する】
ということだし、install_dirとdata_dirは同じドライブなので該当しません。

insufficient privilegesということで、パーミッションのせいかと思い777に変更してみたものの、
1: Failed to set security descriptor on object E:\work\mysql_data\, system error: -2147024891

というエラー。

結局、試しに2つのディレクトリ指定をデフォルトでやってみるとインストール成功。
ただ、デフォルトのCドライブは残り容量がないので、

$ df -h
C:               40G   40G  426M  99% /c

アンインストールしました。

TRY:3 ソースからインストール


Download MySQL Community ServerからSourceCodeをDL.

GCCのバージョンが低かったのでDL。

2.10 Installing MySQL from source を読むとインストール後の話がかいてあり、
mySQL Source Configuration Options を参考にcmake。

install_dir = /e/mysql
data_dir = /e/mysql_data
として、紆余曲折のすえ、

$ cmake . -DCMAKE_INSTALL_PREFIX=/e/mysql -DMYSQL_DATADIR=/e/mysql_data -DDEFAULT_CHARSET=utf8 2>>stderr.log 1>>stdout.log


$ cat stderr.log
/usr/bin/getconf: Unrecognized variable `LEVEL1_DCACHE_LINESIZE'
Warning: Bison executable not found in PATH
CMake Error at unittest/gunit/CMakeLists.txt:170 (ADD_LIBRARY):
  Cannot find source file:

    /e/Software/mysql/mysql-5.6.10/source_downloads/gmock-1.6.0/src/gmock-all.cc

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx
というエラーににたどり着いたものの、
最初の
/usr/bin/getconf: Unrecognized variable `LEVEL1_DCACHE_LINESIZE'
を調べてみると、

$strings /usr/bin/getconf |grep -i LEVEL1_DCHACHE_LINESIZE
$

該当なしでした。
getconfを探そうとしたところ、cygwinパッケージにはないという話があり、パッケージリストにもないので、最初から入っているのは何なんだろ・・?と思いながらこのへんで終了することにしました。