মাইএসকিউএল ব্যবহারকারীদের জন্য হোস্টের অনুমতি পরিবর্তন করা হচ্ছে


44

আমি ব্যবহারকারীর / ডাটাবেসের জন্য নিম্নলিখিত অনুদান পেয়েছি

mysql> SHOW GRANTS FOR 'username'@'localhost';
+---------------------------------------------------------------------------+
| Grants for username@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'xxx' |
| GRANT ALL PRIVILEGES ON `userdb`.* TO 'username'@'localhost'              |
+---------------------------------------------------------------------------+

ডাটাবেসে বাহ্যিক অ্যাক্সেস সক্ষম করতে, আমাকে লোকালহোস্টে পরিবর্তন করতে হবে %। এটি করার এক উপায় হ'ল REVOKEসমস্ত অনুমতি এবং এটি আবার সেট করুন। সমস্যাটি হ'ল এখানে একটি পাসওয়ার্ড সেট রয়েছে যা আমি জানি না, তাই যদি আমি অনুমতিটি বাতিল করি তবে আমি এটি আর সেট করতে পারব না।

সেখানে হোস্ট-নেম পরিবর্তন করার জন্য একটি উপায় আছে কি localhostকরতে %অনুমতি নিজেই প্রত্যাহার ছাড়া (এবং ফিরে আবার)?

উত্তর:


59

আপনি যদি mysqlডাটাবেসে অ্যাক্সেস পেয়ে থাকেন তবে আপনি সরাসরি অনুদানের টেবিলগুলি পরিবর্তন করতে পারেন:

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';
FLUSH PRIVILEGES;

... এবং UPDATEএটি আবার পরিবর্তন করার জন্য অ্যানালগাস- স্টেটমেন্ট।

এছাড়াও আপনাকে টেবিলেও পরিবর্তন করতে হবে mysql.db:

UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';

একটু ফিক্স (মাইএসকিউএল সার্ভার সংস্করণ: 5.7.5-M15 - মাইএসকিউএল কমিউনিটি সার্ভার): উভয় phpMyAdmin সেইসাথে মাইএসকিউএল কমান্ড প্রম্পটে থেকে - আপডেট mysqluserসেট Host= 'স্থানীয় হোস্ট' কোথায় userHost= '%' এবং userUser= 'XXXdbusr';
জাদে

1
একটি প্রোডাক্ট ডাটাবেসের জন্য, আমি% এর সাথে সতর্ক থাকব, এটি সুরক্ষা ঝুঁকি হতে পারে। আপনার যদি একাধিক ওয়েবসার্ভার থাকে তবে আপনি '192.168.0।%', বা ''% .example.com '' এর মতো ওয়াইল্ডকার্ড হোস্টগুলিও ব্যবহার করতে পারেন। অন্য বিকল্পটি হ'ল প্রতিটি হোস্টের জন্য একই ব্যবহারকারীকে একাধিকবার যুক্ত করা বা ওয়েবসারভারের জন্য পৃথকভাবে নামকরণকারী ব্যবহারকারী তৈরি করা।
Fx32

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

@ রউলপিন্টো: এই থ্রেডটি phpMyAdmin সম্পর্কিত বলে মনে হচ্ছে, যা এখানে পুরোপুরি প্রাসঙ্গিক নয়, তবে কেবলমাত্র যারা এটি ব্যবহার করেন তাদের পক্ষে লক্ষ্য করা ভাল।
নিকগ্রিম

ভাল নথিভুক্ত বিবরণীর পুনরায় নাম ব্যবহারকারীর
আন্তোনিও বারদাজি

6

স্ট্যাকওভারফ্লোতে সেরা উত্তর RENAME USERযা ব্যবহারকারীর সুবিধাগুলি অনুলিপি করে তা ব্যবহার করার পরামর্শ দেয় ।

ডেটা কন্ট্রোল ল্যাঙ্গুয়েজ (গ্র্যান্ট, রেভোকি, রেইম এবং অন্যান্য হিসাবে বিবৃতি) FLUSH PRIVILEGES;ব্যবহারের প্রয়োজন নেই এবং গ্যালেরা বা গ্রুপ রেপ্লিকেশনের মতো আর্কিটেকচারে প্রয়োজনীয় নয় যেখানে মাইআইএসএএম টেবিলগুলি প্রতিলিপি করা হয়নি।


2

আমি এটিকেও পেরেছি, এবং প্রস্তাবিত সমাধানটি কার্যকর হয়নি, কারণ ডাটাবেসের নির্দিষ্ট সুবিধাগুলিও স্থানান্তরিত হবে না। আমি কি করেছিলাম:

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';
FLUSH PRIVILEGES;

এবং "এটা" কাজ করে?
পিয়ের.ভ্রিয়েন্স

1

সুবিধাগুলি পরিবর্তন করতে, প্রথমে ব্যবহারকারীর সমস্ত অনুমতি প্রত্যাহার করুন

 revoke all privileges on *.* from 'username'@'localhost';

 grant SELECT,INSERT,UPDATE,DELETE ON `db`.* TO 'username'@'%';

 flush privileges;

আমার সমস্যাটি ঠিক তাই, পাসওয়ার্ডের কারণে অনুমতিটি বাতিল করতে পারি না। আমার প্রশ্নটি পড়ুন।
Fu86

আপনি পাসওয়ার্ড হ্যাশটিকে কোনও আপডেটের মাধ্যমে পুরানোটির মতো হতে সেট করতে পারেন। এটি করার জন্য আপনাকে আসল পাসওয়ার্ড জানতে হবে না।
drogart

0

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

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.tables_priv SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.columns_priv SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.procs_priv SET Host='%' WHERE Host='localhost' AND User='username';
UPDATE mysql.proxies_priv SET Host='%' WHERE Host='localhost' AND User='username';
FLUSH PRIVILEGES;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.