/etc/mysql/my.cnfで.sockファイルが変更されている場合、MySQLサーバーを起動できません


8

MySQLサーバー5.5をUbuntu 12.04にインストールしました。MySQLサーバーを別のsockファイルで起動しようとしています。デフォルトでは、MySQLは/var/run/mysqld/mysqld.sockで実行されます。

/var/run/mysqld/mysqld1.sockで同じサーバーを実行しようとしています。

このため、次の変更を加えました。

  1. /etc/mysql/my.cnfへの変更
[クライアント]
    ポート= 3306
    ソケット= /var/run/mysqld/mysqld1.sock

[mysqld_safe]
    ソケット= /var/run/mysqld/mysqld1.sock
    nice = 0

[mysqld]
    ユーザー= mysql
    pid-file = /var/run/mysqld/mysqld.pid
    **ソケット= /var/run/mysqld/mysqld1.sock**
    ポート= 3306
    basedir = / usr
    datadir = / var / lib / mysql
    tmpdir = / tmp
    lc-messages-dir = / usr / share / mysql
  1. /etc/apparmor.d/usr/sbin.mysqldにも次の行を追加しました

    /var/run/mysqld/mysqld1.sock w、

    /var/run/mysqld/mysqld[1-9].sock w、

  2. また、ディレクトリ/ var / run / mysqldの所有権をmysqlユーザーに変更しました。

    ls -lA / var / run / | grep mysqld

    drwxrwxrwx 2 mysql mysql 40 Dec 31 17:24 mysqld

しかし、MySQLサーバーを起動しようとすると、次のエラーが表示されます(rootユーザーとして)

    $ mysqld --user = mysql --verbose
    121231 18:40:56 [注意]プラグイン 'FEDERATED'が無効になっています。
    121231 18:40:56 InnoDB:InnoDBメモリヒープが無効になっています
    121231 18:40:56 InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します
    121231 18:40:56 InnoDB:圧縮テーブルはzlib 1.2.3.4を使用します
    121231 18:40:56 InnoDB:バッファプールの初期化、サイズ= 128.0M
    121231 18:40:56 InnoDB:バッファプールの初期化が完了しました
    121231 18:40:56 InnoDB:サポートされている最高のファイル形式はバラクーダです。
    121231 18:40:57 InnoDB:バックグラウンドスレッドの開始を待機しています
    121231 18:40:58 InnoDB:1.1.8が開始されました。ログシーケンス番号1595685
    121231 18:40:58 [注]サーバーホスト名(バインドアドレス): '127.0.0.1'; ポート:3306
    121231 18:40:58 [注]-「127.0.0.1」は「127.0.0.1」に解決されます。
    121231 18:40:58 [注]サーバーソケットはIP: '127.0.0.1'で作成されました。
   ** `121231 18:40:58 [エラー]サーバーを起動できません:UNIXソケットにバインド:権限が拒否されました` **

    121231 18:40:58 [エラー]ソケットで別のmysqldサーバーがすでに実行されていますか? 
    /var/run/mysqld/mysqld1.sock?
    121231 18:40:58 [エラー]中止中**
    121231 18:40:58 InnoDB:シャットダウンを開始しています...
    121231 18:40:58 InnoDB:シャットダウンが完了しました。ログシーケンス番号1595685
    121231 18:40:58 [注] mysqld:シャットダウンが完了しました

デフォルトのソケットファイルでサーバーを起動すると、サーバーを起動できます。私はこの問題についてググってみましたが、それが権限の問題であると示唆する解決策を見つけました。ただし、権限は問題ないようです。AppArmorが原因である可能性があることを示唆する人もいますが、私も確認しました-上にスニペットが貼り付けられています。

誰かがいくつかの手がかりを提供できますか?

[編集]

に次の出力が表示され/var/log/syslogます。

Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 [注意]プラグイン 'FEDERATED'が無効になっています。
Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:InnoDBメモリヒープが無効
Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します
Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:圧縮テーブルはzlib 1.2.3.4を使用
1月2日12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:初期化バッファープール、サイズ= 128.0M
Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:バッファープールの初期化が完了しました
Jan 2 12:09:34 praveshp-lt mysqld:130102 12:09:34 InnoDB:サポートされている最も高いファイル形式はバラクーダです。
Jan 2 12:09:35 praveshp-lt mysqld:130102 12:09:35 InnoDB:バックグラウンドスレッドの開始を待機しています
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:1.1.8が開始されました。ログシーケンス番号1595685
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 [注]サーバーホスト名(バインドアドレス): '127.0.0.1'; ポート:3307
1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注]-「127.0.0.1」は「127.0.0.1」に解決されます。
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 [注]サーバーソケットがIPに作成されました: '127.0.0.1'。
1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [エラー]サーバーを起動できません:UNIXソケットにバインド:権限が拒否されました
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 [エラー]ソケット/var/run/mysqld/mysqld1.sockで別のmysqldサーバーがすでに実行されていますか?
1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [エラー]中止
1月2日12:09:36 praveshp-lt mysqld: 
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:シャットダウンを開始しています...
Jan 2 12:09:36 praveshp-lt kernel:[7060.098580] type = 1400 audit(1357108776.036:33):apparmor = "DENIED" operation = "mknod" parent = 6702 profile = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" requested_mask = "c" denied_mask = "c" fsuid = 116 ouid = 116
Jan 2 12:09:36 praveshp-lt mysqld:130102 12:09:36 InnoDB:シャットダウンが完了しました。ログシーケンス番号1595685
1月2日12:09:36 praveshp-lt mysqld:130102 12:09:36 [注] / usr / sbin / mysqld:シャットダウン完了

許可が拒否されたようですが、私は適切な許可を設定したようです。


1. /usr/local/mysqlおよびの権限を確認し/tmpます。最小で775である必要があります。2. /var/lib/フォルダーの下のmysqlデータベースディレクトリのアクセス許可はmysql:rootchown mysql:root mysql)である必要があります
Rinzwind

1
権限を確認したところ、問題ないようです。
user117844 2013年

また、チェック/etc/apparmor.d/usr.sbin.mysqldここに古いものと新しいバージョンの間の比較があります:bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/...
Rinzwind

回答:


5

ログの次の行でこの行を確認すると、Apparmorがアクセスを拒否しているようです。

Jan  2 12:09:36 praveshp-lt kernel: [ 7060.098580] type=1400 audit(1357108776.036:33):
     apparmor="DENIED" operation="mknod" parent=6702 profile="/usr/sbin/mysqld" 
     name="/run/mysqld/mysqld1.sock" pid=7039 comm="mysqld" requested_mask="c"
     denied_mask="c" fsuid=116 ouid=116

これを許可するには、/etc/apparmor.d/local/usr.sbin.mysqld以下のエントリを含むファイルを追加し、MySQLを再起動します。

/var/run/mysqld/mysqld1.sock w,

これを指摘してくれたRinzwindに感謝します。


ハ!:D少し検索をしました;)
Rinzwind

Apparmorのローカル変更ディレクトリを使用するように回答を改善しました。パッケージ管理の問題を回避することで、後でアップグレードなどを行う際に中断する可能性が低くなります。
gertvdijk 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.