MySQL-এ DROP USER কমান্ড চালালেও যদি ইউজার mysql.user টেবিলে দেখা যায়, তবে এর কারণ হল হোস্ট মিথস্ক্রিয়া। MySQL-এ ইউজার হোস্টের সাথে জোড়া তৈরি করে সংজ্ঞায়িত হয় (যেমন 'user'@'localhost', 'user'@'%')।
সমস্যা বোঝার উদাহরণ
প্রথমে সকল ইউজার ও হোস্ট দেখি:
SELECT user, host FROM mysql.user;
আউটপুট (আংশিক)
+------------------+-----------+
| user | host |
+------------------+-----------+
| Bob | % |
| Manish | % |
| hbstudent | localhost |
| root | % |
| ... | ... |
+------------------+-----------+
hbstudent ইউজার ড্রপ করি:
DROP USER 'hbstudent'@'localhost';
আবার চেক করি:
SELECT user, host FROM mysql.user;
ফলাফল
+------------------+-----------+
| user | host |
+------------------+-----------+
| Bob | % |
| Manish | % |
| root | % |
| ... | ... |
+------------------+-----------+
hbstudent'@'localhost এখন নেই। কিন্তু যদি hbstudent'@'%ও থাকত, তবে সেটি থাকত।
সমাধান: সঠিক হোস্ট সহ ড্রপ করুন
-- নির্দিষ্ট হোস্টের জন্য
DROP USER 'username'@'localhost';
DROP USER 'username'@'%';
-- অথবা সব হোস্টের জন্য (MySQL 8.0+)
DROP USER 'username'@'%';
DROP USER 'username'@'localhost';
প্রো টিপ: সব হোস্ট একসাথে ড্রপ করতে
SELECT CONCAT('DROP USER \'', user, '\'@\'', host, '\';')
FROM mysql.user
WHERE user = 'target_username'
INTO OUTFILE '/tmp/drop_user.sql';
SOURCE /tmp/drop_user.sql;
যাচাই করুন
SELECT user, host FROM mysql.user WHERE user = 'your_username';
ফলাফল খালি হলে ইউজার সম্পূর্ণ মুছে গেছে।