さくらのVPSを借りて構築を行っています。

基本的にMySQLだけを導入して運営させていてしばらく問題もなかったのですが、
最近、Perlなどを導入して権限周りに色々悩まされていました。

で、何が原因かはわかっていないのですが、MySQLが起動できなくなりました。

/etc/rc.d/init.d/mysqld restart
を行うと、停止は出来るのですが起動に失敗します。

/var/log/mysqld.log を見てみると、

InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
InnoDB: Using Linux native AIO
InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: Completed initialization of buffer pool
InnoDB: highest supported file format is Barracuda.
InnoDB: Waiting for the background threads to start
InnoDB: 1.1.8 started; log sequence number 1595675
[ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
[ERROR] Can't start server: can't create PID file: No space left on device
mysqld_safe Number of processes running now: 0
mysqld_safe mysqld restarted
[Note] Plugin 'FEDERATED' is disabled.

と書かれており、権限で起動が出来なくなってるのかと思い、
ls -ld /var/run/mysqld/ で調べてみると、
drwxr-xr-x 2 mysql mysql 4096 11月 1 23:52 /var/run/mysqld/
と、MySQLをインストールした時と同様に、ユーザーはmysqlのままでした。
一応、chown -R mysql:mysql /var/run/mysqld/ でもう一度設定しなおして再起動を試みましたが、起動のみやはり失敗して、同じエラーログとなっています。

Apacheの起動・停止は問題ありません。

OSはCentos5.7でApache2.2ですが、どうも権限周りの設定が良くわかっておりません。

どうにか再インストール無しでMySQLを起動させたいのですが、ご教示頂けますと幸いです。
宜しくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> No space left on device



ディスクがいっぱいになっていたりしませんか?
df コマンドで確認してみてください。
    • good
    • 0
この回答へのお礼

ご教示頂きまして有難うございます。
返信が遅れて申し訳ございません。

早速チェックしたところ、仰るとおりディスクをチェックしてみると、アクセスとエラーの両ログが膨大化しすぎていて、それでHDDが一杯で色々エラーになっていたようでした。

これからはログのローテもきちんと設定するようにします。
勉強になりました!

本当に有難うございました。

お礼日時:2011/11/03 02:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QSFTPで/var/lib/mysql/にPUT

MySQL5.5でレプリケーション(準同期)を構築しています。

http://it.sifr.me/mysql-semi-synchronous-replication/
上記のサイトを参考に、マスターサーバー(192.168.100.101)からスレーブサーバー(192.168.100.105)にレプリケーションの予定です。

上記サイトをもとに構築していたのですが、レプリケーションの前の段階の
「SFTPで/var/lib/mysql/に接続、PUT」するという単純なことが出来ません。

下記のように192.168.100.101にあるSQLをスレーブサーバー192.168.100.105にSFTPで接続してPUTするという作業をしたころ
Couldn't get handle: Permission denied
になってしまっています。

[root@sv1 ~]# cd /var/lib/mysqll      //192.168.100.101のマスターサーバー上でcd
[root@sv1 mysql]# sftp -oPort=22 replica@192.168.100.105 //スレーブに接続
Connecting to 192.168.100.105...
replica@192.168.100.105's password:
sftp> cd /var/lib/mysql      //192.168.100.105のスレーブサーバー上でcd
sftp> put master-mysql-data.tar.gz   //192.168.100.105のスレーブサーバーにput
Uploading master-mysql-data.tar.gz to /var/lib/mysql/master-mysql-data.tar.gz
Couldn't get handle: Permission denied  //エラー
sftp>


現在のユーザー設定は以下の通りです。

ユーザー名はいずれも replica で
192.168.100.101(マスター)
●linuxユーザー(ユーザー名 replica)
●mySQLユーザー(ユーザー名 replica)
   ホスト192.168.100.105 スレーブレプリケーションの許可


192.168.100.105(スレーブ)
●linuxユーザー(ユーザー名 replica)(グループ mysql)
●mySQLユーザー(ユーザー名 replica) 
   ホスト192.168.100.101
   スレーブレプリケーションの許可&クライアントレプリケーションの許可

と設定しています。

尚、PUT先の192.168.100.105 の/var/lib/mysql/の所有者はユーザー、グループともmysqlです。

mysqlユーザーで行えばput可能のでしょうが、どのサイトを見てもreplication専用ユーザーを作って対応することとなっており、安全上の面からも機能限定のユーザーでputしたく考えております。

対応方法についてご教授いただきたくお願いいたしします。

MySQL5.5でレプリケーション(準同期)を構築しています。

http://it.sifr.me/mysql-semi-synchronous-replication/
上記のサイトを参考に、マスターサーバー(192.168.100.101)からスレーブサーバー(192.168.100.105)にレプリケーションの予定です。

上記サイトをもとに構築していたのですが、レプリケーションの前の段階の
「SFTPで/var/lib/mysql/に接続、PUT」するという単純なことが出来ません。

下記のように192.168.100.101にあるSQLをスレーブサーバー192.168.100.105にSFTPで接続してPUTするという作業を...続きを読む

Aベストアンサー

>尚、PUT先の192.168.100.105 の/var/lib/mysql/の所有者はユーザー、グループともmysqlです。
>mysqlユーザーで行えばput可能のでしょうが、どのサイトを見てもreplication専用ユーザーを作って対応することとなっており、安全上の面からも機能限定のユーザーでputしたく考えております。

グループに書き込み権限がついていないだけ…とか言うことはありませんか?
ティストリビューションが何かは不明ですが…。

QCentOS(Linux)上の/var/lib/mysqlディレクトリ

CentOS(Linux)上の/var/lib/mysqlディレクトリ上(MySQLデフォルトのデータディレクトリ)へ、
CSVファイル「Test.csv」(文字コードWindows-31J(CP932))を、
アップロードしてから、
以下のJavaプログラム(エラー処理内容だけは省略していますが・・・)
 ↓
final Runtime rt = Runtime.getRuntime();
final Process pr = rt.exec("chown mysql:mysql" + " "
+ "/var/lib/mysql/Test.csv");
try {
pr.waitFor();
final int intRet = pr.exitValue();
if (intRet != 0) {
return;
}
} catch (final Exception ex2) {
return;
}

を実行して、
アップロード後の「Test.csv」ファイルの「所有者」、および「グループ」を、
元々の「root」から、「mysql」に変更させて、
その後、
MySQLコマンドの「LOAD DATA INFILE」を実行すると、
なぜか、
以下のエラーが発生します。
 ↓
java.sql.SQLException: Access denied for user 'SYSASA'@'localhost' (using password: YES)

なお、別のやり方として以下のテストも試してみました。
 ↓
上記のJavaプログラムを実行せずに、
アップロード後のファイルを直接、
CentOS上から手作業(プロパティ)で、
アップロード後の「Test.csv」ファイルの「所有者」、および「グループ」を、
元々の「root」から、「mysql」に変更させてから、
その後、
MySQLコマンドの「LOAD DATA INFILE」を実行すると、
問題無く、インポート出来ています。

そこで、
ご質問内容なのですが、
Javaプログラムを利用しているか、していないか
だけの違いで、
なぜか、上記致しましたJavaプログラムで、
アップロード後の「Test.csv」ファイルの「所有者」、および「グループ」を、
元々の「root」から、「mysql」に変更させてから、
MySQLコマンドの「LOAD DATA INFILE」を実行すると、
上記のエラーになります。

何がエラーの原因なのでしょうか?
もしお気づきの点などございましたら、
ぜひ教えてください。

お世話になります。
以上、宜しくお願い致します。

CentOS(Linux)上の/var/lib/mysqlディレクトリ上(MySQLデフォルトのデータディレクトリ)へ、
CSVファイル「Test.csv」(文字コードWindows-31J(CP932))を、
アップロードしてから、
以下のJavaプログラム(エラー処理内容だけは省略していますが・・・)
 ↓
final Runtime rt = Runtime.getRuntime();
final Process pr = rt.exec("chown mysql:mysql" + " "
+ "/var/lib/mysql/Test.csv");
try {
pr.waitFor();
final int intRet = pr.exitValue();
if (intRet != 0) {
return;
}
} catch (final Exception ex2...続きを読む

Aベストアンサー

OSのファイルシステムの所有者や権限と、MySQLのアカウントや権限の話がごちゃ混ぜになっているような。。。

JAVAでMySQLに接続する時、どういう指定になっているのでしょうか?
JAVAを使用せず、手作業で接続する時、どういう指定になっているのでしょう?

Q/var/lib/mysql以下に生成される db-bin.xxxファイルって?

Turbolinux 10 Serverを使っています。
mysqlのバージョンは4.0.20です。
インストール後しばらく使っていたのですが、
/var/lib/mysql以下に
 databasename-bin.001
 databasename-bin.002
 databasename-bin.003
 ・
 ・
 ・
というファイルが多数生成されました。
これらのファイルのサイズは1GByte近くある大きなものもあり、
無視できなくなりました。
これらのファイルは何なのでしょうか?
また、このファイルはrmで削除してしまっていいのでしょうか?
何かツールを使うと自動的に削除されるのでしょうか?

初歩的な質問なのかもしれませんが、ご教授お願いいたします。

Aベストアンサー

ファイルの場所と名前の体系から、バイナリログかと想像します。
参考URLを読まれると、どういうモノか、わかるかと思います。

参考URL:http://www.irori.org/doc/mysql-rep.html

QWAMP Server2.0のmysqlでInnoDBを使いたい

Windows環境でお手軽Apache+PHP+MySQLがインストールできる WAMPServer2.0をインストールして使ってみたのですが、MySQLのテーブルのエンジンタイプが InnoDBを指定できない(エラーになります)。
私はMySQLは当然InnoDBが使えると思っていたのですが、WAMPでは無理なのでしょうか?

http://www.forest.impress.co.jp/article/2008/12/19/wampserver.html

Aベストアンサー

お力になれないからもしれませんが、
>phpmyadminでテーブルのエンジンタイプをメニューにInnoDBが無い
・メニューに出てくるエンジンタイプの一覧を出せますか。

・「create table ... engine=innodb」のようにテーブル作成時にエンジン
 を指定したらどうなりますか。

・「MY.INI」ファイルの「default-storage-engine」に「innodb」を指定
 してMYSQLを再起動した後に、テーブルを作成した場合どうなりますか。

QMySQLのTimestamp(14)型のフィールドにYYYY/MM/DD hh:mm形式のデータをインサートするには

MySQLのTimestamp(14)型のフィールドに
YYYY/MM/DD hh:mm形式のデータをインサートするには
どのようにしたらよいのでしょうか?

MySQL の
Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに
YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を
インサートするには、
PHPでどのようにしたらよいのでしょうか?
できれば、インサートの際にssに自動的に00をつけたいです。

現在、PHPでinsert文を実行すると、データの桁数が足りないため、
フィールドの値は、0000-00-00 00:00:00になってしまいます。

同じ形式(YYYY/MM/DD hh:mm)のデータをphpMyAdminで
インポートすると、自動的にssに00がつき、
YYYY-MM-DD hh:mm:ss(例 2009-10-20 12:10:00)
となってくれます。

PHPでもphpMyAdminと同じ処理をしたいのですが、
インターネットで検索してもやり方が見つからず、
どのようにしたらよいのか、わかりません。。。

インサートするデータサイズが83MBと大きいので、
PHPで処理したいと思っています。
(phpMyAdminは8MBまでなので)

ご存知の方がいましたら、教えていただけると、
助かります。m(_ _)m

レンタルサーバー:さくら
インサートするファイル:CSVファイル
PHP 5.2.x
MySQL 5.1
phpMyAdmin 3.1.3.1

MySQLのTimestamp(14)型のフィールドに
YYYY/MM/DD hh:mm形式のデータをインサートするには
どのようにしたらよいのでしょうか?

MySQL の
Timestamp(14)型(YYYY-MM-DD hh:mm:ss)のフィールドに
YYYY/MM/DD hh:mm 形式のデータ(ssに該当するデータがない)を
インサートするには、
PHPでどのようにしたらよいのでしょうか?
できれば、インサートの際にssに自動的に00をつけたいです。

現在、PHPでinsert文を実行すると、データの桁数が足りないため、
フィールドの値は、0000-00-0...続きを読む

Aベストアンサー

>データの桁数が足りないため、
>フィールドの値は、0000-00-00 00:00:00になってしまいます。

そんなことないと思いますが・・・

>phpMyAdminで

自動的には00は付かないはずですが・・・

なにか勘違いがあるとは思いますがとりあえずPHPで整形するなら
date("Y-m-d H:i:s",strtotime($str))で処理してみては?


人気Q&Aランキング

おすすめ情報