Ketika saya memulai server MySQL saya, saya mendapatkan kesalahan ini:
/usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
Saya telah berlari mysql_upgrade
untuk membangunnya kembali, dan itu berfungsi untuk membangun kembali. Sebelum saya melakukan itu, saya menghapus dan menginstal MySQL. Namun, ketika saya mencoba memulai kembali, saya mendapatkan kesalahan yang sama. Saya yakin ini bukan masalah izin, karena semua file dan direktori dibuat oleh mysql
pengguna.
Bisakah Anda memberi tahu saya cara memperbaiki kesalahan ini?
Jawaban:
Jika Anda memiliki direktori data mysql di lokasi non-standar dan sistem Anda memiliki apparmor, pastikan
/etc/apparmor.d/usr.sbin.mysqld
direktori data Anda masuk daftar putih. Konfigurasi akan terlihat seperti:Daemon Apparmor harus dimulai ulang setelah Anda melakukan perubahan apa pun untuk mengkonfigurasi.
sumber
apparmor
datang kembali untuk membangunkan kita dari waktu ke waktu, supaya kita tidak melupakannya .../etc/apparmor.d/abstractions/user-tmp
. Ketika saya meletakkanowner /mysql-tmp/** rwkl, /mysql-tmp/ r,
ke/etc/apparmor.d/local/usr.sbin.mysqld
itu mulai bekerja untuk saya pada Ubuntu 14.04.Apakah Anda yakin ini bukan tentang izin? errno: 13 :
Hal pertama yang harus dicoba adalah mengubah kepemilikan datadir MySQL , misalnya, jika Anda menjalankan MySQL dengan pengguna mysql :
Hal lain yang perlu diperiksa adalah apakah pemilik proses mysqld (kemungkinan besar mysql ) memiliki hak istimewa yang diperlukan untuk tujuan yang didefinisikan sebagai tmpdir . Dan jika karena alasan apa pun di atas tidak berhasil, coba lacak proses mysqld untuk melihat di mana dan mengapa izin itu ditolak :
sumber
Saya setuju dengan Dimitre. Masalah ini muncul sebagian besar karena izin yang tidak memadai. Ubah kepemilikan folder root MySql menjadi mysql.
Anda mungkin ingin mengubah izin skrip Mysql ke pengguna khusus Anda.
Ini berhasil untuk saya.
sumber
Dalam kasus saya, saya perlu menempatkan direktori data MySQL termasuk
ibdata1
folder ke partisi lain karena sayaibdata1
tumbuh terlalu cepat dan masalah memori terjadi. Untuk itu, saya harus mengubah file my.cnf seperti di bawah ini.my.cnf tadinya:
my.cnf sekarang:
Saya mencoba,
tetapi masih mendapat kesalahan di atas yang sama. Kemudian saya mencoba mengubah
/etc/apparmor.d/usr.sbin.mysqld
file. Itu bekerja dengan baik untuk saya.Kita harus memasukkan daftar putih ke folder baru kita
usr.sbin.mysqld
.Alih-alih menambahkan baris di atas,
Kemudian restart server MySQL.
sumber
Jika Anda menjalankan SELinux berikut ini dapat membantu juga ...
sumber
restorecon -R /var/lib/mysql
membantu memulihkan pengaturan SELinux dengan benar untuk direktori.Saya mengalami masalah ini setelah memutakhirkan dari 5,5 ke 5,6.
Anehnya, itu tampak seperti
mysql
pengguna telah dihapus dan dibuat kembali, yang telah menyebabkan semua file mysql pada dasarnya 'kehilangan' izin mereka ...Saya menemukan ini dengan pergi ke dir mysql (Yang dalam kasus saya bukan dir default, karena saya telah memindahkannya) dan melihat bahwa pemiliknya hanya nomor uuid dan panduan ... Jadi, saya hanya berlari
chown mysql:mysql
pada semua dir dan file, dan voilasumber
Sederhana ini juga
chown
berfungsi untuk saya, tidak ada lagi proses mogok:Untungnya, bermain dengan apparmor menjadi rumit dan sulit diedit.
sumber