সরাসরি ডাটাবেস ম্যানিপুলেট করে আপনি যা চান তা করাও সম্ভব। আপনার অবস্থার উপর নির্ভর করে বিশদগুলি কিছুটা পৃথক হতে পারে তবে প্রাথমিক পদক্ষেপগুলি এরকম হবে:
আপনার উইকিকে কেবল পঠন মোডে সেট করুন । আপনি চাইবেন না যে আপনি যখন ডেটাবেসটি নিয়ে গণ্ডগোল করছেন তখন কেউ উইকি সম্পাদনার চেষ্টা করবেন।
আপনার উইকির একটি ব্যাকআপ নিন। (যাইহোক যে কোনও অপরিবর্তনীয় ভর মুছে ফেলার আগে এটি অত্যন্ত প্রস্তাবিত।
স্প্যামারদের দ্বারা তৈরি সমস্ত ব্যবহারকারীর অ্যাকাউন্টগুলি মুছুন। উপরের প্রশ্নের মতো যদি আপনি একমাত্র বৈধ ব্যবহারকারী হয়ে থাকেন তবে আপনি কেবল এটি করতে পারেন:
DELETE FROM user WHERE user_id != YOUR_USER_ID;
বিকল্পভাবে, স্প্যামাররা উইকিটি আবিষ্কার করার পরে যদি কোনও নতুন বৈধ অ্যাকাউন্ট তৈরি না করা হয়, আপনি সর্বাধিক বৈধ ব্যবহারকারী আইডি নম্বর খুঁজে পেতে পারেন এবং করতে পারেন:
DELETE FROM user WHERE user_id > LAST_VALID_USER_ID;
অথবা আপনি নিজে থেকে বৈধ অ্যাকাউন্টগুলি চয়ন করতে এবং বাকিগুলি মুছতে phpMyAdmin এর মতো প্রশাসক সরঞ্জাম ব্যবহার করতে পারেন।
মুছে ফেলা অ্যাকাউন্টগুলির সাথে যুক্ত অতিরিক্ত ডেটা পরিষ্কার করুন। এটি কঠোরভাবে প্রয়োজনীয় নয়, তবে সেই অনাথ রেকর্ডগুলির কোনও ব্যবহার নেই এবং আপনি যদি এটিগুলি মুছেন না তবে কেবল আপনার ডাটাবেসটিকেই বিশৃঙ্খলা করবে:
DELETE FROM user_groups WHERE ug_user NOT IN (SELECT user_id FROM user);
DELETE FROM user_properties WHERE up_user NOT IN (SELECT user_id FROM user);
DELETE FROM user_newtalk WHERE user_id NOT IN (SELECT user_id FROM user);
কোনও বৈধ ব্যবহারকারীর দ্বারা না করা কোনও সংশোধন মুছুন:
এটি বড় পদক্ষেপ; এটি প্রস্তুত হওয়ার আগে সমস্ত কিছু, তার পরে সবকিছু পরিষ্কার করা হয়। সমস্ত স্প্যাম অ্যাকাউন্ট মুছে ফেলা সহ, আপনি কেবল এটি করতে পারেন:
DELETE FROM revision WHERE rev_user > 0 AND rev_user NOT IN (SELECT user_id FROM user);
যদি আপনার উইকিতে বেনামে সম্পাদনা অক্ষম করা থাকে (যা আমি প্রাইভেট / টেস্ট উইকিগুলির জন্য দৃ strongly়ভাবে প্রস্তাব দিই), সমস্ত স্প্যাম সংশোধন থেকে মুক্তি পাওয়ার জন্য উপরের ক্যোয়ারীটি যথেষ্ট হওয়া উচিত। আপনি যদি অয়ন সম্পাদনা সক্ষম করে থাকেন তবে আপনাকে বেনামে স্প্যাম আলাদাভাবে ছুঁড়ে ফেলতে হবে ।
আপনি যদি নিশ্চিত হন যে আপনার উইকিতে সমস্ত আনোন সম্পাদনা স্প্যাম, তবে কেবলমাত্র ইউআইডি 0 দ্বারা সম্পাদিত যে সম্পাদনাগুলি আমাদের সংরক্ষণ করতে হবে তা হ'ল মিডিয়াউইকি নিজে তৈরি করেছেন (যেমন উইকের বাইরে থেকে আমদানি করা পৃষ্ঠাগুলি)। সেক্ষেত্রে নিম্নলিখিত কোয়েরির মতো কিছু কাজ করা উচিত:
DELETE FROM revision WHERE rev_user = 0 AND rev_user_text BETWEEN '1' AND '999';
এটি ইউআইডি 0 দ্বারা কোনও সংশোধন মুছে ফেলবে যেখানে ইউজারনেমটি আইপিভি 4 ঠিকানার মতো দেখায় (অস্পষ্টভাবে); এটি, এটি 1 এবং 9 এর মধ্যে একটি অঙ্ক দিয়ে শুরু হয়।
যদি আপনার উইকিতে কিছু প্রকৃত বৈধ আনন সম্পাদনা থাকে তবে আপনাকে আরও কিছুটা সৃজনশীল হতে হবে। বৈধ অনিবন্ধিত সম্পাদকদের দ্বারা ব্যবহৃত আইপি ঠিকানার সংখ্যা যদি সীমাবদ্ধ থাকে তবে AND rev_user_text NOT IN ('1.2.3.4', '5.6.7.8', '9.10.11.12')
IP আইপিগুলি মুছে ফেলা থেকে অবদানগুলি বাদ দিতে আপনি কেবল উপরের ক্যোয়ারিতে একটি ধারা যুক্ত করতে পারেন । আপনি AND rev_user_text NOT LIKE '192.168.%'
নির্দিষ্ট উপসর্গের সাথে শুরু করে আইপি ঠিকানাগুলি থেকে সমস্ত সম্পাদনা সংরক্ষণ করার মতো শর্তও যুক্ত করতে পারেন ।
উপরের প্রশ্নগুলি স্প্যাম সংশোধনগুলি থেকে মুক্তি পাবে (যদিও তাদের বিষয়বস্তু এখনও text
টেবিলের মধ্যে থাকবে ) তবে page_latest
কোনও প্রভাবিত পৃষ্ঠাগুলির ক্ষেত্রটি অস্তিত্বহীন পুনর্বিবেচনার দিকে ইঙ্গিত করবে। এটি বিভ্রান্তির কারণ হতে পারে, সুতরাং আমরা এটি আরও ভাল করতে চাই।
প্রথমত, আমাদের page_latest
সকল পৃষ্ঠার জন্য কলামটি মুছতে হবে:
UPDATE page SET page_latest = 0;
এর পরে, আমরা কলামটি পুনরায় তৈরি করব, হয় সংযুক্তিলেস্ট.এফপি রক্ষণাবেক্ষণ স্ক্রিপ্টটি চালিয়ে (প্রস্তাবিত; --fix
প্যারামিটারটি ব্যবহার করতে ভুলবেন না যাতে স্ক্রিপ্টটি আসলে ডাটাবেস পরিবর্তন করে) বা ম্যানুয়াল এসকিউএল কোয়েরি সহ:
UPDATE page SET page_latest =
(SELECT MAX(rev_id) FROM revision WHERE rev_page = page_id);
অবশেষে, আমরা সমস্ত পৃষ্ঠা মুছে ফেলব যার জন্য কোনও বৈধ সংশোধন খুঁজে পাওয়া যায়নি (কারণ সেগুলি স্প্যামারদের দ্বারা তৈরি করা হয়েছিল এবং এর কোনও বৈধ সামগ্রী নেই):
DELETE FROM page WHERE page_latest = 0;
একটি চূড়ান্ত টাচের জন্য, লিঙ্ক, টেক্সট সূচক এবং চলমান সাম্প্রতিক পরিবর্তনগুলি টেবিল পুনর্নির্মাণের rebuildall.php রক্ষণাবেক্ষণ স্ক্রিপ্ট। আপনি মুছে ফেলা স্প্যাম পুনর্বিবেচনার সামগ্রীগুলি ডাটাবেস থেকে মুছে ফেলতে চাইতে পারেন, যাতে তারা সেখানে অপ্রয়োজনীয় স্থান গ্রহণ না করে, purgeOldText.php রক্ষণাবেক্ষণ স্ক্রিপ্টটি চালিয়ে ।
সব শেষ হয়ে গেলে, যা ঠিক আছে তা যাচাই করুন এবং যদি তা হয় তবে কেবল পঠনযোগ্য মোডটি বন্ধ করুন - আশা করি সমস্যাটি পুনরায় সংঘটিত থেকে বাঁচতে কিছু স্প্যাম বিরোধী বৈশিষ্ট্য ইনস্টল করার পরে ।