MySQL-এ mysql.user টেবিলের host কলামে % মানে যেকোনো হোস্ট থেকে (রিমোট এক্সেস), আর localhost মানে শুধু লোকাল মেশিন থেকে এক্সেস।
হোস্ট মানগুলো
| হোস্ট মান | অর্থ |
|---|---|
| % | যেকোনো IP/হোস্ট থেকে কানেক্ট করা যাবে (ওয়াইল্ডকার্ড) |
| localhost | শুধু লোকাল মেশিন (Unix socket বা 127.0.0.1) |
| 127.0.0.1 | শুধু IPv4 লুপব্যাক |
| ::1 | শুধু IPv6 লুপব্যাক |
| 192.168.1.% | নির্দিষ্ট সাবনেট থেকে |
| example.com | নির্দিষ্ট হোস্টনেম থেকে |
কারেন্ট ইউজার ও হোস্ট দেখুন
SELECT user, host FROM mysql.user;
নমুনা আউটপুট
+------------------+-----------+
| user | host |
+------------------+-----------+
| Bob | % |
| Manish | % |
| root | % |
| John | localhost |
| Adam Smith | localhost |
| mysql.infoschema | localhost |
+------------------+-----------+
পাসওয়ার্ড পরিবর্তন (MySQL 5.7.6+ / 8.0+)
সিনট্যাক্স
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
উদাহরণ: 'John'@'localhost' এর পাসওয়ার্ড পরিবর্তন
ALTER USER 'John'@'localhost' IDENTIFIED BY 'John123456';
পুরানো সিনট্যাক্স (Deprecated)
SET PASSWORD FOR 'John'@'localhost' = 'John123456'; -- 5.7.6-এও কাজ করে কিন্তু deprecated
-- অথবা
SET PASSWORD FOR 'John'@'localhost' = PASSWORD('John123456'); -- খুব পুরানো
FLUSH PRIVILEGES
MySQL 8.0+ এ ALTER USER স্বয়ংক্রিয়ভাবে প্রিভিলেজ রিলোড করে। পুরানো ভার্সনে বা ম্যানুয়াল প্রিভিলেজ টেবিল এডিট করলে:
FLUSH PRIVILEGES;
রুট পাসওয়ার্ড রিসেট (এডমিন অ্যাক্সেস থাকলে)
-- MySQL 8.0+
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_password';
-- সেশন ভেরিয়েবল দিয়ে (সুপার ইউজার)
SET PASSWORD FOR 'root'@'localhost' = 'new_strong_password';
সুরক্ষা টিপস
%হোস্ট वाले একাউন্ট কম خلق করুন- শক্তিশালী পাসওয়ার্ড ব্যবহার করুন
- নেটওয়ার্ক লেভেলে ফায়ারওয়াল দিয়ে ৩৩০৬ পোর্ট বন্ধ রাখুন
- নियमিত আডিট:
SELECT user, host FROM mysql.user WHERE host = '%';