কম্পিউটার টিউটোরিয়াল

MySQL-এ DROP USER চালানোর পরেও ইউজার থাকার কারণ ও সমাধান

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';

ফলাফল খালি হলে ইউজার সম্পূর্ণ মুছে গেছে।

  1. MySQL টেবিলে কোনো মান কলামে আছে কিনা যাচাই করা

  2. MySQL-এ SHOW GRANTS দিয়ে নির্দিষ্ট ইউজারের সব 권한 (Grants) দেখানো

  3. MySQL টেবিলের জন্য 'user' শব্দ ব্যবহার করা যাবে কি?

  4. MySQL에서 사용자 유형별 인원 수 세기