und Mysql Hinzufügen von Benutzer für den Remotezugriff



mysql user anlegen und rechte vergeben (3)

Folgen Sie den Anweisungen (die Schritte 1 bis 3 werden in Windows nicht benötigt):

  1. Finde mysql config zum Bearbeiten:

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

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

  2. Find bind-address=127.0.0.1 in der Konfigurationsdatei ändere bind-address=0.0.0.0 (du kannst bind adresse auf eines deiner ips setzen oder wie benutze ich 0.0.0.0)

  3. Starten Sie den mysql-Dienst neu, der auf der Konsole ausgeführt wird: service restart mysql

  4. Erstellen Sie einen Benutzer mit einem sicheren Kennwort für die Remoteverbindung. Um dies zu tun, führe den folgenden Befehl in mysql aus (wenn du ein Linux-Benutzer bist, um die mysql-Konsole zu erreichen, führe mysql und wenn du ein Passwort für den root mysql -p ):

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

Jetzt sollten Sie einen Benutzer mit dem Namen des user und dem Kennwort safe_password mit der Möglichkeit der Remote-Verbindung haben.

Ich habe Benutzer [email protected]'%' mit password 'password . Aber ich kann nicht verbinden mit:

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

Als ich user [email protected]'localhost' , konnte ich mich verbinden. Warum? Bedeutet '%' nicht von jedem Host?


Answer #1

Um sich remote zu verbinden, muss MySQL den Port 3306 an die IP-Adresse des Rechners in my.cnf binden. Dann müssen Sie den Benutzer sowohl im localhost als auch im Platzhalter '%' erstellt haben und Berechtigungen für alle DBs als solche erteilen . Siehe unten:

my.cnf (my.ini unter Windows)

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

dann

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

Dann

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

Abhängig von Ihrem Betriebssystem müssen Sie möglicherweise Port 3306 öffnen, um Remote-Verbindungen zuzulassen.


Answer #2

für welche DB ist der Benutzer? schau dir dieses Beispiel an

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

Um zu Ihnen in Frage zu stellen, bedeutet der Operator "%" alle Computer in Ihrem Netzwerk.

Wie Aspesa zeigt, bin ich auch sicher, dass Sie einen Benutzer erstellen oder aktualisieren müssen. Suche nach all deinen mysql-Benutzern:

SELECT user,password,host FROM user;

Sobald du deinen Benutzer eingerichtet hast, solltest du dich wie folgt verbinden können:

mysql -h localhost -u gmeier -p

ich hoffe es hilft





remote-access