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:
- 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
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,
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.
/usr/local/mysql
dan/tmp
. Kebutuhan minimal 775. 2. Izin untuk direktori database mysql di bawah/var/lib/
folder harusmysql:root
(chown mysql:root mysql
)/etc/apparmor.d/usr.sbin.mysqld
Ada perbandingan antara versi lama dan baru di sini: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…Jawaban:
Dengan melihat baris ini di baris berikut dalam log, tampaknya Apparmor menolak akses.
Untuk mengizinkan ini, tambahkan file
/etc/apparmor.d/local/usr.sbin.mysqld
dengan entri di bawah ini, dan mulai ulang MySQL.Terima kasih kepada Rinzwind karena menunjukkan ini.
sumber