時代はNoSQLに移りつつあるこのご時世に今さらこんなネタもアレだが、、、。久しぶりにMySQLをインストール〜起動なんちゅうことをやったら何を今さら、なミスをやらかした。
へいへい…と進めてサービスをスタートしたら、”ERROR! Manager of pid-file quit without updating file.” だと。あー、このエラーMSGって原因いろいろあるんだよな、確か。ググッたところで該当ケースに相当せず(自分の過去記事にもあった…)。install-dbを再実行するといい、と書いてあったのでやってみたがNG。エラーログが所定の場所に吐かれてないし。…が、何かのきっかけでエラーログを見つけた。定義と違う場所に吐かれていた。# sh -x /etc/init.d/mysql startでどこでつまづいているのか見てみる。あー、所定の場所にmy.cnf置いてないじゃん。アホかー!!…で、置いたけどNG。
[ERROR] Fatal error: Can’t change to run as user ‘mysql’; Please check that the user exist!’
んー、起動ユーザは違うユーザに定義しているのに、mysqlユーザで起動しようとしている?エラーログ内のMSGでも、確かに起動ユーザが二重に定義されているように見える。
[Warning] Ignoring user change to ‘hoge’ because the user was set to ‘mysql’ earlier on the command line.
※hogeは今回定義している起動ユーザ。
・・・と、しつこくあれこれ書くまでもなく、結論はインストール時に配置された/etc/my.cnfを無効にしておかなかったため。こいつをmvしたらあっさり成功。
く、くだらん・・・。しばらく出来上がっているイメージをコピーする手順でしか構築していなかったから、こういう基本的な手順が抜けていたわけである。しょうもないネタではあるが、戒めのために記録。
追記
冒頭で”NoSQL”なんて書いたが、というより今って”NewSQL”…?(汗
ぼんやりしていると浦島太郎状態だ。そんなこと中、MySQLからのフォークでクラウドに特化したDrizzleなんてのも出ていたんだね(正式版は去年の3月くらい)。MongoDBも押さえておきたいし….FlockDBも….あぁぁぁぁ….!!
あー、でもよくよく調べたらFlockDBってtwitterが開発したもので、バックエンドにはMySQLがいたんだわ。(Twitterの大規模システム運用技術、あるいはクジラの腹の中(後編))cassandraの採用を取りやめた後この構造って変わってないのかな?
Scientific Linux 6.1のLDAPクライアントでハマったこと。今回は6.1だが、それ以降でも、6でも、CentOS 6でも、基本一緒だと思う。こちらやこちら(CentOS6用)を参考にしつつ実施(何せまだ情報がほとんどないので助かりました)。
基本メモ
1. nss_ldapはなくなり、代わりにpam_ldap,nss_pam_ldapdを導入。
2. /etc/ldap.confは/etc/pam_ldap.confに変わった。
3. 新しいデーモン、nslcdが加わった。設定ファイルは/etc/nslcd.conf。自動起動をONにしておく。
4. /etc/pam.d/sshdがsystem-authではなく、代わりにpassword-authを参照するようになった。5系以前で/etc/pam.d/system-authに記載していた内容を、そのまま/etc/pam.d/password-authに置き換えればOK。(のハズ)
以上の他は、今までと同じにしておいてよい。nslcd.confの注意点としては、参考URL内にあったパラメータだけでなく、binddn, bindpwも適宜記述する必要がある。この値は/etc/pam_ldap.confに記述してあるのと同様にすればよい。
/etc/nslcd.conf(一部)
uid nslcd
gid ldap
# 以下、個別に通常使用する値を記述
uri ldap://LDAPサーバのIPまたはドメイン
base dc=example,dc=com
binddn cn=client,dc=example,dc=com
bindpw xxzzyy
で、一通りやってみたが認証ができない。LDAPサーバと通信はできているのだが、クライアント側でid usernameとかgetent passwdしてもユーザが見えない。認証問合せにいってくれないんである。こういう時はnss周りが怪しい、と目星をつけたものの、ツールや設定は問題ないはず。なぜぇぇぇぇーーーー!!
・・・で、原因は。「nslcdの反映にはOS再起動が必要」。
あぁぁぁぁぁぁーーー!!このために半日費やしたーーーー!!
この記事が、どこかの誰かに役に立つことを祈る。
Scientific Linux 6.1をいじる機会があったので、ハマったことのメモなんぞを。
ミニマムインストールだと普通入っているはずのツールが入ってなくていちいちつまづく(というかデフォルトで最小パッケージしか入らないらしい)。まずscpが使えなかったので、以下実行。
# yum install openssh-clients -y
んー、nslookupとかdigがない!?で、以下実行。
# yum install bind-utils -y
make,Cコンパイラもない・・・。おかげでMySQLインストール時にはまった。
make, gcc, gcc-c++ も同様にインストールしておこう。
NTPサーバもデフォルトでは入っていない。他にもいろいろあったが、忘れてしまった。。
あとはcronの仕組みが5系から変わっているのと、yumレポジトリの設定に注意、だろうか(デフォルトのレポはあまり使えないらしい)。yum updateが自動実行されるようになっているため、その辺も必要に応じて制御する。それからデフォルトのファイルシステムがext3からext4になっている。LDAPクライアントの設定が結構変わっているので、次回はその辺りを。
超コネタ。Amazon AMIをmodify-attributeにより別のEC2アカウントで利用できるのは知っていたが、スナップショットも同様にできることをつい最近知った…
$ ec2-modify-snapshot-attribute snap-5abd4a3e -c – -add 134781398455 < - snapshotを利用したいアカウントID
インスタンスも同様に可能。スナップショットで取得したバックアップとか、利用価値高そう。
スクリプト内の処理でもコマンドでも、ファイルに日付を付与したいことは多々ある。
…で、dateコマンドの日付フォーマットの書式をいつも忘れてしまうので書いておく。
# cp -p httpd.conf httpd.conf.`date +%Y%m%d`
とすれば、httpd.conf.20111118といったファイルができる。
時刻を付与したければこんな風に。
# cp -p httpd.conf httpd.conf.`date +%Y%m%d%T`
しかしいちいち書くか、こんなこと・・・