সমস্ত হোস্ট থেকে মাইএসকিউএল রুট অ্যাক্সেস


152

আমি দূরবর্তী উবুন্টু মেশিনে মাইএসকিউএল সার্ভার ইনস্টল করেছি। rootব্যবহারকারী সংজ্ঞায়িত করা হয় mysql.userটেবিল এই ভাবে:

mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| localhost        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1        | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1              | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

আমি rootসাধারণ mysqlক্লায়েন্ট ব্যবহার করে একই দূরবর্তী মেশিন কমান্ড-লাইন ইন্টারফেস থেকে ব্যবহারকারীর সাথে অ্যাক্সেস করতে পারি । এখন আমি ইন্টারনেটে প্রতিটি হোস্টের কাছ থেকে রুট অ্যাক্সেসের অনুমতি দিতে চাই , তাই আমি নিম্নলিখিত সারিটি যুক্ত করার চেষ্টা করেছি (এটি hostকলাম ব্যতীত পূর্ববর্তী ডাম্প থেকে প্রথম সারির হুবহু নকল ):

mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host             | user | password                                  |
+------------------+------+-------------------------------------------+
| %                | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+

তবে আমার ব্যক্তিগত পিসিতে আমার ক্লায়েন্ট আমাকে বলতেই চালিয়ে যাচ্ছে (আমি সার্ভার আইপিটিকে অস্পষ্ট করে রেখেছি):

এসকিউএল ত্রুটি (2003): '46 .xxx '(10061) এ মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না

এটি কোনও প্রমাণীকরণ ত্রুটি বা কোনও নেটওয়ার্ক ত্রুটি কিনা তা আমি বলতে পারি না। সার্ভার ফায়ারওয়ালে আমি 0.0.0.0/0 এর জন্য 3306 / টিসিপি পোর্ট সক্ষম করেছি এবং এটি আমার পক্ষে ঠিক ...


আপনি কি 3306 পোর্টে মেশিনে টেলনেট করতে পারেন
মিহাইসিমি

3
সম্ভবত মাইএসকিউএল ডেমন 46.xxx এ শুনবে না কেবল লোকালহোস্টে। দেখুন bind-addressmy.cnf মধ্যে
বচন Krizhanovsky

1
সুতরাং, বিশ্ব + কুকুরের কাছে এখন আপনার রুট পাসওয়ার্ডের হ্যাশ রয়েছে, যে জ্ঞানটি যে কোনও রুট ইন্টারনেটের কোনও হোস্ট থেকে অ্যাক্সেসযোগ্য এবং আপনার আইপি ঠিকানার প্রথম বাইট। আপনি কি মনে করেন না এটি কেবল একটি ছোট্ট বিষয়?
উদ্যাগাল

উত্তর:


362

এই প্রক্রিয়াটিতে দুটি পদক্ষেপ রয়েছে:

ক) সুযোগ সুবিধাদি। রুট ব্যবহারকারী হিসাবে 'password'আপনার বর্তমান রুট পাসওয়ার্ডের সাহায্যে এই বিকল্পটি প্রয়োগ করে :

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

খ) সমস্ত ঠিকানার সাথে আবদ্ধ:

সবচেয়ে সহজ উপায়টি আপনার ফাইলে লাইনটি মন্তব্য করাmy.cnf :

#bind-address = 127.0.0.1 

এবং mysql পুনরায় আরম্ভ করুন

service mysql restart

ডিফল্টরূপে এটি কেবল লোকালহোস্টের সাথে আবদ্ধ হয়, তবে আপনি যদি লাইনটি মন্তব্য করেন তবে এটি এটি খুঁজে পাওয়া সমস্ত ইন্টারফেসের সাথে আবদ্ধ হয়। লাইনটি মন্তব্য করা সমান bind-address=*

মাইএসকিএল পরিষেবাটি নির্বাহ করতে মূল হিসাবে নির্ধারিত হয়েছে কিনা তা পরীক্ষা করতে:

netstat -tupan | grep mysql

উবুন্টু 16 এর জন্য আপডেট করুন:

কনফিগারেশন ফাইল (এখন)

/etc/mysql/mysql.conf.d/mysqld.cnf 

(কমপক্ষে স্ট্যান্ডার্ড উবুন্টু 16 এ)


5
ঠিক আছে, সমস্যাটি ছিল বাধ্যতামূলক ঠিকানা। ধন্যবাদ. @ দারহাজার আপনাকেও ধন্যবাদ :)
lorenzo-s

2
বর্তমান অনুদানগুলি জিজ্ঞাসা করতে: '' রুট '@'% 'এর জন্য অনুদান দেখান;
রোবস্

5
অন্যান্য ব্যবহারকারীকে অনুমতি দেওয়ার জন্য মূল @% কে অনুমতি দেওয়ার জন্য, পদক্ষেপের (ক) এর পরপরই চালান: অনুদানের বিকল্পটি * প্রদান করুন AN অনুদানের বিকল্পের সাথে 'রুট' @ '%' করতে;
কালেব

1
কনফিগারেশন ফাইলটি হ'ল (এখন) /etc/mysql/mysql.conf.d/mysqld.cnf (কমপক্ষে স্ট্যান্ডার্ড উবুন্টু 16)
jgp

2
দূরবর্তী অবস্থান থেকে সার্ভারের সাথে দূরবর্তীভাবে সংযোগ করতে সক্ষম হওয়ার জন্য, আমি কেবল এটি করার দরকার ছিল:USE mysql; UPDATE user SET Grant_priv='Y' WHERE user='root';
স্বেদারস্কি দিমিত্রি

35

নিম্নলিখিত কোয়েরি চালান:

use mysql;

update user set host='%' where host='localhost'

দ্রষ্টব্য: উত্পাদন ব্যবহারের জন্য প্রস্তাবিত নয়।


2
এটি নিখুঁত সমাধান নয়। এটি কাজ করতে পারে। আমার জন্য এটি একটি ত্রুটি তৈরি করেছে: ERROR 1062 (23000): কী 'PRIMARY' এর জন্য ডুপ্লিকেট এন্ট্রি '%-রুট'
স্ক্রিপ্টলেব

2
@ স্ক্রিপ্টলেবস, 'লোকালহোস্ট' এর হোস্টের সাথে ব্যবহারকারীর টেবিলে একাধিক এন্ট্রি রয়েছে এমন সম্ভাবনা রয়েছে। এবং root.localhost, root.127.0.0.1, রুট সহ একাধিক সারি। সুতরাং আপনি আপডেট করার চেয়ে পৃথক ব্যবহারকারী যুক্ত করা ভাল, এই কারণেই আমি এই উত্তরটির চেয়ে কম আছি।
মাইক পার্সেল

4
ফ্ল্যাশ প্রাইভেলিজ নয়; পরেও প্রয়োজনীয়?
Nom1fan

1
এটা আমার জন্য কাজ করছে। এটা চেষ্টা কর. update mysql.user set host='%' where user='root'
নুর জাজিন

7

কখনও কখনও

বাইন্ড-ঠিকানা = 127.0.0.1

হতে হবে

বাইন্ড-ঠিকানা = *


7

মাইএসকিউএল ৮.০ - ওপেন মাইএসকিউএল কমান্ড লাইন ক্লায়েন্ট
সমস্ত ব্যক্তিগতকৃত অনুদান * * * 'রুট' @ 'লোকালহোস্ট' করতে;
mysql
আপডেট আপডেট করুন mysql.user SET হোস্ট = '%' যেখানে ব্যবহারকারী = 'রুট';
মাইএসকিএল পরিষেবা পুনরায় চালু করুন


4

মার্পিয়াবিবি রাস্পবিয়ান চলমান - বাইন্ড-ঠিকানা সম্বলিত ফাইলটি নির্দিষ্ট করা শক্ত। মারিয়াডিবি - র বিষয়ে এই বিষয়ে কিছু খুব-খুব-সহায়ক-তথ্য নেই

আমি ব্যবহার করতাম

# sudo grep -R bind-address /etc 

জঘন্য জিনিস কোথায় তা সনাক্ত করতে।

উপরের প্রত্যেকে যেমন নির্দেশিত হয়েছে তেমনই আমাকেও ম্যাসকিউএলে সুবিধাগুলি এবং হোস্টগুলি সেট করতে হয়েছিল।

এবং আমার রাস্পবেরি পাইতে দূরবর্তী সংযোগের জন্য 3306 বন্দরটি খোলার জন্য কিছুটা মজা করার সময়ও পেয়েছিল - অবশেষে আইপটেবলস-ক্রমাগত ব্যবহৃত হয়েছিল ।

সব এখন দুর্দান্ত কাজ করে।


1

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

[mysqld]
bind-address = 127.100.10.234

এই আইপিটি একটি এথএক্স কনফিগারেশন থেকে এসেছে।


1
আরও বিস্তারিত যোগ করুন। কোন ফাইল বা কাঠামোর মধ্যে সেটিংটি হওয়া দরকার? দয়া করে এথএক্স কনফিগারেশন সম্পর্কে আরও সুনির্দিষ্ট হন।
বিপিএস

1

আমার ক্ষেত্রে "বাইন্ড-ঠিকানা" সেটিংয়ের সমস্যা ছিল। এই সেটিংটি মন্তব্য মধ্যে my.cnfকরেনি না কারণ আমার ক্ষেত্রে মাইএসকিউএল মধ্যে সাহায্য, কিছু কারণে 127.0.0.1 ডিফল্ট সেট।

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

mysql -h localhost -u myname -pmypass mydb

বর্তমান সেটিংটি পড়ুন:

Show variables where variable_name like "bind%"

আপনি যদি সমস্ত হোস্ট থেকে অ্যাক্সেসের অনুমতি দিতে চান তবে আপনার এখানে 0.0.0.0 দেখতে হবে। যদি এটি না হয় তবে আপনার সম্পাদনা করুন /etc/mysql/my.cnfএবং [মাইএসকিএলডি] বিভাগের অধীনে বাইন্ড-ঠিকানা সেট করুন:

bind-address=0.0.0.0

নতুন সেটিংস বাছাই করতে অবশেষে আপনার মাইএসকিএল সার্ভারটি পুনরায় চালু করুন:

sudo service mysql restart

আবার চেষ্টা করুন এবং পরীক্ষা করে দেখুন যে নতুন সেটিংসটি নেওয়া হয়েছে কিনা।


-2

mysql_update আপনার যা প্রয়োজন তা হল

আমি জানি না যে কেউ কেন এই সমস্যাটিকে সংশোধন করার আরও জটিল পদ্ধতিগুলি অনুসরণ করবে, যখন মাইএসকিএল সদয়ভাবে একটি সরঞ্জাম তৈরি করেছে যা ইতিমধ্যে এটি করে ...

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