MySQL 5.6 on Ubuntu 14.04で少しはまったこと
3号です。
オンプレ+CentOS6系なインフラをちょめちょめしてたのが一年くらい前でそっから会社辞めて、今の会社で久々にMySQL構築おじさんをしたらちょっとはまりました。私にUbuntuの知見がほとんど無かったというのも原因ですね。そのメモになります。
インストール時にMySQLのユーザパスワードを聞かれないようにする
通常ubuntuにaptでMySQLをインストールするとrootのパスワードどうする?とかインタラクティブなやりとりが行われます。しかしシェルスクリプトやchefなどからインストールする場合、これをスキップしたいです。そこで下記のようにDEBIAN_FRONTEND=noninteractiveをコマンドに渡すとスキップすることができます。
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server-5.6 mysql-client-5.6 libmysqlclient-dev
をバーンでいけます。Ubuntu力が低くてはまった事柄です。
mysqldが落ちない
上記インストール直後、ps -ef | grep mysql
ってやるとmysqldが存在しています。で、このプロセスなのですが、/etc/init.d/mysql stop
ってやっても落ちてくれません。killしてもダメです。
service mysql stop
ってやる必要があります。普段serviceコマンドほとんど使わないので解決するまで結構時間を食ってしまった...。serviceコマンドで落としたあとは/etc/init.d/mysql stop
や/etc/init.d/mysql start
が効くようになります。
File 'mysql-bin.index' not found (Errcode: 13 - Permission denied)とか言われる
データディレクトリの場所を変えたんですが、そしたらこれに当たりました。データディレクトリ変える場合は注意ですね。原因は/etc/apparmor.d/usr.sbin.mysqld
というファイルがあってですね(知らなかった)、このファイルに下記を追記します。以下の例はデータディレクトリを/db/mysqlにする場合になります。
/db/mysql/ r, /db/mysql/** rwk,
そしてsudo service apparmor reload
で解消します。
[ERROR] Function 'innodb' already existsがログに記録される
http://www.faqssys.info/error-function-innodb-already-exists/
これですね。たぶんバグだと思います。mysql.plugin
テーブルに入っているinnodbプラグインがないよ、って意味です。他にもFEDERATEDがないよとかいろいろログに出ます...。
これについてはそもそもinnodbはビルトインされたものを使ってますので、mysql.pluginテーブルで不要なものを消しました。このエラーログが出ていても動作に影響は無いようなのですが、ERRORって文字が気持ち悪いので。
[ERROR] InnoDB: Tablespace open failed for '"mysql"."innodb_index_stats"', ignored.がログに記録される
http://bugs.mysql.com/bug.php?id=67179
これですね。該当のバージョンではないのですが...これが発生しました。
http://bugs.mysql.com/file.php?id=19725&bug_id=67179&text=1
こちらの要領に従って従ってテーブルを再作成してMySQLを再起動して完了です。
以上です。