web-dev-qa-db-ja.com

MySQL(mysqld)が「/ var / run / mysqld」ディレクトリを作成して書き込むようにするにはどうすればよいですか?

Linuxでこれらの特権がどのように機能するのか、私には本当にわかりません。

MySQLサーバーを起動するには、mysqldプログラムは.pidファイルを/var/run/mysqld/ディレクトリに書き込む必要があります。しかし、 FHS(Filesystem Hierarchy Standard) から次のことがわかります。

このディレクトリの下のファイルは、ブートプロセスの開始時にクリアする必要があります(必要に応じて削除または切り捨て)。

mysqldto/mysqldの下に/var/run/ディレクトリを作成します_every timeMySQLサーバーが起動します。

/varの所有者とグループはrootであり、/varは次のとおりです。

drwxr-xr-x  13 root root  4096 may 20 23:41 var.

また、FHS(Filesystem Hierarchy Standard)から次のこともわかっています。

/ var/runは、権限のないユーザー(rootまたはデーモンを実行しているユーザー)に対して書き込み不可にする必要があります。ユーザーがこのディレクトリに書き込むことができる場合、これは重大なセキュリティ問題です。

したがって、mysqldはディレクトリに書き込むことができません。実際、mysqldを実行してMySQLサーバーを起動すると、常にエラーが発生します。

user@user-desktop:~$ Sudo mysqld --console
130720 23:43:02 [ERROR] Can't start server : Bind on unix socket: Permission denied
130720 23:43:02 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
130720 23:43:02 [ERROR] Aborting

問題は、標準で書き込み用にこのディレクトリを開くことを禁止している場合、mysqld.pidファイルを/var/run/mysqld/に書き込む方法です。これは明らかな矛盾ですよね?

私の質問は:mysqld/var/run/mysqld/ディレクトリの権限を変更せずに/var/runにファイルを作成して書き込むようにする方法ですか?今のところ、私は唯一の方法を見ています:

user@user-desktop:$ Sudo chmod a+w /var

しかし、それは規格によって禁止されています。

3
Green

/ var/runは、非特権ユーザーに対して書き込み不可にする必要がありますは、rootおよびSudoアカウント(これらは特権ユーザーであるため)が書き込みを許可されることを意味します。

MySQLの起動スクリプトはルートとして起動され、/var/runにファイルまたはディレクトリを作成できます。そして、このファイルは、構成で設定された許可で作成されます。これは/etc/my.cnfである必要があり、 このようなもの になります。

[mysqld]
user   = mysql
socket = /var/lib/mysql/mysql.sock

/etc/init.dにmysqlに関連するものがあるはずです。MySQLサーバーをインストールした後、次のようになります。

enter image description here

MySQL Clientをインストールしていませんか?

3
Rinzwind