Uzaktan erişim için Mysql kullanıcı ekleme


148

Ben kullanıcı oluşturduk user@'%'ile password 'password. Ama bağlanamıyorum:

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

Kullanıcı oluşturduğumda user@'localhost'bağlanabildim. Neden? '%' HERHANGİ BİR ana bilgisayardan anlamına gelmiyor mu?


User @ localhost ve user @% için parolanın ayrıcalıkların yanı sıra genel olarak farklı olduğunu unutmayın.
Jose Manuel Gomez Alvarez

Yanıtlar:


378

Uzaktan bağlanmak için, mySnf'deki makinenizin IP adresine MySQL bağlanma bağlantı noktası 3306'ya sahip olmanız gerekir. Daha sonra kullanıcıyı hem localhost hem de '%' joker karakterinde yaratmış olmalısınız ve tüm DB'lere bu şekilde izin vermelisiniz . Aşağıya bakınız:

my.cnf (pencerelerdeki my.ini)

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

sonra

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

Sonra

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

İşletim sisteminize bağlı olarak, uzak bağlantılara izin vermek için 3306 numaralı bağlantı noktasını açmanız gerekebilir.


1
Bu, bir WebFaction özel MySQL örneği kullanmama yardımcı oldu. CREATE USER ve GRANT ALL adımlarını takip mysql.default_port = <private instance port>ettim, php.ini dosyamda ayarladım ve daha sonra 127.0.0.1db ana bilgisayar adımı boyunca kullandım
spex

Çok kullanışlı. Sadece bir yorum. my.cnf başka bir yapılandırma dosyası içerebilir, böylece ilgili satır başka bir yerde olabilir. My.cnf dosyasında! İnclude ile başlayan bir satır arayın, eğer bind-adresi my.cnf dosyasında değilse bu dosyada bulunabilir.
tru7

My.cnf dosyası nerede?
Vladimir Despotovic

7
FLUSH PRIVILEGES'i unutmayın;)
volkovmqx

4
Neden localhost ve%?
Gece

21

Talimatları izleyin (pencerelerde 1-3 arası adımlara gerek yoktur):

  1. Düzenlemek için mysql config'i bulun:

    /etc/mysql/my.cnf (Mysql 5.5)

    /etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)

  2. bind-address=127.0.0.1Yapılandırma dosyası değişikliğinde bul bind-address=0.0.0.0(arabirim ips'lerinizden birine bağlanma adresi ayarlayabilirsiniz veya benim gibi 0.0.0.0 kullanın)

  3. Konsolda çalıştırılan mysql hizmetini yeniden başlatın: service restart mysql

  4. Uzaktan bağlantı için güvenli bir parolaya sahip bir kullanıcı oluşturun. Bunu yapmak için mysql'de aşağıdaki komutu çalıştırın (eğer linux kullanıcısı mysql konsol çalıştırmasına ulaşırsa mysqlve root çalıştırması için şifre ayarlarsanız mysql -p):

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

Şimdi , uzaktan bağlantı yapabilme adına userve şifresine sahip bir kullanıcınız olmalıdır safe_password.


2
bind-address = 0.0.0.0'ı değiştir ... benim için çalıştı. ve imtiyazlar vermek
zwitterion

12

kullanıcı hangi DB için? bu örneğe bak

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)

size "%" operatörü ağınızdaki tüm bilgisayarlar anlamına gelir.

aspesa gösterileri gibi bir kullanıcı oluşturmanız veya güncellemeniz gerektiğinden de eminim. tüm mysql kullanıcılarınızı arayın:

SELECT user,password,host FROM user;

kullanıcı kurulumunu yapar kurmaz şu şekilde bağlanabilmelisiniz:

mysql -h localhost -u gmeier -p

Umarım yardımcı olur


genel olarak, tüm db için. Sadece bağlanmak istiyorum, DB seçmek için değil. codemysql_connect ('localhost: 3306', 'kullanıcı', 'şifre'); code
user2333586

hangi işletim sistemindesiniz Windows, Linux ??
apesa

pencereler. wamp sunucusu.
user2333586

IP adresinizin 3306 numaralı bağlantı noktasına bağlı olduğundan emin olmanız gerekir. Pencerelerde IP'nize hangi bağlantı noktalarının bağlı olduğunu görmek için netstat -n komutunu kullanabilirsiniz. 127.0.0.1:3306'yı görürseniz localhost dışında bir şeyden bağlanamazsınız
apesa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.