CentOS6.4でMySQLのポートを変更するときにはまった

MySQLのポート変更は通常の手順で行くとWindowsもLinuxもあまり変わらないはずで
my.cnfを書き換えてファイアウォールの設定を行うだけ。

Linuxの場合大抵下記のように紹介されてる。

mysqlを終了しておく

# service mysql stop

/etc/my.cnfを書き換えする

# editra /etc/my.cnf
# 下記追加か書き換え
port=3307

ファイアウォールでポートを解放する。

# editra /etc/sysconfig/iptables
# 下記追加 --dportの次の数字を解放したいポートに設定する
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT

ファイアウォールを再起動

# /etc/init.d/iptables restart

mysqlを開始する

# service mysql start

しかし、CentOS6.4環境では下記エラーが出てMySQLの起動が失敗する

Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

MySQLのログを確認すると何やらTCP/IPのPortの権限がないとか書かれている

2013-06-23 18:35:09 5356 [ERROR] Can't start server: Bind on TCP/IP port: Permission denied
2013-06-23 18:35:09 5356 [ERROR] Do you already have another mysqld server running on port: 6000 ?
2013-06-23 18:35:09 5356 [ERROR] Aborting

色々調べても日本語のサイトじゃ情報収集できなく結局下記のオラクル社員のブログ?で情報発見した。
https://blogs.oracle.com/jsmyth/entry/selinux_and_mysql

CentOSにはSELinuxというセキュリティーポリシーのプログラムがあるらしく
こいつが色々と邪魔してた
結果からいくとこうすることで解決できた。

# setenforce 0
# service mysql start
Starting MySQL.. SUCCESS! 
# netstat -nlp | grep 3307
tcp        0      0 :::3307                     :::*                        LISTEN      5772/mysqld

正確に言うと邪魔しているのではなく余計なポートを使わせないようにしているみたいだけど
セキュリティ考えて標準ポートから変えたいんだよね
でもsetenforce 0して逆にセキュリティにあんまりよろしくないのかもしれない

あと同ページには/datadirの権限についてのエラーも書いてあるからもしかしたらデフォルトの設定ではエラー出るかも、まぁ、出たらこれ思い出してもう一度読み直そう
(英語ページ読むのって疲れるんだよねw)

完全にCentOSというかLinuxの知識不足が露呈した一件でした。

CentOSにエディターのEditraをインストール

さすがにviでやってるのも面倒になってきた
Windowsでも軽量エディターとしてお世話になっている
EditraがLinuxでも使えるみたいなので早速インストールする
(多数のプログラミング言語等に対応しててハイライトしてくれるからオススメ)

まずwxPythonが必要なためインストールしておく

# yum -y install http://puias.math.ias.edu/data/puias/6/x86_64/os/Addons/wxPython-2.8.12.0-1.puias6.x86_64.rpm

続いてEditraのソースを手に入れる

# wget http://editra.org/uploads/src/Editra-0.7.20.tar.gz

解凍する

# tar xvfz Editra-0.7.20.tar.gz

インストールする

# cd ./Editra-0.7.20
# python setup.py install

/usr/localにeditraを移動

# mv editra /usr/local

ためしに起動してみる

# editra ./src/Editra.py

これでテキストの編集が捗る!

ちなみに、rpm見つけるまでソースからコンパイルしようとして数時間格闘したw

MySQLでどこからmy.cnfを読み込むか調べる方法

WindowsでMySQL環境作ったときも同じくわからなくなって調べてたけど
Linuxでも同じくわかんなかったから忘備録残す
CUIだから覚えにくいんだよなー

やり方は単純mysql --helpを実行するだけで書いてる

# mysql --help
中略
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

CentOS6.4にMySQL5.6.12+mroongaのインストール

さてさて、今回の本目的である
MySQLレプリケーション環境構築をしていきます。

デフォルトではMySQL5.1がセットアップされてあるため依存関係でMySQL-sharedは一発でインストールできないらしい。
そのためまずはshared-compatをインストール

# yum localinstall http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-shared-compat-5.6.12-2.el6.x86_64.rpm

次にほかのすべての物をインストール

# yum localinstall http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-{shared,server,devel,client}-5.6.12-2.el6.x86_64.rpm

MySQLのUPDATEがあった場合URLが有効じゃないかも、なのでその時はURL置き換えてください。

これですべてのMySQLパッケージがインストールされました

次はMySQLの初期設定
MySQLサービスを起動してパスワード設定します。
5.5まではrootのパスワードが設定されていたみたいだけど
5.6からはランダムなパスワード文字列が設定されるみたい

# service mysql start
# cat /root/.mysql_secret
# The random password set for the root user at Fri Jun 21 22:19:08 2013 (local time): oNKuNNrg

この場合oNKuNNrgがパスワードみたいね
早速下記コマンドで変更する

# mysql -uroot -p
mysql> SET PASSWORD FOR root@localhost=PASSWORD('****');
mysql> exit

これで準備はOKあとはDB作るなりCREATE TABLEするなり
SQL文打ってけばOK

      • mroongaのインストール方法を追加---

InnoDB FTSの全文検索じゃあ3000万レコード超えたあたりから
インデックスが重くて使い物にならなかったのでmroongaをインストールしてみる。

# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# yum install mecab mecab-devel mecab-ipadic --disablerepo=* --enablerepo=groonga
# yum install groonga-libs groonga-tokenizer-mecab groonga-normalizer-mysql --disablerepo=* --enablerepo=groonga
# yum localinstall http://y-ken.github.io/package/centos/6/x86_64/mysql56-mroonga-3.05-1.el6.x86_64.rpm
# mysql -uroot -p
mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_mroonga.so';
mysql> CREATE FUNCTION mroonga_snippet RETURNS STRING SONAME 'ha_mroonga.so';
mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';
mysql> SHOW PLUGINS;
mysql> SHOW VARIABLES LIKE 'mroonga_%';

mroongaのビルドされたものを下記サイト様から頂きました。
http://y-ken.hatenablog.com/entry/how-to-install-mysql5.6.x-with-mroonga-for-centos6

CentOS6.4 ネットワークの設定

VMwareCentOSをインストールすると最初からネットワークの設定がされていて
インターネットにも接続できるのですがIPアドレスが固定じゃないので固定にしていきます。

まぁ、いろいろ設定ファイル書き換えたり四苦八苦したのですが実は特に設定ファイル書き換える必要なくて
ルータの設定で一発だったw

CentOS6.4は最初はDHCPでリースされる設定になっているのでそれをvmware player側とルータ側で
コントロールしてあげればいい話っぽい

まず、vmware playerの管理>仮想マシン設定でネットワークアダプタの設定をブリッジに変更する
そうすることでルータ側からゲストOSが直接認識されるようになる。
あとはルータのDHCPリースでIPアドレスを手動割り当てすればOK

ちなみに手動割り当て時にMACアドレスが必要なので下記コマンドでゲストOSのMACアドレスを知ることが出来る(HWaddr部分)

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F2:72:90  
          inet addr:192.168.11.10  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef2:7290/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3874 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1893 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4498867 (4.2 MiB)  TX bytes:175079 (170.9 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:30 errors:0 dropped:0 overruns:0 frame:0
          TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2328 (2.2 KiB)  TX bytes:2328 (2.2 KiB)

もしくは

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="00:0C:29:F2:72:90"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="d31eb4f1-38e2-4444-88bf-16a5679408e7"

DNS設定はめんどくさいから暇なときにでも設定w

CentOS6.4 英語キーボードを日本語キーボードへ設定変更

先日に続いて今度はキーボードの設定です。

さっそくキーボードの設定ファイルの中身見てみましょう。

# cat /etc/sysconfig/keyboard
KEYTABLE="us"
MODEL="PC105+inet"
LAYOUT="us"
KEYBOARDTYPE="pc"

見事に英語設定です。
まぁ、あたりまえだけどw

じゃあ次はviで下記に書き換えます。

# vi /etc/sysconfig/keyboard
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"

# cat /etc/sysconfig/keyboard
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"

うんあっさり終わった。

  • その他

VMでGUI画面で操作しているのでいちいちスリープなるのがめんどくさいからOFFにした
システム>設定>スクリーンセイバーからごにょごにょっとやった

まずはCentOS6.4 日本語化

どうもこんにちわyuuです。
個人でAndroidClient+RMIClient+Webapp+MySQLのアプリケーション開発してます。

なんかWindowsで開発してデバックしてるとVMの問題とか
実際の実行速度とか見極めにくいのでテスト環境として
VMwareLinuxインストールはじめてみました。

とりあえずMySQLレプリケーション利用して更新系と参照系にわけるので
MasterDBとSlaveDBのServerをそれぞれ仮想化して作っていきます。

とりえあずLinuxド素人が本番環境設定用に残す忘備録ですがどうぞよろしく。

まずはとりあえずCentOS6.4をさくっとインストール
で、ログインしたらまず、rootへ

$ su

次に日本語化用のパッケージをまとめてインストール

# yum groupinstall "Japanese Support"

何回か[y/n]聞かれるからy[Enter]
Complete!でパッケージインストール完了
Linuxってこんなコマンド一つでインストールできるのか楽すぎるw

次は設定ファイルを書き換え

対象ファイルは「/etc/sysconfig/i18n」で中身は下記の通りになってるはず

cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

となっているので一行目をLANG="ja_JP.UTF-8"に変更する

# vi /etc/sysconfig/i18n
# source /etc/sysconfig/i18n
# echo $LANG
jp_JP.UTF-8

再起動したら完了!

-追記-
完了のはずがなぜか反映されていなかった
最初の画面はたしかに日本語だけどログインすると英語...

ユーザー固有の設定を行ったら日本語環境になった。

$ vi ~/.bash_profile

#最終行に追加
LANG=ja_JP.UTF-8
export LANG

$ source ~/.bash_profile
$ echo $LANG
ja_JP.UTF-8

OSインストールしょっぱなから躓いた・・・
日本語キーボードの設定まだだから記号がjp106と違い非常に扱いにくかった
でもしばらく触ってるうちに変な打ち方おぼえちまったぞw

今日はとりあえずここまでにして日本語キーボードの設定は明日にしよう