ব্যবহারকারীর জন্য মাইএসকিএল সার্ভারে দূরবর্তী অ্যাক্সেসের অনুমতি কীভাবে দেবেন?


118

আমি SHOW GRANTSযদি আমার মাইএসকিএল ডাটাবেসে করি তবে আমি পাই

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' 
    IDENTIFIED BY PASSWORD 'some_characters' 
    WITH GRANT OPTION

যদি আমার ভুল না হয় তবে এর root@localhostঅর্থ ব্যবহারকারী rootকেবলমাত্র সার্ভারটি অ্যাক্সেস করতে পারবেন localhost। আমি কীভাবে মাইএসকিউএলকে rootঅন্য প্রতিটি মেশিন (একই নেটওয়ার্কে) থেকে এই মাইএসকিএল সার্ভারটি অ্যাক্সেস করার অনুমতি দিতে বলব ?


6
সরল পরিবর্তনতে সর্বজনীন নেটওয়ার্কে রুট অ্যাক্সেস প্রদান localhostকরা %হবে। ভুলে যাবেন নাflush privileges;

6
রুট @% যুক্ত করা আপনাকে প্রচুর ঝুঁকির সামনে ফেলে দেয় এবং করা উচিত নয়। আমি জানি এটি একটি পুরানো পোস্ট তবে সেই সতর্কতাটি এখানে থাকা উচিত। রুট অ্যাকাউন্ট হ'ল আক্রমণকারীদের দ্বারা চিহ্নিত প্রথম অ্যাকাউন্ট এবং মূল @ '%' এর অর্থ মূল ব্যবহারকারী যে কোনও জায়গা থেকে আপনার মাইএসকিউএল অ্যাকাউন্টের সাথে সংযোগ করতে পারবেন। মন্তব্যগুলিতে কভার করার মতো অনেক কিছুই রয়েছে তবে আপনার যতটা সম্ভব @ '%' ব্যবহারকারীর অপসারণের চেষ্টা করা উচিত এবং এতে যে কোনও ঘোষণা করা হয়েছে তাদের খুব সীমিত সুযোগ-সুবিধা থাকা উচিত। যাই হোক না কেন, আপনার অবশ্যই মূল @ '%' যুক্ত করা উচিত নয় এবং আপনার অ্যাপ্লিকেশনগুলিতে সেই অ্যাকাউন্টটি উপস্থিত থাকার আশা করা উচিত নয়।
দামন


ওহে লোকেরা, এই কমান্ডের পাসওয়ার্ড স্ট্রিংটি সরিয়ে ফেলা উচিত ... এটি একটি ত্রুটি ঘটাচ্ছে ... কেবল পরিচয় দিয়ে এবং তারপরে পাসওয়ার্ড দিয়েই শেষ করুন।
মারিও ডি সা ভেরা

উত্তর:


143

এটি কোনও মেশিন থেকে একই পাসওয়ার্ডের সাথে রুট অ্যাক্সেসের মঞ্জুরি দেয় *.example.com:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' 
    IDENTIFIED BY 'some_characters' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

যদি নাম রেজুলেশন কাজ না করে, আপনি আইপি বা সাবনেটের মাধ্যমে অ্যাক্সেসও দিতে পারেন:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
    IDENTIFIED BY 'some_characters'  
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

মাইএসকিউএল GRANTসিনট্যাক্স ডক্স।


15
আমি ধরে নিচ্ছি যে ...TO 'root'@'%' IDENTIFIED...কোথাও থেকে অ্যাক্সেস দেওয়া হবে?
অউফউইন্ড

3
আমি কমান্ডটি মাইএসকিএলে সম্পাদন করেছি, তবে SHOW GRANTSএখনও তা দেখায় (আমার প্রশ্নের মতো)। এমনকি আমি করেছি FLUSH PRIVILGES। আমি কি কিছু মিস করছি?
অউফউইন্ড

@ অউফউইন্ড আমি আপনাকে ছাড়াও আর কোনও কিছুর দরকার পড়তে চাই না FLUSH PRIVILEGES। লগআউট এবং ফিরে প্রবেশ করুন, যদি আপনার অ্যাক্সেস থাকে তবে mysqld পরিষেবাটি পুনরায় চালু করুন। এছাড়াও, নিশ্চিত হয়ে নিন যে skip networkingলাইনটি আপনার সক্রিয় নয় my.cnfযদিও এটি আপনার SHOW GRANTSএখনও একই না হওয়ার জন্য অ্যাকাউন্ট করে না।
মাইকেল বারকোভস্কি

@ অউফউইন্ড এটি ব্যর্থ হওয়ায় এর পরিবর্তে আপনাকে সার্ভারফল্ট.কম এ জিজ্ঞাসা করতে হতে পারে।
মাইকেল বারকোভস্কি

10
মনে রাখবেন যে IDENTIFIED BY PASSWORDএকটি হ্যাশড 41-সংখ্যার হেক্সাডেসিমাল সংখ্যা সহ রয়েছে। IDENTIFIED BY 'password'আপনি সরাসরি পাসওয়ার্ড অন্তর্ভুক্ত করতে চাইলে ব্যবহার করুন ।
রেনলফ

94

চেষ্টা করুন:

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

1
আম্মু যা Pa55w0rdবোকা বলে মনে হচ্ছে, আপনি যে পাসওয়ার্ডটি বানাতে চান তা আমাকে বলবেন না। আপনার MySQL লগইন করার চেষ্টা করে এমন প্রত্যেকের জন্য?
এসএসপোক

23
"এই জায়গায় আপনার পড়া ভাল পাসওয়ার্ড রাখুন" বলে এটি সাধারণত পাসওয়ার্ডে কোনও স্থানধারককে দিতে ব্যবহৃত হত।
মোশি বিরি

2
এই কমান্ডটি যথাযথ সতর্কতার সাথে আপনি যে অ্যাপ্লিকেশনগুলিতে কেবল সুরক্ষার উদ্বেগ নয়, যেমন দেব বা কিউএর জন্য এটি ব্যবহার করতে চান for
জ্ঞানহীন

যদি এটি ম্যাকের সাথে কাজ করে না তবে আপনি যে কম্পিউটারটির জন্য বিশেষাধিকার দিচ্ছেন তার নাম 'রুট' @ 'লোকালহোস্ট' বা / ইত্যাদি / হোস্ট নামের সাথে 'রুট' @ '%' পরিবর্তন করার চেষ্টা করে।
মোশি বিরি

2
FLUSH PRIVILEGES;
এটির

44

প্রথম mysql এবং তারপরে রুট ব্যবহারকারী বাইরে থেকে অ্যাক্সেসযোগ্য তা নিশ্চিত করার জন্য আপনাকে কয়েকটি পদক্ষেপ নিতে হবে:

  1. অক্ষম skip-networkingমধ্যে my.cnf(অর্থাৎ, /etc/mysql/my.cnf)

  2. bind-addressইন-এর মান পরীক্ষা করুন my.cnf, যদি এটি সেট করা থাকে তবে 127.0.0.1আপনি 0.0.0.0সমস্ত আইপি বা আপনি যে আইপি থেকে সংযোগ করতে চান তা থেকে অ্যাক্সেসের অনুমতি দিতে এটি পরিবর্তন করতে পারেন ।

  3. কোনও আইপি থেকে মূল ব্যবহারকারীকে দূরবর্তী অ্যাক্সেসের অনুমতি দিন (বা এর পরিবর্তে আপনার আইপি নির্দিষ্ট করুন %)

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
        IDENTIFIED BY 'your_root_password'
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;`
  4. মাইএসকিএল পরিষেবাটি পুনরায় চালু করুন:

    sudo service mysql restart

আপনাকে ফায়ারওয়াল থেকে 3306
মাইএসকিএল

@ খাশায়ার থেকে পয়েন্ট 2 তে মাত্র একটি দ্রুত নোটিশ: 0.0.0.0 এর অর্থ কোনও আইপিভি 4 ঠিকানা। * এর অর্থ কোনও ঠিকানা, এটি আইপিভি 4 বা আইপিভি 6 হোক।
গুস্তাভো পিনসার্ড

34
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'YOUR_PASS' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;  

*.* = DB.TABLE আপনি নির্দিষ্ট ডাটাবেস এবং নির্দিষ্ট সারণিতে ব্যবহারকারীকে সীমাবদ্ধ রাখতে পারেন।

'root'@'%'আপনি তৈরি করেছেন এমন কোনও ব্যবহারকারীর সাথে আপনি রুট পরিবর্তন করতে পারেন এবং% কে সমস্ত আইপিকে অনুমতি দেওয়া হয়। আপনি% .168.1.1 ইত্যাদি পরিবর্তন করেও এটি সীমাবদ্ধ করতে পারেন।


যদি এটি সমাধান না হয়, তবে my.cnf বা my.ini পরিবর্তন করুন এবং এই লাইনগুলিতে মন্তব্য করুন

bind-address = 127.0.0.1থেকে #bind-address = 127.0.0.1
এবং
skip-networkingথেকে#skip-networking

  • মাইএসকিউএল পুনরায় আরম্ভ করুন এবং উপরের পদক্ষেপগুলি আবার পুনরায় করুন।

রাস্পবেরি পাই, আমি বাইন্ড-ঠিকানা কনফিগারেশনের অধীনে পেয়েছি \etc\mysql\mariadb.conf.d\50-server.cnf


2
শুধুমাত্র উত্তর যে ব্যাখ্যা *.*এবং 'user'@'address'অংশ। ধন্যবাদ! :)
ফিলিপ

সমস্ত প্রদান হ্যাকারগুলিকে ভিতরে আমন্ত্রণ জানিয়েছে
রিক জেমস

এজন্য আমি * * * ব্যাখ্যা করেছি
ওয়াসিম এ।

8

অন্যদের ভাগ করে নিচ্ছে এমন এসকিউএল মঞ্জুরি দেয়। আপনি যদি এখনও ডাটাবেস অ্যাক্সেস করতে অক্ষম হন তবে পোর্টটির জন্য আপনার কেবল ফায়ারওয়াল সীমাবদ্ধতা রয়েছে। এটি আপনার সার্ভারের ধরণের উপর নির্ভর করে (এবং এর মধ্যে কোনও রাউটার) কীভাবে সংযোগটি খুলতে হয়। টিসিপি পোর্ট 3306 ইনবাউন্ড খুলুন এবং এটি বাহ্যিক মেশিনের জন্য অনুরূপ অ্যাক্সেসের নিয়ম দিন (সমস্ত / সাবনেট / একক আইপি / ইত্যাদি)।



3

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

যেমনটি পরিণত হয়েছে, বিভিন্ন সমাধান অনুসন্ধান করার সময়, আমি iptables জুড়ে এসেছি, যা আমাকে বুঝতে পেরেছিল যে মাইএসকিএল পোর্ট 3306 সংযোগ গ্রহণ করছে না।

আমি কীভাবে এই সমস্যাটি পরীক্ষা করে সমাধান করেছি সে সম্পর্কে এখানে একটি ছোট্ট নোট is

  • বন্দরটি সংযোগ গ্রহণ করছে কিনা তা পরীক্ষা করা হচ্ছে:
টেলনেট (মাইএসকিএল সার্ভার আইপি) [পোর্ট নন]

বন্দরে সংযোগের অনুমতি দেওয়ার জন্য আইপি টেবিলের নিয়ম যুক্ত করুন:

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

- উত্পাদন পরিবেশের জন্য এটি সুপারিশ করবে না, তবে যদি আপনার iptables সঠিকভাবে কনফিগার করা না থাকে তবে বিধিগুলি যুক্ত করার পরেও সমস্যাটি সমাধান হবে না। সেক্ষেত্রে নিম্নলিখিতটি করা উচিত:

পরিষেবা iptables বন্ধ

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


3

দুটি পদক্ষেপ:

  1. ওয়াইল্ডকার্ড সহ ব্যবহারকারী সেট আপ করুন:
    create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION

  2. vim /etc/my.cnf
    নিম্নলিখিত যোগ করুন:
    bind-address=0.0.0.0

সার্ভার পুনরায় চালু করুন, এটির সাথে সংযোগ স্থাপন করতে আপনার কোনও সমস্যা হওয়া উচিত নয়।


"ERROR 1827 (HY000) পেয়ে যাচ্ছেন: পাসওয়ার্ড হ্যাশটির প্রত্যাশিত বিন্যাস নেই Check পাসওয়ার্ড () ফাংশনের সাথে সঠিক পাসওয়ার্ড অ্যালগরিদম ব্যবহার করা হচ্ছে কিনা তা পরীক্ষা করুন।" আপনি এখানে ব্যাখ্যা করতে পারেন যে আমি কী ভুল করছি?
lampShadesDrifter

2

মাইএসকিএল 8 এবং পরবর্তী সংস্করণ অনুসারে, আপনি কোনও বিশেষাধিকার প্রদান করে কোনও ব্যবহারকারী যুক্ত করতে পারবেন না। এর অর্থ এই প্রশ্নের সাথে:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'type-root-password-here' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql এই ত্রুটিটি ফিরিয়ে দেবে:

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

এর অর্থ% ডোমেনের জন্য আপনার কাছে কোনও রুট ব্যবহারকারী নেই। সুতরাং আপনাকে প্রথমে ব্যবহারকারী sertোকানো এবং তারপরে এই জাতীয় সুযোগগুলি প্রদান করা দরকার:

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'your password';
Query OK, 0 rows affected (0.11 sec)

mysql> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.15 sec)

mysql> FLUSH PRIVILEGES;

আপনার নির্দিষ্ট পাসওয়ার্ডের সাথে পাসওয়ার্ডগুলি প্রতিস্থাপন করতে ভুলবেন না।


0

এটি আমার পক্ষে কাজ করেছে। তবে একটি অদ্ভুত সমস্যা ছিল যা এমনকি আমি প্রথমে চেষ্টা করেছিলাম যা এটি প্রভাবিত করে না। আমি phpmyadmin পৃষ্ঠা আপডেট করেছি এবং এটি কোনওরকম কাজ করে চলেছি got

আপনার যদি স্থানীয়- xampp-mysql অ্যাক্সেসের প্রয়োজন হয়। আপনি এক্স্যাম্প-শেল -> খোলার কমান্ড প্রম্পটে যেতে পারেন।

তারপরে mysql -uroot -p --port = 3306 বা mysql -uroot -p (যদি পাসওয়ার্ড সেট থাকে)। এর পরে আপনি মাইএসকিএল শেল পৃষ্ঠা থেকে এই অ্যাক্সেসগুলি দিতে পারবেন (লোকালহোস্ট / phpmyadmin থেকেও কাজ করতে পারেন)।

কেউ যদি এই বিষয়টিকে খুঁজে পায় এবং শুরুতে সমস্যা হয় তবে কেবল এগুলি যুক্ত করুন।


0

উবুন্টু 18.04

আমাদের ইনস্টল করুন এবং মাইএসকিএলড চলমান নিশ্চিত করুন ..

ডাটাবেস এবং সেটআপ রুট ব্যবহারকারীদের মধ্যে যান:

sudo mysql -u root
SELECT User,Host FROM mysql.user;
DROP USER 'root'@'localhost';
CREATE USER 'root'@'%' IDENTIFIED BY 'obamathelongleggedmacdaddy';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

MySQLld অনুমতিগুলি সম্পাদনা করুন এবং পুনরায় চালু করুন:

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

# edit the line to be this:
bind-address=0.0.0.0

sudo systemctl stop mysql
sudo systemctl start mysql

অন্য একটি মেশিন থেকে, পরীক্ষা .. মাইসিকিএলড মেশিনে ওভভিস পোর্ট (3306) অবশ্যই পরীক্ষা মেশিন থেকে সংযোগের অনুমতি দেয়।

mysql -u root -p -h 123.456.789.666

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

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