Tidak dapat memulai server MySQL jika file .sock diubah di /etc/mysql/my.cnf

8

Saya telah menginstal server MySQL 5.5 di Ubuntu 12.04. Saya mencoba memulai server MySQL pada file kaus kaki yang berbeda. Secara default MySQL berjalan di /var/run/mysqld/mysqld.sock.

Saya mencoba menjalankan server yang sama di /var/run/mysqld/mysqld1.sock.

Untuk ini saya telah membuat perubahan berikut:

  1. Perubahan ke /etc/mysql/my.cnf
[klien]
    port = 3306
    socket = /var/run/mysqld/mysqld1.sock

[mysqld_safe]
    socket = /var/run/mysqld/mysqld1.sock
    bagus = 0

[mysqld]
    user = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    ** socket = /var/run/mysqld/mysqld1.sock**
    port = 3306
    basedir = / usr
    datadir = / var / lib / mysql
    tmpdir = / tmp
    lc-messages-dir = / usr / share / mysql
  1. Saya juga menambahkan baris berikut ke /etc/apparmor.d/usr/sbin.mysqld

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

    /var/run/mysqld/mysqld[1-9[.sock w,

  2. Saya juga mengubah kepemilikan untuk direktori / var / run / mysqld menjadi pengguna mysql.

    ls -lA / var / run / | grep mysqld

    drwxrwxrwx 2 mysql mysql 40 Des 31 17:24 mysqld

Namun ketika saya mencoba untuk memulai server MySQL saya mendapatkan kesalahan berikut (Sebagai pengguna root)

    $ mysqld --user = mysql --verbose
    121231 18:40:56 [Note] Plugin 'FEDERATED' dinonaktifkan.
    121231 18:40:56 InnoDB: Tumpukan memori InnoDB dinonaktifkan
    121231 18:40:56 InnoDB: Mutex dan rw_locks menggunakan builtin atom GCC
    121231 18:40:56 InnoDB: Tabel terkompresi menggunakan zlib 1.2.3.4
    121231 18:40:56 InnoDB: Menginisialisasi kumpulan buffer, ukuran = 128.0M
    121231 18:40:56 InnoDB: Inisialisasi kolam buffer yang lengkap
    121231 18:40:56 InnoDB: format file yang didukung tertinggi adalah Barracuda.
    121231 18:40:57 InnoDB: Menunggu utas latar dimulai
    121231 18:40:58 InnoDB: 1.1.8 dimulai; nomor urut log 1595685
    121231 18:40:58 [Note] Nama host server (bind-address): '127.0.0.1'; port: 3306
    121231 18:40:58 [Catatan] - '127.0.0.1' diselesaikan ke '127.0.0.1';
    121231 18:40:58 [Note] Soket server dibuat di IP: '127.0.0.1'.
   ** `121231 18:40:58 [GALAT] Tidak dapat memulai server: Bind pada unix socket: Izin ditolak` **

    121231 18:40:58 [GALAT] Apakah Anda sudah memiliki server mysqld lain yang berjalan di soket: 
    /var/run/mysqld/mysqld1.sock?
    121231 18:40:58 [KESALAHAN] Batalkan **
    121231 18:40:58 InnoDB: Mulai shutdown ...
    121231 18:40:58 InnoDB: Shutdown selesai; nomor urut log 1595685
    121231 18:40:58 [Note] mysqld: Shutdown complete

Jika saya memulai server dengan file socket default, saya dapat memulai server. Saya telah mencari di Google tentang masalah ini tetapi hanya menemukan solusi yang menyarankannya sebagai masalah izin. Namun izin tampaknya baik-baik saja. Beberapa orang menyarankan bahwa AppArmor mungkin menjadi penyebab, tetapi saya telah memeriksanya juga - cuplikan disisipkan di atas.

Bisakah seseorang memberikan beberapa petunjuk?

[EDIT]

Saya melihat output berikut di /var/log/syslog.

2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [Catatan] Plugin 'FEDERATED' dinonaktifkan.
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Tumpukan memori InnoDB dinonaktifkan
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes dan rw_locks menggunakan GCC atom builtins
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Tabel terkompresi menggunakan zlib 1.2.3.4
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Menginisialisasi kumpulan buffer, ukuran = 128.0M
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Inisialisasi lengkap dari buffer pool
2 Jan 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: format file yang didukung tertinggi adalah Barracuda.
2 Jan 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: Menunggu utas latar belakang dimulai
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 dimulai; nomor urut log 1595685
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Catatan] Nama host server (bind-address): '127.0.0.1'; port: 3307
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Catatan] - '127.0.0.1' diselesaikan menjadi '127.0.0.1';
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Catatan] Soket server dibuat di IP: '127.0.0.1'.
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [GALAT] Tidak dapat memulai server: Bind pada soket unix: Izin ditolak
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [GALAT] Apakah Anda sudah memiliki server mysqld lain yang berjalan di soket: /var/run/mysqld/mysqld1.sock?
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [KESALAHAN] Batalkan
2 Jan 12:09:36 praveshp-lt mysqld: 
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Memulai shutdown ...
2 Jan 12:09:36 praveshp-lt kernel: [7060.098580] type = 1400 audit (1357108776.036: 33): apparmor = "DENIED" operasi = "mknod" parent = 6702 profil = "/ usr / sbin / mysqld" name = "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" asked_mask = "c" deny_mask = "c" fsuid = 116 ouid = 116
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: Shutdown selesai; nomor urut log 1595685
2 Jan 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [Note] / usr / sbin / mysqld: Shutdown complete

Dikatakan izin ditolak, namun saya tampaknya telah mengatur izin yang tepat.

pengguna117844
sumber
1. Periksa izin pada /usr/local/mysqldan /tmp. Kebutuhan minimal 775. 2. Izin untuk direktori database mysql di bawah /var/lib/folder harus mysql:root ( chown mysql:root mysql)
Rinzwind
1
Saya sudah memeriksa izinnya dan tampaknya baik-baik saja.
user117844
periksa juga /etc/apparmor.d/usr.sbin.mysqldAda perbandingan antara versi lama dan baru di sini: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…
Rinzwind

Jawaban:

5

Dengan melihat baris ini di baris berikut dalam log, tampaknya Apparmor menolak akses.

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

Untuk mengizinkan ini, tambahkan file /etc/apparmor.d/local/usr.sbin.mysqlddengan entri di bawah ini, dan mulai ulang MySQL.

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

Terima kasih kepada Rinzwind karena menunjukkan ini.

pengguna117844
sumber
Ha! : D Butuh sedikit pencarian;)
Rinzwind
Saya telah meningkatkan jawaban Anda untuk menggunakan direktori perubahan lokal Apparmor. Dengan menghindari satu dengan manajemen paket Anda, ini cenderung untuk istirahat nanti ketika melakukan peningkatan dan semacamnya.
gertvdijk