ডাটাবেসে ** সমস্ত ** সুযোগ প্রদান করুন


611

আমি ডাটাবেস তৈরি করেছি, উদাহরণস্বরূপ 'মাইডিবি'।

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

এখন আমি সর্বত্র থেকে ডাটাবেসে লগইন করতে পারি, তবে সারণী তৈরি করতে পারি না।

কীভাবে সেই ডেটাবেস এবং (ভবিষ্যতে) সারণীতে সমস্ত সুযোগ দেওয়া যায়। আমি 'মাইডিবি' ডাটাবেসে টেবিল তৈরি করতে পারি না। আমি সবসময় পেতে:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

10
আপনি যখন CURRENT_USER এর জন্য অনুদান দেখান তখন আপনি কী পাবেন;
ডায়াগোনালব্যাটম্যান

5
আপনি কি দৌড়ানোর চেষ্টা করেছেন FLUSH PRIVILEGES?
রোমেন

1
@ অ্যান্ডি "CURRENT_USER এর জন্য অনুদান দেখান" এর জন্য ধন্যবাদ; - এটি আমাকে আমার টাইপো দেখতে সহায়তা করে।
মারিওশ

2
@ রোমান, flush privilegesআপনার grantকমান্ড ব্যবহার করার সময় প্রয়োজন হয় না । x4
পেসারিয়ার 10

2
আপনি ব্যবহার করা উচিত FLUSH PRIVILEGES;শুধুমাত্র আপনি অনুদান টেবিল সরাসরি যেমন বিবৃতি ব্যবহার পরিবর্তন INSERT, UPDATEঅথবাDELETE
simhumileco

উত্তর:


910
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

এইভাবে আমি আমার "সুপার ব্যবহারকারী" সুবিধাগুলি তৈরি করি (যদিও আমি সাধারণত কোনও হোস্ট নির্দিষ্ট করি)।

গুরুত্বপূর্ণ তথ্য

যদিও এই উত্তরটি অ্যাক্সেসের সমস্যার সমাধান করতে পারে, WITH GRANT OPTIONএমন একটি মাইএসকিউএল ব্যবহারকারী তৈরি করে যা অন্যান্য ব্যবহারকারীর অনুমতিগুলি সম্পাদনা করতে পারে

গ্রান্ট বিকল্প বিকল্পটি আপনাকে অন্য ব্যবহারকারীদের দিতে বা অন্য ব্যবহারকারীদের কাছ থেকে আপনার নিজের অধিকারমুক্ত সেই সুযোগগুলি অপসারণ করতে সক্ষম করে।

সুরক্ষার কারণে, জনসাধারণের কাছে (যেমন একটি ওয়েবসাইট) অ্যাক্সেস থাকবে এমন কোনও প্রক্রিয়ার জন্য আপনার এই ধরণের ব্যবহারকারীর অ্যাকাউন্টটি ব্যবহার করা উচিত নয়। আপনি সেই ধরণের ব্যবহারের জন্য কেবল ডাটাবেস সুবিধাসহ একটি ব্যবহারকারী তৈরি করার পরামর্শ দেওয়া হচ্ছে ।


35
@ রোমেন আপনি এখানে টেবিলে সত্যিই প্রচুর পরিমাণে আনছেন না - আমি আমার ব্যবহারকারীদের মাইউসার নাম রাখি না - প্রশ্নকারী কেবল উদাহরণ হিসাবে একটি ব্যবহারকারীর নাম ব্যবহার করে যাচ্ছিল - আমি ধারাবাহিকতার জন্য একই উদাহরণ ব্যবহারকারীর নামটি ব্যবহার করেছি।
ডায়াগোনালব্যাটম্যান

22
যথেষ্ট ফর্সা। তবে একজনকে অন্যান্য লোকদের সম্পর্কেও ভাবতে হবে, সম্ভবত নবজাতকরা, পরে এই প্রশ্নটি পড়তে পারে। এটা কি এসও এর পয়েন্ট নয়?
রোমেন

7
আমি এই উত্তরটি ভাল বলে মনে করি না। এটি সমস্ত ডাটাবেস এবং সমস্ত টেবিলগুলিতে "অ্যাডমিনিস্ট্রেটর" কে বিশেষাধিকার দেয়, যা চাওয়া হয়েছিল তা নয় not
ডাকস

5
আমি এই উত্তরটি mydb বলতে * সম্পাদনা করেছি instead পরিবর্তে , যেহেতু এটি এত ব্যাপকভাবে উর্ধ্বমুখী এবং দেখা উত্তর, এবং আমি বিশ্বাস করি সুরক্ষা - বিশেষত মাইএসকিউএলের মতো পোলিশ টারড সহ - এটি অত্যন্ত গুরুত্বপূর্ণ। একজন আশা করবেন যে কোনও পাঠক অনুলিপি এবং পেস্টের চেয়ে উত্তরের বিশদটি তদন্ত করবে তবে আমি মাঝে মাঝে বাস্তবে থাকতে পছন্দ করি।
জর্ডান

4
@ রোমইন ব্যবহারকারীরা একটি মাইএসকিউএল সার্ভার স্থাপন করছে তারা বুঝতে পারে যে myuserতাদের নিজস্ব কাস্টম ব্যবহারকারীর নামটি দিয়ে প্রতিস্থাপন করা উচিত to
অ্যাসোথার

524

এটি পুরানো প্রশ্ন তবে আমি মনে করি না গৃহীত উত্তরটি নিরাপদ। একটি সুপার ব্যবহারকারী তৈরি করার পক্ষে এটি ভাল তবে আপনি যদি কোনও একক ডাটাবেসে সুবিধা দিতে চান তবে ভাল নয়।

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

%সকেট যোগাযোগগুলি কভার করে না বলে মনে হচ্ছে, এটি localhostWITH GRANT OPTIONশুধুমাত্র সুপার ব্যবহারকারীর পক্ষে ভাল, অন্যথায় এটি সাধারণত সুরক্ষা ঝুঁকিপূর্ণ।

মাইএসকিউএল 5.7+ এর জন্য আপডেটগুলি দেখে মনে হচ্ছে এটি সম্পর্কে সতর্ক করে:

সুবিধাগুলি ব্যতীত বিদ্যমান ব্যবহারকারীর বৈশিষ্ট্যগুলি পরিবর্তনের জন্য GRANT বিবৃতি ব্যবহার করা হ্রাস করা হয়েছে এবং ভবিষ্যতে প্রকাশে অপসারণ করা হবে। এই অপারেশনের জন্য ALTER USER বিবৃতি ব্যবহার করুন।

সুতরাং পাসওয়ার্ড নির্ধারণ আলাদা কমান্ডের সাথে হওয়া উচিত। @ ভীতিজনক-ভোমব্যাট থেকে মন্তব্য করার জন্য ধন্যবাদ।

ALTER USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

আশাকরি এটা সাহায্য করবে.


26
WITH GRANT OPTIONসমস্ত ( *) এর পরিবর্তে নির্দিষ্ট ডেটাবেস অন্তর্ভুক্ত এবং লক্ষ্যবস্তু না করার জন্য +1 ।
অ্যাডোনিস কে। কাকুলিডিস

@ ইয়ানবসিয়েরেস "% এর ব্যাকরণটি সকেট যোগাযোগগুলিকে আবৃত করে না বলে মনে হয় যে, লোকালহোস্টের জন্য" এটি অস্পষ্ট। এর আসলে কী অর্থ?
থুফির

2
@ তুফির, অনুসন্ধান করুন unix sockets। ব্যবহার করার সময় localhostলিনাক্স myslq ক্লায়েন্ট একটি UNIX সকেট পরিবর্তে সার্ভারে কোনও TCP সংযোগ ব্যবহার করার চেষ্টা করছে।
akostadinov

1
মনে রাখবেন যে আপনি সম্ভবত বাইরের আইপি ঠিকানাগুলি থেকে, বা স্থানীয় সাবনেটের অন্যান্য কম্পিউটার থেকে অ্যাক্সেস না চাইলে আপনার প্রথম কমান্ডের প্রয়োজন হবে না। যদি আপনি তা করেন তবে আমি মাইউজার @% এর পরিবর্তে myuser@192.168.0.1 (স্থানীয় সাবনেটের একটির জন্য) যেমন আপনি অনুমতি দিতে চান সেই নির্দিষ্ট আইপি ঠিকানাগুলিতে লক্ষ্যযুক্ত কমান্ডগুলি ব্যবহার করার পরামর্শ দেব।
ইভান

1
mysql> 'নতুন_পাসওয়ার্ড' এর মাধ্যমে ব্যবহারকারী 'রুট' @ 'লোকালহোস্ট' সনাক্ত করুন;
ভীতিজনক Wombat

121

এটি কিছু লোকের জন্য সহায়ক হবে:

মাইএসকিউএল কমান্ড লাইন থেকে:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

দুঃখের বিষয়, এই সময়ে নতুন ব্যবহারকারীর ডেটাবেসগুলির সাথে কিছু করার অনুমতি নেই। আসলে, যদি নতুন ব্যবহারকারী এমনকি লগইন করার চেষ্টা করে (পাসওয়ার্ড, পাসওয়ার্ড সহ) তবে তারা মাইএসকিউএল শেলটি পৌঁছাতে সক্ষম হবে না।

সুতরাং, প্রথমে কাজটি হ'ল ব্যবহারকারীকে তাদের প্রয়োজনীয় তথ্যে অ্যাক্সেস সরবরাহ করতে হবে।

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

এই কমান্ডের নক্ষত্রগুলি ডাটাবেস এবং সারণি (যথাক্রমে) উল্লেখ করে যে তারা অ্যাক্সেস করতে পারে - এই নির্দিষ্ট কমান্ডটি ব্যবহারকারীকে সমস্ত ডাটাবেস এবং সারণী জুড়ে সমস্ত কাজ পড়তে, সম্পাদনা করতে, সম্পাদন করতে এবং সম্পাদনের অনুমতি দেয়।

আপনার নতুন ব্যবহারকারীদের জন্য আপনি যে অনুমতিগুলি সেট আপ করতে চান তা একবার চূড়ান্ত করে নিলে, সর্বদা সমস্ত সুযোগ-সুবিধা পুনরায় লোড করতে ভুলবেন না to

FLUSH PRIVILEGES;

আপনার পরিবর্তনগুলি এখন কার্যকর হবে।

আরও তথ্যের জন্য: http://dev.mysql.com/doc/refman/5.6/en/grant.html

আপনি যদি কমান্ড লাইনের সাথে স্বাচ্ছন্দ্য বোধ করেন না তবে আপনি মাইএসকিউএল ওয়ার্কবেঞ্চ , নাভিচ্যাট বা এসকিউএলওগের মতো ক্লায়েন্ট ব্যবহার করতে পারেন


5
flush privilegesআপনি grantকমান্ড ব্যবহার করার সময় প্রয়োজন হয় না । x4
পেসারিয়ার

1
হয় আপনি লিনোড

আমাকে আবার GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;(অদ্ভুত ..., তবে সত্য)
rubo77

30

 1. ডাটাবেস তৈরি করুন

CREATE DATABASE db_name;

 2. ডাটাবেস db_name এর জন্য ব্যবহারকারীর নাম তৈরি করুন

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

 ৩. ডাটাবেসটি ব্যবহার করুন

USE db_name;

 ৪. অবশেষে আপনি ডাটাবেস ডিবি_নেমে রয়েছেন এবং তারপরে ক্রিয়েড, সিলেক্ট এবং সন্নিবেশ করানোর মতো কমান্ড কার্যকর করুন।


আজ এটি আমাকে সতর্কতা দিয়েছে "সুবিধাগুলি ব্যতীত বিদ্যমান ব্যবহারকারীর বৈশিষ্ট্যগুলি পরিবর্তনের জন্য গ্রান্ট স্টেটমেন্টটি ব্যবহার করা হ্রাস করা হয়েছে এবং ভবিষ্যতে প্রকাশে অপসারণ করা হবে। এই ক্রিয়াকলাপের জন্য বিকল্প ব্যবহারকারী বিবৃতি ব্যবহার করুন।" তাহলে কি আমার বুঝতে হবে যে এখন আমার ব্যবহারকারী তৈরি করা উচিত, তারপরে সুযোগ-সুবিধা দেওয়া উচিত?
felwithe

আপনি কীভাবে মাইএসকিউএলকে বলতে পারেন যাতে usernameসমস্ত সুবিধাগুলি থাকা উচিত db_nameকিন্তু DROP db_name;অধিকার নয়?
টোনিক্স

21

এই এসকিউএল সমস্ত ডাটাবেসে অনুদান দেয় তবে কেবলমাত্র বেসিক সুবিধাদি। তারা ড্রুপাল বা ওয়ার্ডপ্রেসের জন্য যথেষ্ট এবং নব্বই হিসাবে, স্থানীয় প্রকল্পগুলির জন্য একজন বিকাশকারীর অ্যাকাউন্টের অনুমতি দেয়।

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

20
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

স্কিমাতে সুবিধার্থে কাজ করে :)

Ptionচ্ছিক: mypasswdআপনি যুক্ত করার পরেWITH GRANT OPTION


15

আমি এটিকে কেবল যুক্ত GRANT OPTIONকরেই কাজ করতে সক্ষম হতে পারি , তা ছাড়া সর্বদা অনুমতি অস্বীকার ত্রুটি প্রাপ্ত না করে

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;

14

হ্যালো আমি এই কোডটি মাইএসকিএলে সুপার ব্যবহারকারী হিসাবে ব্যবহার করেছি

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO mysql@'%'
    WITH GRANT OPTION;

এবং তারপর

FLUSH PRIVILEGES;

11
flush privilegesআপনি grantকমান্ড ব্যবহার করার সময় প্রয়োজন হয় না । x4
পেসারিয়ার

দ্রষ্টব্য: GRANTমাইএসকিউএল এর সংস্করণগুলির মধ্যে পরিবর্তিত হবার জন্য সঠিক তালিকা ।
রিক জেমস

6

দূরবর্তী সার্ভার থেকে কেবল মাইডিবি ডাটাবেসে অ্যাক্সেস করতে

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

দূরবর্তী সার্ভার থেকে সমস্ত ডাটাবেসে অ্যাক্সেস করতে।

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';

4

ডাটাবেসে সমস্ত প্রাইভেলিজ প্রদান করতে: mydbব্যবহারকারীর কাছে: myuserকেবল চালানো:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

বা:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

PRIVILEGESশব্দ প্রয়োজন নেই।

এছাড়াও আমি জানি না কেন অন্যান্য উত্তরগুলি IDENTIFIED BY 'password'কমান্ডের শেষের দিকে রাখার পরামর্শ দেয়। আমি বিশ্বাস করি যে এটির প্রয়োজন নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.