みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

インストール・初期化後、初起動でエラー

インストール・初期化後、初起動でエラー

OS : CentOS 5.3
MySQL 5.0.89 をソースからインストール

rootユーザにて
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
[root@localhost mysql]# Starting mysqld daemon with databases from /usr/local/mysql/var
STOPPING server from pid file /usr/local/mysql/var/localhost.localdomain.com.pid
100114 20:02:07 mysqld ended

エラーログをみる
# cat var/localhost.localdomain.com.err
...
/usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/var/ib6TIfDM' (Errcode: 13)
100114 20:02:07 InnoDB: Error: unable to create temporary file; errno: 13
100114 20:02:07 [ERROR] /usr/local/mysql/libexec/mysqld: Can't create/write to file '/usr/local/mysql/var/localhost.localdomain.com.pid' (Errcode: 13)
100114 20:02:07 [ERROR] Can't start server: can't create PID file: Permission denied
100114 20:02:07 mysqld ended


/usr/local/mysql/var の所有者・権限は、mysql:mysql 700で
"# /usr/local/mysql/bin/mysqld_safe --user=mysql &" は mysqlユーザで起動するという意味ですよね(?)

/usr/local/mysql/my.cnf の [mysqld] には、
tmpdir = /usr/local/mysql/var/ を書いてます。

my.cnf は /etc/my.cnf にあります。

なぜ書き込めないのでしょうか?

どなたかご教示お願い致します。


因みに、これは関係ないと思いますが、
/usr/local/mysql の所有者・権限は root:mysql 700 です。

投稿日時 - 2010-01-14 20:56:30

QNo.5593378

困ってます

質問者が選んだベストアンサー

>因みに、これは関係ないと思いますが、
>/usr/local/mysql の所有者・権限は root:mysql 700 です。
これが原因です。

例え下記のようになっていても、
>/usr/local/mysql/var の所有者・権限は、mysql:mysql 700で
親ディレクトリがroot:mysql 700ために、/usr/local/mysql/varには
mysqlで書き込みができません、試してください。

投稿日時 - 2010-01-16 01:32:04

お礼

おしゃっるとおり
/usr/local/mysql を root:mysql 720 にしたら、
起動できなくなりました。

しかし、720 と、グループに書き込み権限を与えても
/usr/local/mysql/var mysql:mysql 700 には書き込めないんですねぇ。

何でなのか?

投稿日時 - 2010-01-17 13:43:03

ANo.4

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

すでにMySQLの質問から逸脱しているのでここでは回答しかねますが
パーミッションはLinuxの基本なのできちんと理解した方がよいですね。
パーミッション、グループ、ディレクトリの設定について一から
やり直してみてください

投稿日時 - 2010-01-18 12:16:37

お礼

分かりました。
Linux を一から、勉強し直そうと思います。

いろいろとご意見ありがとうございました。

投稿日時 - 2010-01-18 14:10:58

ANo.3

>mysqlユーザー以外に「書き込み権限」が必要なユーザーとは何ですか?

とくにないと思います。
PC-UNIXの運用ポリシーとしてはデーモンをroot以外の特定ユーザーで
動かすというのがトレンドですから、実行権限者mysqlさえよめる700で
十分だと思います。

投稿日時 - 2010-01-15 12:09:34

お礼

そうなんですか。
ご意見ありがとうございます。

そうすると失敗原因の特定は難しくなってしまいました。
はぁ(落)

投稿日時 - 2010-01-15 15:30:37

ANo.2

>どうして?って感じです。

そういう設定になっているからとしか・・・
たぶん/usr/local/mysql/var/への書き込みがデフォルトユーザーのmysql
にしか許可されていないからだと思います

mysqlをソースから入れるときのざっとした手順としては

(1)アーカイブを持ってきて解凍
(2)./configure 適当なオプション && make
(3)suになってmake install
(4)scripts/mysql_install_dbを実行
(5)cp support-files/my-medium.cnf /etc/my.cnf
(6)mysqlグループをつくって、mysqlユーザーをつくる
(7)chown -R mysql:mysql /usr/local/mysql
(8)/usr/local/mysql/bin/safe_mysqld --user=mysql &

と、わたしの備忘録にかいてあります。

投稿日時 - 2010-01-14 22:52:11

お礼

ありがとうございます。

# chown -R mysql:mysql /usr/local/mysql
する前は、
# ll /usr/local/mysql
...
...
drwx------ 4 mysql mysql 4096 1月 13 21:29 var
となっていました。


>たぶん/usr/local/mysql/var/への書き込みがデフォルトユーザーのmysql
>にしか許可されていないからだと思います
mysqlユーザー以外に「書き込み権限」が必要なユーザーとは何ですか?

投稿日時 - 2010-01-15 10:55:36

ANo.1

とりあえず

chown -R mysql:mysql /usr/local/mysql

としてみてください。

投稿日時 - 2010-01-14 21:20:27

お礼

ご回答ありがとうございます。
おっしゃるとおりにしましたら、簡単に起動しました!

どうして?って感じです。

投稿日時 - 2010-01-14 22:10:32

あなたにオススメの質問