User Roles এবং Privileges ম্যানেজমেন্ট

MySQL সিকিউরিটি এবং ইউজার ম্যানেজমেন্ট - মাইএসকিউএল (MySQL) - Database Tutorials

252

MySQL-এ User Roles এবং Privileges ম্যানেজমেন্ট ব্যবহারকারীদের ডেটাবেসে কী ধরনের কাজ করার অনুমতি (access control) প্রদান করে। সঠিকভাবে user roles এবং privileges কনফিগার করলে ডেটাবেস সুরক্ষিত থাকে এবং বিভিন্ন ব্যবহারকারী বিভিন্ন কাজে সীমাবদ্ধ থাকতে পারে।


1. MySQL এ User তৈরি করা

MySQL-এ ব্যবহারকারী (user) তৈরি করার জন্য CREATE USER কমান্ড ব্যবহার করা হয়। সাধারণ সিনট্যাক্স:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • 'username' হলো ব্যবহারকারীর নাম।
  • 'host' হলো হোস্ট যেখানে থেকে ব্যবহারকারী ডেটাবেসে লগইন করতে পারবে (যেমন localhost, 127.0.0.1, বা % যা সকল হোস্টের জন্য প্রযোজ্য)।
  • 'password' হলো ব্যবহারকারীর পাসওয়ার্ড।

উদাহরণ:

CREATE USER 'john'@'localhost' IDENTIFIED BY 'password123';

এটি john নামের একটি ব্যবহারকারী তৈরি করবে যিনি শুধুমাত্র localhost থেকে লগইন করতে পারবেন।


2. User Roles এবং Privileges

MySQL-এ একটি ব্যবহারকারীর একাধিক privileges (অধিকার) থাকতে পারে, যা নির্ধারণ করে সে কী কী কাজ করতে পারবে। কিছু সাধারণ privileges হলো:

  • SELECT - ডেটাবেস থেকে ডেটা দেখতে।
  • INSERT - নতুন রেকর্ড ইনসার্ট করতে।
  • UPDATE - বিদ্যমান রেকর্ড আপডেট করতে।
  • DELETE - রেকর্ড মুছতে।
  • CREATE - নতুন টেবিল বা ডেটাবেস তৈরি করতে।
  • DROP - টেবিল বা ডেটাবেস মুছতে।
  • ALL PRIVILEGES - সমস্ত অধিকার প্রদান।

Privileging Syntax:

GRANT privilege_type ON database_name.table_name TO 'username'@'host';
  • privilege_type - এক বা একাধিক অধিকার (যেমন, SELECT, INSERT, ALL PRIVILEGES ইত্যাদি)।
  • database_name.table_name - কোন ডেটাবেস বা টেবিলের ওপর এই অধিকার প্রযোজ্য।
  • username@host - ব্যবহারকারীর নাম এবং হোস্ট যেখান থেকে তাকে অনুমতি দেওয়া হচ্ছে।

উদাহরণ:

  1. SELECT এবং INSERT অনুমতি দেওয়া:
GRANT SELECT, INSERT ON my_database.* TO 'john'@'localhost';

এটি john ব্যবহারকারীকে my_database ডেটাবেসের সমস্ত টেবিলের জন্য SELECT এবং INSERT অনুমতি দিবে।

  1. সব ধরনের অধিকার দেওয়া:
GRANT ALL PRIVILEGES ON my_database.* TO 'john'@'localhost';

এটি john ব্যবহারকারীকে my_database ডেটাবেসের সমস্ত টেবিলের জন্য সমস্ত অধিকার প্রদান করবে।


3. Privileges দেখতে (SHOW GRANTS)

কোনও ব্যবহারকারীর অধিকার দেখতে SHOW GRANTS কমান্ড ব্যবহার করা হয়:

SHOW GRANTS FOR 'username'@'host';

উদাহরণ:

SHOW GRANTS FOR 'john'@'localhost';

এটি john ব্যবহারকারীর জন্য সমস্ত গ্রান্ট করা অধিকার দেখাবে।


4. User Roles (Role-based Permissions)

MySQL 8.0 এ User Roles বৈশিষ্ট্য যোগ করা হয়েছে, যার মাধ্যমে ব্যবহারকারীকে নির্দিষ্ট রোল প্রদান করা যায়, যা গ্রান্ট করা privileges এর একটি সেট হতে পারে। রোল ব্যবহারকারীদের সহজভাবে permissions পরিচালনা করতে সাহায্য করে।

Role তৈরি করা:

CREATE ROLE 'role_name';

উদাহরণ:

CREATE ROLE 'admin_role';

এটি একটি admin_role নামের রোল তৈরি করবে।

Role-এর জন্য privileges প্রদান:

GRANT ALL PRIVILEGES ON my_database.* TO 'admin_role';

এটি admin_role রোলকে my_database ডেটাবেসের সমস্ত টেবিলের জন্য সমস্ত অধিকার দেবে।

Role ব্যবহারকারীর সাথে যুক্ত করা:

GRANT 'admin_role' TO 'john'@'localhost';

এটি john ব্যবহারকারীকে admin_role রোল প্রদান করবে, যার ফলে তিনি admin_role রোলের অধিকারগুলো পাবেন।


5. User Roles থেকে Privileges মুছে ফেলা (REVOKE)

যদি কোনো ব্যবহারকারীর অধিকার ফিরিয়ে নিতে চান, তবে REVOKE কমান্ড ব্যবহার করা হয়:

REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';

উদাহরণ:

  1. SELECT অধিকার ফিরিয়ে নেওয়া:
REVOKE SELECT ON my_database.* FROM 'john'@'localhost';

এটি john ব্যবহারকারীর থেকে my_database ডেটাবেসের সমস্ত টেবিলের জন্য SELECT অধিকার মুছে ফেলবে।

  1. Role থেকে privileges মুছে ফেলা:
REVOKE 'admin_role' FROM 'john'@'localhost';

এটি john ব্যবহারকারীর কাছ থেকে admin_role রোলটি ফিরিয়ে নেবে।


6. User বা Role মুছে ফেলা (DROP USER, DROP ROLE)

যদি কোনও ব্যবহারকারী বা রোল মুছে ফেলতে চান, তবে DROP USER বা DROP ROLE কমান্ড ব্যবহার করা হয়।

উদাহরণ:

  1. ব্যবহারকারী মুছে ফেলা:
DROP USER 'john'@'localhost';

এটি john ব্যবহারকারীকে localhost থেকে মুছে ফেলবে।

  1. Role মুছে ফেলা:
DROP ROLE 'admin_role';

এটি admin_role রোলটি মুছে ফেলবে।


7. Superuser Privileges

কিছু বিশেষাধিকার দেওয়া ব্যবহারকারীকে সুপারইউজার বা অ্যাডমিনিস্ট্রেটিভ কাজ করার জন্য "SUPER" প্রিভিলেজ দেওয়া হয়।

উদাহরণ:

GRANT SUPER ON *.* TO 'admin'@'localhost';

এটি admin ব্যবহারকারীকে SUPER অ্যাডমিনিস্ট্রেটিভ অধিকার প্রদান করবে।


সারাংশ

MySQL-এ User Roles এবং Privileges ম্যানেজমেন্ট ব্যবহারকারীদের জন্য ডেটাবেস সুরক্ষা নিশ্চিত করে এবং নির্দিষ্ট ব্যবহারকারীদের নির্দিষ্ট ডেটাবেস ও টেবিলের ওপর কার্যকরভাবে অধিকার প্রদান করে। GRANT, REVOKE, CREATE USER, CREATE ROLE, এবং SHOW GRANTS এর মাধ্যমে ব্যবহারকারী এবং রোল ম্যানেজ করা যায়। ACID প্রিন্সিপালসহ সঠিক user management ডেটাবেসের নিরাপত্তা এবং কার্যকারিতা নিশ্চিত করতে গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...