
Ubuntu日本語フォーラム

ログインしていません。
お世話になります。zackと申します。
ubuntu server 12.04 64bit を先日インストールし、LAMP環境にするところまでは一旦できたのですが、
表題のとおり、my.cnf を編集し、MySQLを restartしようとしたところ、エラーがでて起動できなくなってしまいました。
具体的には、他の端末から接続できるようにしたいと思い、my.cnfを編集することにしました。
その際、権限不足で上書きできなかったので、
sudo chmod 777 my.cnf
として、192.168.10.5の行を1行追加しました。
bind-address = 127.0.0.1
bind-address = 192.168.10.5 ← この行
その後、
sudo service mysql restart
を実行したところ、
start: Job failed to start
と出て、起動できなくなりました。
過去の質問を見て、mysqld というコマンドを実行してみたのですが、その結果を見ても意味がわからず、投稿させて頂きました。
どうかアドバイスをおねがいします。
zack@ubuntuServer:/etc/mysql$ sudo mysqld
130204 19:37:28 [Note] Plugin 'FEDERATED' is disabled.
130204 19:37:28 InnoDB: The InnoDB memory heap is disabled
130204 19:37:28 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130204 19:37:28 InnoDB: Compressed tables use zlib 1.2.3.4
130204 19:37:28 InnoDB: Initializing buffer pool, size = 128.0M
130204 19:37:28 InnoDB: Completed initialization of buffer pool
130204 19:37:28 InnoDB: highest supported file format is Barracuda.
130204 19:37:28 InnoDB: Waiting for the background threads to start
130204 19:37:29 InnoDB: 1.1.8 started; log sequence number 1595695
130204 19:37:29 [Note] Server hostname (bind-address): '192.168.10.5'; port: 3306
130204 19:37:29 [Note] - '192.168.10.5' resolves to '192.168.10.5';
130204 19:37:29 [Note] Server socket created on IP: '192.168.10.5'.
130204 19:37:29 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
130204 19:37:29 [ERROR] Do you already have another mysqld server running on port: 3306 ?
130204 19:37:29 [ERROR] Aborting
130204 19:37:29 InnoDB: Starting shutdown...
130204 19:37:29 InnoDB: Shutdown completed; log sequence number 1595695
130204 19:37:29 [Note] mysqld: Shutdown complete
オフライン
起動できていないので当たり前なのかもしれませんが、接続しようとすると次のようなエラーが出ます。
zack@ubuntuServer:~$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
オフライン
zack による投稿:
その際、権限不足で上書きできなかったので、
sudo chmod 777 my.cnf
chmod 777 にするとmysqldは起動しません。
sudo chmod 744にして、
sudo vi my.cnf などとして編集してください。
オフライン
ItSANgoさん、アドバイスありがとうございます。
ItSANgo による投稿:
chmod 777 にするとmysqldは起動しません。
sudo chmod 744にして、
sudo vi my.cnf などとして編集してください。
777だと起動しないんですね。知りませんでした。
my.cnfの中身は編集済みなので、744に変更して実行してみたところ・・まだだめでした。
zack@ubuntuServer:/etc/mysql$ sudo chmod 744 my.cnf
zack@ubuntuServer:/etc/mysql$ sudo mysqld
130204 21:12:06 [Note] Plugin 'FEDERATED' is disabled.
130204 21:12:06 InnoDB: The InnoDB memory heap is disabled
130204 21:12:06 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130204 21:12:06 InnoDB: Compressed tables use zlib 1.2.3.4
130204 21:12:06 InnoDB: Initializing buffer pool, size = 128.0M
130204 21:12:06 InnoDB: Completed initialization of buffer pool
130204 21:12:06 InnoDB: highest supported file format is Barracuda.
130204 21:12:06 InnoDB: Waiting for the background threads to start
130204 21:12:07 InnoDB: 1.1.8 started; log sequence number 1595695
130204 21:12:07 [Note] Server hostname (bind-address): '192.168.10.5'; port: 3306
130204 21:12:07 [Note] - '192.168.10.5' resolves to '192.168.10.5';
130204 21:12:07 [Note] Server socket created on IP: '192.168.10.5'.
130204 21:12:07 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
130204 21:12:07 [ERROR] Do you already have another mysqld server running on port: 3306 ?
130204 21:12:07 [ERROR] Aborting
130204 21:12:07 InnoDB: Starting shutdown...
130204 21:12:07 InnoDB: Shutdown completed; log sequence number 1595695
130204 21:12:07 [Note] mysqld: Shutdown complete
ひとまず復旧を目指しているので、192.168.10.5の行を一旦削除してみたところ…
zack@ubuntuServer:/etc/mysql$ sudo chmod 744 my.cnf
zack@ubuntuServer:/etc/mysql$ sudo mysqld
130204 21:14:15 [Note] Plugin 'FEDERATED' is disabled.
130204 21:14:15 InnoDB: The InnoDB memory heap is disabled
130204 21:14:15 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130204 21:14:15 InnoDB: Compressed tables use zlib 1.2.3.4
130204 21:14:15 InnoDB: Initializing buffer pool, size = 128.0M
130204 21:14:15 InnoDB: Completed initialization of buffer pool
130204 21:14:15 InnoDB: highest supported file format is Barracuda.
130204 21:14:15 InnoDB: Waiting for the background threads to start
130204 21:14:16 InnoDB: 1.1.8 started; log sequence number 1595695
130204 21:14:16 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
130204 21:14:16 [Note] - '127.0.0.1' resolves to '127.0.0.1';
130204 21:14:16 [Note] Server socket created on IP: '127.0.0.1'.
130204 21:14:16 [Note] Event Scheduler: Loaded 0 events
130204 21:14:16 [Note] mysqld: ready for connections.
Version: '5.5.29-0ubuntu0.12.04.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
MySQLが無事起動しました!
余計な行を追加した上に、777にしていたのが駄目だったようです。
ありがとうございます、助かりました。
オフライン
ItSANgoさんからパーミッションについて教えていただいたおかげて、復旧することができたので、
あらためて192.168.10.5からの接続に挑戦したいのですが、2行書いただけでは駄目なのでしょうか。
bind-address = 127.0.0.1
bind-address = 192.168.10.5
自身でもgoogleなどで調べているのですが、なかなか見つけれらずにいます。
オフライン
zack による投稿:
ItSANgoさんからパーミッションについて教えていただいたおかげて、復旧することができたので、
あらためて192.168.10.5からの接続に挑戦したいのですが、2行書いただけでは駄目なのでしょうか。bind-address = 127.0.0.1
bind-address = 192.168.10.5自身でもgoogleなどで調べているのですが、なかなか見つけれらずにいます。
素朴な疑問ですが、192.168.10.5はそのサーバーのIPアドレスになっているでしょうか?
ifconfigで確認していただけますか?
オフライン
分かりにくくてすみません。
192.168.10.5はクライアント側のものです。
サーバーのIPは、192.168.10.20です。
オフライン
zack による投稿:
192.168.10.5はクライアント側のものです。
サーバーのIPは、192.168.10.20です。
bind-addressはサーバーのIPアドレスを記述する項目です。
ネットワークインターフェイスが複数あるマシンで、どのインターフェイスでlistenするかを指定する項目です。
ではクライアントのIPアドレスを制限するかですが、iptablesを使うか、MySQLのACL機能で制御します。
これらについては私も詳しくないので
http://ameblo.jp/tetsuya-staff/entry-10139707964.html (今メンテナンス中)
http://blog.trippyboy.com/2010/mysql/%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AEmysql%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%82%92%E8%A9%A6%E3%81%99%E3%81%AE%E5%B7%BB/
などを参照してください。
あとmy.cnfのパーミッションですが744と申しあげましたが、my.cnfに実行権など必要ないので644が正しいですね。
訂正させていただきます。申し訳ありません。
リファレンスマニュアルのページも載せておきます。
http://dev.mysql.com/doc/refman/5.1/ja/index.html
オフライン
ItSANgoさん、引き続きありがとうございます。
bind-addressはサーバーのIPアドレスを記述する項目です。
ネットワークインターフェイスが複数あるマシンで、どのインターフェイスでlistenするかを指定する項目です。
なるほど、それで起動しなくなってしまったんですね。
てっきり接続できるクライアントのIPアドレスを指定するところだと思っていました。(お恥ずかしい)
クライアントのIPアドレスを制限するかですが、iptablesを使うか、MySQLのACL機能で制御します。
これらについては私も詳しくないので
http://ameblo.jp/tetsuya-staff/entry-10139707964.html (今メンテナンス中)
http://blog.trippyboy.com/2010/mysql/%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AEmysql%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%82%92%E8%A9%A6%E3%81%99%E3%81%AE%E5%B7%BB/
などを参照してください。
実は。。
http://blog.trippyboy.com/2010/mysql/%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AEmysql%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%82%92%E8%A9%A6%E3%81%99%E3%81%AE%E5%B7%BB/ を拝見しながら作業していまして、
# 1./etc/my.cnf
# もし、「bind-address」の記述がある場合には、コメントアウトしましょう。
# これは、MySQLサーバに接続できるホストを制限するものです。
という記述の、「接続できるホストを制限するものです」を見て、クライアントを制限できるものと勘違いしていました。
教えていただいたACL機能で制御する方向で検討したいと思います。
今回はさっぱり分からない状況の中、アドバイスをいただき、本当に助かりました。
ありがとうございました。
そして、パーミッションの件、MySQLが起動して満足していましたが、たしかに実行権は必要ないですね。
憶えておきます。ありがとうございます。(もちろん修正もします)
オフライン