रिमोट एक्सेस के लिए उपयोगकर्ता को जोड़ने वाला मैसूर


148

मैंने उपयोगकर्ता के user@'%'साथ बनाया password 'password। लेकिन मैं इससे नहीं जुड़ सकता:

mysql_connect('localhost:3306', 'user', 'password');

जब मैंने उपयोगकर्ता बनाया user@'localhost', तो मैं कनेक्ट करने में सक्षम था। क्यों? किसी भी मेजबान से '%' का मतलब नहीं है?


ध्यान दें कि उपयोगकर्ता @ लोकलहोस्ट और उपयोगकर्ता @% के लिए पासवर्ड सामान्य रूप से, साथ ही विशेषाधिकारों के लिए है।
जोस मैनुअल गोमेज़ अल्वारेज़

जवाबों:


378

दूरस्थ रूप से कनेक्ट करने के लिए आपको my.cnf में अपनी मशीन के IP पते पर MySQL बाइंड पोर्ट 3306 रखना होगा। फिर आपको उपयोगकर्ता को लोकलहोस्ट और '%' वाइल्डकार्ड दोनों में बनाना होगा और सभी DB के रूप में अनुमति प्रदान करनी होगी निचे देखो:

my.cnf (विंडोज़ पर my.ini)

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

फिर

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

फिर

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
flush privileges;

अपने ओएस के आधार पर आपको रिमोट कनेक्शन की अनुमति देने के लिए पोर्ट 3306 खोलना पड़ सकता है।


1
इसने मुझे एक WebFaction निजी MySQL उदाहरण का उपयोग करने में मदद की। मैंने आपके CREATE USER और GRANT के सभी चरणों का पालन किया, mysql.default_port = <private instance port>मेरे php.ini में सेट किया, और फिर 127.0.0.1मेरे db होस्टनाम के लिए उपयोग किया
spex

बहुत उपयोगी। बस एक टिप्पणी। my.cnf किसी अन्य कॉन्फ़िगरेशन फ़ाइल सहित हो सकता है ताकि संबंधित लाइन कहीं और हो सकती है। My.cnf के साथ शुरू होने वाली लाइन के लिए देखें! शामिल करें, अगर बाइंड-एड्रेस my.cnf में नहीं है तो यह उस शामिल फ़ाइल में स्थित हो सकता है।
tru7

My.cnf फ़ाइल कहाँ है?
व्लादिमीर डेस्पोटोविक

7
FLUSH

4
क्यों दोनों लोकलहोस्ट और%?
रात

21

निर्देशों का पालन करें (विंडोज़ में चरण 1 से 3 की आवश्यकता नहीं है):

  1. संपादित करने के लिए mysql config खोजें:

    /etc/mysql/my.cnf (मैसकल 5.5)

    /etc/mysql/conf.d/mysql.cnf (मैसूर 5.6+)

  2. bind-address=127.0.0.1कॉन्फ़िगरेशन फ़ाइल परिवर्तन में खोजें bind-address=0.0.0.0(आप अपने इंटरफ़ेस ips में से किसी एक पर बाइंड पता सेट कर सकते हैं या मेरे जैसे 0.0.0.0 का उपयोग कर सकते हैं)

  3. कंसोल पर mysql सेवा चलाएं: service restart mysql

  4. रिमोट कनेक्शन के लिए एक सुरक्षित पासवर्ड वाला उपयोगकर्ता बनाएं। Mysql में कमांड रन करने के लिए यह करने के लिए (यदि आप mysql कंसोल रन तक पहुँचने के लिए लिनक्स उपयोगकर्ता हैं mysqlऔर यदि आप रूट रन के लिए पासवर्ड सेट करते हैं mysql -p):

    GRANT ALL PRIVILEGES 
     ON *.* TO 'remote'@'%' 
     IDENTIFIED BY 'safe_password' 
     WITH GRANT OPTION;`

अब आपके पास रिमोट कनेक्ट की क्षमता के साथ एक उपयोगकर्ता का नाम userऔर पासवर्ड होना चाहिए safe_password


2
परिवर्तन बाँध-पता = 0.0.0.0 ... जो मेरे लिए काम करता है। और अनुदान विशेषाधिकार
zwitterion

12

उपयोगकर्ता किस DB के लिए है? इस उदाहरण को देखें

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

इसलिए आपके पास लौटने के लिए "%" ऑपरेटर का सवाल है कि आपके नेटवर्क के सभी कंप्यूटर हैं।

एस्पेसा शो की तरह मुझे भी यकीन है कि आपको उपयोगकर्ता बनाना या अपडेट करना होगा। अपने सभी mysql उपयोगकर्ताओं को देखें:

SELECT user,password,host FROM user;

जैसे ही आप अपना उपयोगकर्ता सेट अप करते हैं, आपको इस तरह से कनेक्ट करने में सक्षम होना चाहिए:

mysql -h localhost -u gmeier -p

आशा करता हूँ की ये काम करेगा


आम तौर पर, सभी डीबी के लिए। मैं सिर्फ कनेक्ट करना चाहता हूं, डीबी का चयन करना नहीं। codemysql_connect ('localhost: 3306', 'user', 'password'); code
user2333586

आप किस ओएस पर हैं, विंडोज, लिनक्स ??
अप्सरा

खिड़कियाँ। wamp सर्वर।
user2333586

आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपका आईपी पता 3306 पोर्ट के लिए बाध्य है। खिड़कियों में आप नेटस्टैट-एन का उपयोग कर सकते हैं यह देखने के लिए कि पोर्ट आपके आईपी से बंधे हैं। अगर आप 127.0.0.1:3306 देखते हैं तो आप लोकलहोस्ट के अलावा किसी और चीज़ से कनेक्ट नहीं हो पाएंगे
Apesa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.