মাইএসকিউএল ৮.০-এ রুট ব্যবহারকারীকে কীভাবে সমস্ত সুযোগ-সুবিধা দেওয়া যায়


131

চেষ্টা করেছেন

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

পেয়ে

ত্রুটি 1064 (42000): আপনার এসকিউএল সিন্টেক্সে আপনার একটি ত্রুটি রয়েছে; লাইন 1 এ 'মঞ্জুরিপ্রাপ্ত বিকল্পের সাহায্যে' সনাক্তকরণের কাছাকাছি ব্যবহার করতে ডান সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত ম্যানুয়ালটি পরীক্ষা করুন।

দ্রষ্টব্য: পূর্ববর্তী সংস্করণগুলিতে চেষ্টা করার সময় একই কাজ করছে।

চেষ্টাও করেছি

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

পেয়ে

ত্রুটি 1410 (42000): আপনাকে GRANT দিয়ে কোনও ব্যবহারকারী তৈরি করার অনুমতি নেই

মাইএসকিউএল (8.0.11.0) ব্যবহারকারীর নাম / পাসওয়ার্ডটি মূল / রুট।


আপনি কি মাইএসকিএল এর সাথে সরাসরি সংযোগ করছেন বা আপনি এসএসআই ব্যবহার করেন?
হ্যারাল্ড

কমান্ড প্রম্পট থেকে সরাসরি রুট ব্যবহারকারী হিসাবে
প্রবীণ


7
আমিও একই ইস্যুতে আটকে আছি। আমি মাইএসকিএল শেল ব্যবহার করে চালু করছি mysql -u root -p, তারপরে রুট পাসওয়ার্ড প্রবেশ করবো । তারপরে আমি চেষ্টা করেছি GRANT GRANT OPTION ON *.* TO 'root'@'%';এবং আমি ত্রুটিটি পেয়েছিERROR 1410 (42000): You are not allowed to create a user with GRANT
আইমান

উত্তর:


223

মাইএসকিউএল 8 দিয়ে শুরু করে আপনি আর GRANTকমান্ডটি ব্যবহার করে (স্পষ্টভাবে) কোনও ব্যবহারকারী তৈরি করতে পারবেন না । ব্যবহারের ব্যবহারকারী তৈরি পরিবর্তে, দ্বারা অনুসরণ GRANT বিবৃতি:

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

সম্পর্কে সুরক্ষা ঝুঁকি সম্পর্কে সতর্কতাWITH GRANT OPTION , দেখুন:


4
এই কমান্ডটি একটি নতুন ব্যবহারকারী তৈরি করবে। তবে আমি বিদ্যমান রুট ব্যবহারকারীদের জন্য সুযোগ-সুবিধা দিতে চাই। mysql> ব্যবহারকারী 'রুট' @ '%' দ্বারা চিহ্নিত 'রুট'; ক্যোয়ারী ঠিক আছে, 0 সারি আক্রান্ত (0.31 সেকেন্ড) মাইএসকিউএল> এ GRANT সব বিশেষ সুযোগকে অনুদান বিকল্পের সাথে 'রুট' @ '%' করতে; অনুসন্ধান ঠিক আছে, 0 টি সারি প্রভাবিত (0.16 সেকেন্ড) mysql> mysql.user থেকে ব্যবহারকারী নির্বাচন করুন; + ------------------ + | ব্যবহারকারী | + ------------------ + | রুট | | mysql.infoschema | | mysql.session | | mysql.sys | | রুট | + ------------------ + 5 টি সারি সেট (0.00 সেকেন্ড)
প্রবীণ

এখন নামের মূল সহ দুটি ব্যবহারকারী ব্যবহারকারীর টেবিলে উপস্থিত আছেন !! এছাড়াও আমি দূরবর্তীভাবে সংযোগ করতে সক্ষম নই (রুট ব্যবহারকারী)। ------------- বিশদ: প্রকার: com.mysql.jdbc.exception.jdbc4.MySQLNonTransientConnicationException এসকিউএল স্টেট: 08001
প্রবীণ

অদ্ভুত। আপনার প্রশ্নের ত্রুটি বার্তাটি নির্দেশ করে যে এই ব্যবহারকারীর উপস্থিতি নেই। আমি এটি তৈরি করার পরামর্শ দেওয়ার একমাত্র কারণ। এবং একক মাইএসকিউএল ইনস্ট্যান্সে একই ব্যবহারকারী দু'বার পাওয়া অসম্ভব। নাম বা হোস্ট অংশে এগুলি পৃথক হয়।
মাইক লিসচে

4
এই 2 জন ব্যবহারকারী বিভিন্ন হোস্ট থেকে সংযুক্ত হন। SELECT User, Host FROM mysql.user;পরিবর্তে চালান ।
মাইক লিসচে

4
ত্রুটিটি পেয়েছে:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
আদি

41

আমি অনেকগুলি (ভুল) উত্তর দেখতে পাচ্ছি, এটি ঠিক এর মতোই সহজ:

USE mysql;
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL ON *.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

দ্রষ্টব্য: একটি স্ব-তৈরির পরিবর্তে userআপনি rootডাটাবেসের সাথে সংযোগ করতে ব্যবহার করতে পারেন । তবে কোনও অ্যাপ্লিকেশনটিকে ডাটাবেসের সাথে সংযুক্ত করতে ডিফল্ট রুট অ্যাকাউন্ট ব্যবহার করা পছন্দসই উপায় নয়।

বিকল্প সুবিধাগুলি (সাবধানতা অবলম্বন করুন এবং ন্যূনতম সুযোগ-সুবিধার নীতিটি মনে রাখবেন):

-- Grant user permissions to all tables in my_database from localhost --
GRANT ALL ON my_database.* TO 'user'@'localhost';

-- Grant user permissions to my_table in my_database from localhost --
GRANT ALL ON my_database.my_table TO 'user'@'localhost';

-- Grant user permissions to all tables and databases from all hosts --
GRANT ALL ON *.* TO 'user'@'*';

আপনি যদি কোনওভাবে নিম্নলিখিত ত্রুটির দিকে চলে যান:

ত্রুটি 1130 (HY000): হোস্ট '1.2.3.4' এই মাইএসকিউএল সার্ভারের সাথে সংযোগ করার অনুমতি নেই

আপনাকে নিম্নলিখিত দুটি লাইন যুক্ত / পরিবর্তন করতে হবে /etc/mysql/my.cnfএবং মাইএসকিএল পুনরায় চালু করতে হবে:

bind-address           = 0.0.0.0
skip-networking

আপনি কেবল অভিযোগ করার পরিবর্তে এটি কেন কাজ করে না তা বিশদ দিয়ে বলতে পারেন? এইভাবে আমি আপনাকে সাহায্য করতে বা অতিরিক্ত তথ্য পোস্ট করতে পারি।
নীবুলাস্টিক

এই উত্তরটি এমনকি রুট ব্যবহারকারীর সুবিধাসমূহের প্রশ্নটিকেও সাজান না ।
জোসেফ 8

সেই অনুযায়ী উত্তর আপডেট করুন।
নীবুলাস্টিক

4
সেরা উত্তর, এখন এটি GRANT ALL ONমাইএসকিউএল 8.0 এর জন্য। এছাড়াও আমি বিশ্বাস করি যে অক্ষম করার পরিবর্তে আপনি কোনও কমান্ডের bind-addressসাথে বাঁধতে 127.0.0.1এবং অন্তর্ভুক্ত করতে পারেন --protocol=tcp। পারফরম্যান্স দীর্ঘমেয়াদীও তার চেয়ে ভাল localhost
জেসি নিক্লস

আমার এখানে যে সমস্ত উত্তর মিস আছে তা হ'ল ওপ বিস্মিত হয়েছিল যে গ্রান্ট কমান্ড দিয়ে ব্যবহারকারীকে আর তৈরি করা যাবে না। GRANTসুযোগ সুবিধা দেওয়ার ক্ষেত্রে কীভাবে ব্যবহার করবেন তা কখনও জিজ্ঞাসা করা হয়নি । তবে কোনওভাবে লোকেরা যা জিজ্ঞাসা করা হয়েছে এবং এর আগে জবাব দেওয়া হয়েছে তা পড়তে অস্বীকার করে।
মাইক লিসচে

34

1) এটি আমার জন্য কাজ করেছে। প্রথমে একটি নতুন ব্যবহারকারী তৈরি করুন। উদাহরণ: fooপাসওয়ার্ড সহ ব্যবহারকারীbar

> mysql> CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';

2) নীচের কোডটি একটি ব্যবহারকারীর নাম দিয়ে 'foo' দিয়ে প্রতিস্থাপন করুন।

> mysql> GRANT ALL PRIVILEGES ON database_name.* TO'foo'@'localhost';

দ্রষ্টব্য: ডাটাবেস_নাম হল এমন ডাটাবেস যা আপনি অধিকার পেতে চান সব কিছু মানে

3) ব্যবহারকারী foo হিসাবে লগইন করুন

mysql> mysql -u foo -p

পাসওয়ার্ড: বার

4) সিকুইলাইজ থেকে আপনার প্রাথমিক সংযোগটি পিডাব্লু বারের সাহায্যে সেট করা আছে তা নিশ্চিত করুন।


5
এটি এখন পর্যন্ত প্রশ্নের উত্তর দেয় না। এটি বিশ্বব্যাপী অনুমতি সম্পর্কে, এবং ডাটাবেস নির্দিষ্ট অনুমতি সম্পর্কে নয়।
tmuecksch

4

আমার স্পেস:

mysql --version
mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

আমার জন্য কী কাজ করেছে:

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'desired_password';
mysql> GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' WITH GRANT OPTION;

উভয় প্রশ্নের প্রতিক্রিয়া:

Query OK, O rows affected (0.10 sec*)

এনবি: আমি আগে একটি ডাটাবেস তৈরি করেছি (ডিবি_নেম) এবং ডিবিতে সমস্ত টেবিলে দেওয়া সমস্ত সুযোগ-সুবিধাগুলি সহ একটি ব্যবহারকারীর শংসাপত্র তৈরি করছিলাম যা আমি কোথাও পড়েছি এটি একটি সেরা অনুশীলন।


4

নির্দিষ্ট ব্যবহারকারী কেবলমাত্র আপনার মাইএসকিউএলে বিদ্যমান নেই (সুতরাং, মাইএসকিউএল এটি গ্রান্টের সাথে এটি তৈরি করার চেষ্টা করছে যেমন এটি সংস্করণ 8 এর আগে হয়েছিল, তবে এই সংস্করণে প্রবর্তিত সীমাবদ্ধতায় ব্যর্থ হয়)।

এই সময়ে মাইএসকিউএল এর বেশ বোবা, সুতরাং আপনার যদি 'রুট' @ 'লোকালহোস্ট' থাকে এবং 'রুট' @ '%' তে বিশেষাধিকার দেওয়ার চেষ্টা করা হয় তবে এটি কোনও হোস্টের মূল ব্যবহারকারীর জন্য সাধারণীকরণ ধারণার পরিবর্তে বিভিন্ন ব্যবহারকারী হিসাবে বিবেচিত হবে লোকালহোস্ট

ত্রুটি বার্তাটিও বিভ্রান্তিমূলক।

সুতরাং, আপনি যদি ত্রুটি বার্তাটি পেয়ে থাকেন তবে আপনার বিদ্যমান ব্যবহারকারীদেরকে এই জাতীয় কিছু দিয়ে দেখুন

SELECT CONCAT("'", user, "'@'", host, "'") FROM mysql.user;

এবং তারপরে অনুপস্থিত ব্যবহারকারী তৈরি করুন (মাইকের পরামর্শ অনুসারে) বা আপনার GRANT কমান্ডটি প্রকৃত উপস্থিতি ব্যবহারকারী নির্দিষ্টকরণের সাথে সামঞ্জস্য করুন।


এটি আমার জন্য একটি বৈধ সমাধান ছিল! আমি সহজভাবে ব্যবহারকারী @ লাইনটি টাইপ করতে ব্যর্থ হয়েছি। প্রস্তাবিত অন্যান্য সমাধান চেষ্টা করার আগে এটি পরীক্ষা করে নিশ্চিত হন। আমার জন্য এটি ছিল: ব্যবহারকারী তৈরি করুন 'ব্যবহারকারীর'@'%domain.com' এবং তারপরে যখন আমি ব্যর্থ GRANT বিবৃতিটি জারি করি তখন আমার বাক্য গঠনটি 'এক' দ্বারা বন্ধ ছিল। দেখে মনে হচ্ছে এই অনুদানের .... 'ইউজার''''..মন.কম। আমি 'রাখতে' ভুলে গেছি। আমার তৈরি বিবৃতিতে এবং এটি এই সমস্যাটি ঠিক করতে সমস্ত পার্থক্য করেছে।
ওয়ালিসিডস

3

বিষয়টিতে আমার 2 সেন্ট। মাইএসকিউএল ওয়ার্কবেঞ্চ থেকে সংযোগ দেওয়ার চেষ্টা করার সাথে আমার ঠিক একই সমস্যা ছিল। উন্নয়নের জন্য স্থানীয় স্যান্ডবক্স সেট আপ করতে আমি একটি বিটনামি-মাইএসকিএল ভার্চুয়াল মেশিন চালাচ্ছি।

বিটনামির টিউটোরিয়ালটি 'গ্রান্ট অল প্রিভিলেজ' কমান্ড চালানোর জন্য বলেছে:

/opt/bitnami/mysql/bin/mysql -u root -p -e "grant all privileges on *.* to 'root'@'%' identified by 'PASSWORD' with grant option";

এটি পরিষ্কারভাবে কাজ করছে না, মাইক লিশচের উত্তরটি ব্যবহার করে অবশেষে আমি এটি পেয়ে গেলাম।

আমার মনে হয় যা ঘটেছে তা হ'ল মূল%% ব্যবহারকারীর সাথে এটির সাথে ভুল প্রমাণপত্রাদি যুক্ত ছিল। সুতরাং যদি আপনি ব্যবহারকারীর সুবিধাগুলি সংশোধন করার চেষ্টা করেন এবং ভাগ্য না দিয়ে চেষ্টা করেন:

  1. ব্যবহারকারীকে ফেলে দেওয়া হচ্ছে।
  2. আবার ব্যবহারকারী তৈরি করুন।
  3. আপনার my.cnf কনফিগারেশন ফাইলটিতে সঠিক বাঁধাই রয়েছে তা নিশ্চিত করুন। আমার ক্ষেত্রে আমি লাইনটি মন্তব্য করেছি কারণ এটি কেবল একটি স্যান্ডবক্স পরিবেশের জন্য।

মাইএসকিএল কনসোল থেকে:

ব্যবহারকারীদের তালিকা দিন (আপনার সমস্ত ব্যবহারকারী দেখতে সহায়ক):

select user, host from mysql.user;

কাঙ্ক্ষিত ব্যবহারকারীকে ফেলে দিন:

drop user '{{ username }}'@'%';

ব্যবহারকারী এবং অনুদান অনুমতিগুলি তৈরি করুন:

CREATE USER '{{ username }}'@'%' IDENTIFIED BY '{{ password }}';
GRANT ALL PRIVILEGES ON *.* TO '{{ username }}'@'%' WITH GRANT OPTION;

এই আদেশটি চালান:

FLUSH PRIVILEGES;

আপনার মাইএসকিএল কনফিগারেশন ফাইলটি 'মাই সিএনএফ' সন্ধান করুন এবং এমন একটি লাইনের সন্ধান করুন:

bind-address=127.0.0.1

এবং এটি একটি '#' ব্যবহার করে মন্তব্য করুন:

#bind-address=127.0.0.1

তারপরে আপনার মাইএসকিএল পরিষেবাটি পুনরায় চালু করুন।

আশা করি এটি একই সমস্যার সাথে কাউকে সহায়তা করে!


2

আপনার ব্যবহারকারী নাম এবং ডোমেনটি আগের মতো তৈরি। মাইএসকিএল ব্যবহারকারীদের সারণীতে দুটি কলমের দ্বারা অ্যাকাউন্ট নির্বাচন করুন I যদি এটি আলাদা হয় তবে মাইএসকিএল ভাবতে পারে আপনি অনুদানের মাধ্যমে একটি নতুন অ্যাকাউন্ট তৈরি করতে চান, এটি 8.0 সংস্করণের পরে সমর্থিত নয়।


আমি ব্যবহারকারীর মধ্যে একটি টাইপো ছিল এবং এটি কি ঘটেছে!
সারভেসার

1

এটি আমার পক্ষে কাজ করেছে:

mysql> FLUSH PRIVILEGES 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES

1

আমার স্পেস:

mysql --version
mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

আমার জন্য কী কাজ করেছে:

mysql> USE mysql;
mysql> UPDATE User SET Host='%' WHERE User='root' AND Host='localhost';

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

0

ঠিক আছে, আমি ঠিক একই সমস্যা ছিল। রুটে '%' থাকলেও দূর থেকে সংযোগ করতে পারিনি। এখন, my.iniফাইলটি (উইন্ডোতে কনফিগারেশন ফাইল) একবার দেখে bind-addressস্টেটমেন্টটি মিস হয়েছিল।

সুতরাং ... আমি এটি bind-address = *পরে রেখেছি [mysqld]এবং পরিষেবাটি আবার শুরু করেছি। এখন এটা কাজ করছে!


এটি আসলে সঠিক উত্তরের নিকটতম।
জোসেফ 8

0

1. অনুদান প্রদান

mysql> সমস্ত ব্যক্তিগত অনুমতি দিন। অনুদান বিকল্পের সাথে 'রুট' @ '%' করতে;

mysql> ফ্ল্যাশ প্রাইভেটিজ

2. ব্যবহারকারী সারণী পরীক্ষা করুন:

mysql> mysql ব্যবহার করুন

mysql> ব্যবহারকারী থেকে ব্যবহারকারী হোস্ট নির্বাচন করুন এখানে চিত্র বর্ণনা লিখুন

3. কনফিগারেশন ফাইল পরিবর্তন করুন

mysql ডিফল্ট বাইন্ড আইপি : 127.0.0.1, আমরা যদি রিমোট ভিজিট পরিষেবাদিগুলি করতে চাই, তবে কেবল কনফিগারেশন মুছুন

#Modify the configuration file
vi /usr/local/etc/my.cnf

#Comment out the ip-address option
[mysqld]
# Only allow connections from localhost
#bind-address = 127.0.0.1

৪. পরিসেবার পুনরায় চালু করুন

ব্রিউ পরিষেবাগুলি মাইএসকিএল পুনরায় চালু হয়


যদিও এটি কাজ করবে, নির্দিষ্ট প্রভিલિজিজ দেওয়ার সময় আমি উত্পাদনে কোনও মাইএসকিএল উদাহরণ পুনরায় আরম্ভ করব না। পরিবর্তে ফ্লাশ সুবিধাগুলি চেষ্টা করুন।
নীবুলাস্টিক

-1

এটি কাজ করতে পারে:

grant all on dbtest.* to 'dbuser'@'%' identified by 'mysql_password';

4
কোড টস আউট করার পরিবর্তে এটি উপযুক্ত সমাধান কেন তাও ব্যাখ্যা করুন। লক্ষ্য হ'ল শিক্ষিত করা যাতে পরের বার কী করা উচিত তা ওপি জানে, কেবল তাত্ক্ষণিক সমস্যার সমাধান নয়।
টিন ম্যান

-1

আমার এই একই সমস্যা ছিল, যা আমাকে এখানে নিয়ে গেছে। বিশেষত, স্থানীয় উন্নয়নের জন্য, আমি না mysql -u root -pকরেই সক্ষম হতে চাই sudo। আমি কোনও নতুন ব্যবহারকারী তৈরি করতে চাই না। আমি rootএকটি স্থানীয় পিএইচপি ওয়েব অ্যাপ্লিকেশন থেকে ব্যবহার করতে চাই ।

ত্রুটি বার্তাটি বিভ্রান্তিমূলক, কারণ ডিফল্ট ব্যবহারকারীর সুবিধাগুলিতে কোনও ভুল ছিল না'root'@'%'

পরিবর্তে, বেশ কয়েকটি ব্যক্তি অন্যান্য উত্তরে উল্লিখিত হিসাবে সমাধানটি কেবল আমার কনফিগারেশনের bind-address=0.0.0.0পরিবর্তে সেট করা ছিল । অন্যথায় কোনও পরিবর্তন প্রয়োজন হয়নি।bind-address=127.0.0.1/etc/mysql/mysql.conf.d/mysqld.cnf


এটি এমনকি প্রশ্নের পুরোপুরি উত্তর দেয় না।
নীবুলাস্টিক

-2

সেন্টস-এ আমার একই সমস্যা ছিল এবং এটি আমার জন্য কাজ করেছে (সংস্করণ: 8.0.11):

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'

ত্রুটি 1064 (42000): আপনার এসকিউএল সিনট্যাক্সে আপনার একটি ত্রুটি রয়েছে; কাছাকাছি ব্যবহারের জন্য সঠিক সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত ম্যানুয়ালটি পরীক্ষা করুন। 1 লাইনে 'রুট' @ '%' 'তে TO
জিডেফেন্ডার

mysql> সমস্ত ব্যক্তিগত অনুমতি দিন। শিকর পর্যন্ত'@'%'; ত্রুটি 1064 (42000): আপনার এসকিউএল সিনট্যাক্সে আপনার একটি ত্রুটি রয়েছে; কাছাকাছি ব্যবহারের জন্য সঠিক সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত ম্যানুয়ালটি পরীক্ষা করুন। 1
মাইএসকিএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.