মাইএসকিউএল শুরু করার সময় "ফাইল মাইকিকিএল / প্লাগইন.ফ্রিম খুঁজে পাই না"


17

আমি যখন আমার মাইএসকিউএল সার্ভারটি শুরু করি তখন আমি এই ত্রুটিটি পাই:

/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.

আমি mysql_upgradeএটি পুনর্নির্মাণের জন্য দৌড়েছি এবং এটি পুনর্নির্মাণের জন্য কাজ করে। আমি এটি করার আগে, আমি মাইএসকিউএল সরিয়ে এবং ইনস্টল করেছি। যাইহোক, আমি পুনরায় শুরু করার চেষ্টা করার সময়, আমি একই ত্রুটি পাই। আমি নিশ্চিত যে এটি কোনও অনুমোদিত সমস্যা নয়, কারণ সমস্ত ফাইল এবং ডিরেক্টরি mysqlব্যবহারকারী দ্বারা তৈরি করা হয়েছে ।

আপনি কীভাবে আমাকে এই ত্রুটিটি ঠিক করতে পরামর্শ দিতে পারেন?


সেলিনাক্সও এই সমস্যার কারণ হতে পারে।
রস

উত্তর:


16

যদি আপনার অ-মানক স্থানে মাইএসকিএল ডেটা ডিরেক্টরি থাকে এবং আপনার সিস্টেমে অ্যাপারমোর রয়েছে তবে তা নিশ্চিত করুন যে /etc/apparmor.d/usr.sbin.mysqldআপনার ডেটা ডিরেক্টরিটি শ্বেত তালিকাভুক্ত রয়েছে। কনফিগারেশনটি দেখতে হবে:

/mysql/data/dir/ r, #trailing slash is mandatory
/mysql/data/dir/** rwk,

আপনার কনফিগারেশনে কোনও পরিবর্তন করার পরে অ্যাপারমার ডেমন পুনরায় চালু করতে হবে।


1
apparmorআমাদের সময়ে সময়ে জাগ্রত করতে ফিরে আসে, ঠিক তাই আমরা তাঁর সম্পর্কে ভুলি না ...
রিং Ø

1
কি দারুন! অনেক সময় এই উত্তর খুঁজছেন। ধন্যবাদ!
দিয়েগো আন্দ্রেস ডাজ এস্পিনোজা

আমার ক্ষেত্রে আমি একটি কাস্টম টেম্প dirও ব্যবহার করি এবং আমি দেখতে পেয়েছি যে এর থেকে কিছু লাইন অনুকরণ করার দরকার /etc/apparmor.d/abstractions/user-tmp। আমি যখন এটি owner /mysql-tmp/** rwkl, /mysql-tmp/ r,প্রবেশ করি তখন /etc/apparmor.d/local/usr.sbin.mysqldউবুন্টু 14.04 এ আমার জন্য কাজ শুরু করে।
amacleod

12

আপনি কি নিশ্চিত যে এটি অনুমতি সম্পর্কে নয়? ত্রুটি: 13 :

$ perror 13
OS error code  13:  Permission denied

ব্যবহার করে দেখুন প্রথম জিনিস datadir মালিকানা পরিবর্তন হয় মাইএসকিউএল যদি আপনি চালাতে, উদাহরণস্বরূপ, মাইএসকিউএল ব্যবহারকারীর সাথে মাইএসকিউএল :

chown -R mysql:mysql /path/to/datadir

চেক আরেকটি জিনিস হলে mysqld প্রক্রিয়া মালিক (সম্ভবত MySQL ) গন্তব্য হিসাবে সংজ্ঞায়িত করা জন্য প্রয়োজনীয় অধিকার আছে tmpdir । এবং যদি উপরের কারণে যে কোনও কারণে কার্যকর না হয়, তবে এটি কোথায় এবং কেন অনুমতি পেয়েছে তা মাইএসকিএলডি প্রক্রিয়াটি সনাক্ত করার চেষ্টা করুন :

strace -fp$(/sbin/pidof mysqld) -o /tmp/my_trace.log

মাইএসকিউএল 5.1 থেকে 5.7 এ আপগ্রেড করার সময় আমি একই সমস্যার মধ্যে পড়েছিলাম। এটি প্রদর্শিত হয় যে ব্যবহারকারী mysql / var / lib / mysql ডিরেক্টরিটির মালিকানা হারিয়েছে ।
রব

1

আমি দিমিত্রে একমত এই সমস্যাটি বেশিরভাগ অপ্রতুল অনুমতির কারণে দেখা দেয়। মাইএসকিএল মূল ফোল্ডারের মালিকানা মাইএসকিএলে পরিবর্তন করুন।

chown -R mysql:mysql [mysql root folder]

আপনি যদিও আপনার কাস্টম ব্যবহারকারীর কাছে মাইএসকিএল স্ক্রিপ্টগুলির অনুমতি পরিবর্তন করতে চাইতে পারেন।

chown my_mysql:my_mysql [mysqld etc]

এটি আমার পক্ষে কাজ করেছে।


1

আমার ক্ষেত্রে, ibdata1ফোল্ডার সহ মাইএসকিউএল ডেটা ডিরেক্টরিটি অন্য একটি বিভাজনে রাখার দরকার ibdata1ছিল কারণ আমার খুব দ্রুত বৃদ্ধি পাচ্ছিল এবং মেমরির সমস্যা দেখা দিয়েছে। তার জন্য, আমাকে নীচের মত my.cnf ফাইলটি পরিবর্তন করতে হয়েছিল।

my.cnf ছিল:

datadir         =  /var/lib/mysql

my.cnf এখন:

datadir         = /home/ubuntu/data/mysql

আমি চেষ্টা করেছিলাম,

sudo chown -R mysql:mysql  /home/ubuntu/data/mysql

তবে তবুও উপরের ত্রুটিটি একই রকম তারপরে আমি /etc/apparmor.d/usr.sbin.mysqldফাইলটি পরিবর্তন করার চেষ্টা করেছি । এটা আমার জন্য ভাল কাজ করেছে।

আমাদের নতুন ফোল্ডারে অন্তর্ভুক্ত করা উচিত usr.sbin.mysqld

 # /var/lib/mysql/ r,
 #/var/lib/mysql/** rwk,

উপরের রেখাগুলির পরিবর্তে,

 /home/ubuntu/data/mysql/ r,
 /home/ubuntu/data/mysql/** rwk,

তারপরে মাইএসকিউএল সার্ভার পুনরায় চালু করুন।


1

আপনি যদি সেলইনাক্স চালাচ্ছেন তবে নিম্নলিখিতগুলিও সহায়তা করতে পারে ...

 $ -> ls -lZa
 $ -> chcon -R -v -u system_u -t mysqld_db_t /var/lib/mysql
 $ -> ls -lZa

আমার restorecon -R /var/lib/mysqlজন্য, ডিরেক্টরিটির জন্য SELinux সেটিংস সঠিকভাবে পুনরুদ্ধার করতে সহায়তা করা।
সেবি

0

আমি 5.5 থেকে 5.6 থেকে আপগ্রেড করার পরে আমার এই সমস্যাটি ছিল।

আশ্চর্যজনকভাবে, দেখে মনে হয়েছিল যে mysqlব্যবহারকারীটিকে সরানো হয়েছে এবং পুনরায় তৈরি করা হয়েছে, যা সমস্ত মাইএসকিএল ফাইলগুলি মূলত তাদের অনুমতিগুলি 'হারিয়ে' ফেলেছে ...

আমি মাইএসকিউএল Dir গিয়ে এই খুঁজে পাওয়া যায় (যা আমার ক্ষেত্রে না ডিফল্ট Dir, যেমন করে আমি সরানো হয়েছে ছিল না) এবং বুঝতে পারল যে মালিক শুধু একটি UUID এবং GUID সংখ্যা ... সুতরাং, আমি শুধু দৌড়ে ছিল chown mysql:mysqlসব ডায়ারস এবং ফাইলগুলি এবং ভয়েলা


-1

এই chownসাধারণটি আমার পক্ষেও কাজ করেছে, ক্রাশ প্রক্রিয়া আর হবে না:

sudo chown -R mysql:mysql  /var/lib/mysql

ধন্যবাদ, অ্যাপারমোরের সাথে খেলে জটিল এবং সম্পাদনা করা শক্ত হয়ে যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.