Mysql aggiungendo l'utente per l'accesso remoto


148

Ho creato l'utente user@'%'con password 'password. Ma non riesco a connettermi con:

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

Quando ho creato l'utente user@'localhost', sono stato in grado di connettermi. Perché? '%' Non significa da QUALSIASI host?


Si noti che la password per user @ localhost e user @% è in generale diversa, così come i privilegi.
Jose Manuel Gomez Alvarez,

Risposte:


378

Per connetterti in remoto devi avere la porta di connessione 3306 di MySQL all'indirizzo IP della tua macchina in my.cnf. Quindi devi aver creato l'utente sia in localhost che in jolly '%' e concedere le autorizzazioni su tutti i DB in quanto tali . Vedi sotto:

my.cnf (my.ini su windows)

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

poi

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

Poi

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

A seconda del sistema operativo in uso, potrebbe essere necessario aprire la porta 3306 per consentire le connessioni remote.


1
Questo mi ha aiutato a utilizzare un'istanza MySQL privata WebFaction. Ho seguito i tuoi passaggi CREATE USER e GRANT ALL, impostato mysql.default_port = <private instance port>nel mio php.ini e poi usato 127.0.0.1tutto per il mio nome host db
spex,

Molto utile. Solo un commento my.cnf potrebbe includere un altro file di configurazione, quindi la riga pertinente potrebbe trovarsi altrove. In my.cnf cercare una riga che inizia con! Include, se bind-address non è in my.cnf potrebbe trovarsi nel file incluso.
tru7,

Dov'è il file my.cnf?
Vladimir Despotovic,

7
non dimenticare di FLUSH PRIVILEGES;)
volkovmqx,

4
Perché sia ​​localhost che%?
notti

21

Seguire le istruzioni (i passaggi da 1 a 3 non sono necessari in Windows):

  1. Trova mysql config da modificare:

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

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

  2. Trova bind-address=127.0.0.1nella modifica del file di configurazione bind-address=0.0.0.0(puoi impostare l'indirizzo di bind su una delle tue interfacce ips o come me usare 0.0.0.0)

  3. Riavvia il servizio mysql eseguito sulla console: service restart mysql

  4. Crea un utente con una password sicura per la connessione remota. Per fare ciò, eseguire il comando seguente in mysql (se si è utenti Linux per raggiungere l'esecuzione della console mysql mysqle se si imposta la password per l'esecuzione root mysql -p):

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

Ora dovresti avere un utente con nome usere password di safe_passwordcon capacità di connessione remota.


2
change bind-address = 0.0.0.0 ... che ha funzionato per me. e concedi i privilegi
zwitterion

12

per quale DB è l'utente? guarda questo esempio

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)

quindi per farti tornare la domanda l'operatore "%" indica tutti i computer della tua rete.

come Aspesa Show, sono anche sicuro che devi creare o aggiornare un utente. cerca tutti i tuoi utenti mysql:

SELECT user,password,host FROM user;

non appena avrai configurato il tuo utente dovresti essere in grado di connetterti in questo modo:

mysql -h localhost -u gmeier -p

spero che sia d'aiuto


in generale, per tutti i db. Voglio solo collegarmi, non selezionare DB. codemysql_connect ('localhost: 3306', 'user', 'password'); code
user2333586

su quale sistema operativo sei, Windows, Linux ??
apesa,

finestre. server wamp.
user2333586

Dovrai assicurarti che il tuo indirizzo IP sia associato alla porta 3306. In Windows potresti usare netstat -n per vedere quali porte sono associate al tuo IP. Se vedi 127.0.0.1:3306 non sarai in grado di connetterti da qualcosa di diverso da localhost
apesa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.