Hur man tillåter fjärranslutning till mysql

Jag har installerat MySQL Community Edition 5.5 på min lokala dator och jag vill tillåta fjärranslutningar så att jag kan ansluta från en extern källa.

Hur kan jag göra det?

Lösning

Det är tillåtet som standard i MySQL.

Det som är inaktiverat som standard är fjärråtkomst till root. Om du vill aktivera det, kör det här SQL-kommandot lokalt:

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

Hitta sedan följande rad och kommentera den i din fil my.cnf, som vanligtvis finns i /etc/mysql/my.cnf på Unix/OSX-system. I vissa fall är platsen för filen /etc/mysql/mysql.conf.d/mysqld.cnf).

Om det är ett Windows-system kan du hitta den i MySQL-installationskatalogen, vanligtvis något som C:\Program Files\MySQL\MySQL Server 5.5\ och filnamnet är my.ini.

Ändra rad

 bind-address = 127.0.0.1

till

 #bind-address = 127.0.0.1

Starta om MySQL-servern (Unix/OSX och Windows) för att ändringarna ska träda i kraft.

Kommentarer (27)

I mitt fall försökte jag ansluta till en mysql-server på cent OS. Efter att ha gått igenom en massa lösningar (bevilja alla privilegier, ta bort ip-bindningar, aktivera nätverk) så var problemet fortfarande inte löst.

Det visade sig att när jag tittade på olika lösningar kom jag på iptables, vilket fick mig att inse att mysql-port 3306 inte accepterade anslutningar.

Här är en liten anteckning om hur jag kontrollerade och löste problemet.

  • Kontrollera om porten accepterar anslutningar:
telnet (mysql server ip) [portNo]
  • Lägg till en regel i ip-tabellen för att tillåta anslutningar på porten:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • Skulle inte rekommendera detta för produktionsmiljöer, men om dina iptables inte är korrekt konfigurerade kan det hända att du inte löser problemet genom att lägga till reglerna. I så fall bör följande göras:
service iptables stop

Jag hoppas att detta hjälper.

Kommentarer (0)

Om din MySQL-serverprocess lyssnar på 127.0.0.0.1 eller ::1 kan du inte ansluta på distans. Om du har en bind-address-inställning i /etc/my.cnf kan detta vara källan till problemet.

Du måste också lägga till privilegier för en användare som inte tillhör localhost.

Kommentarer (2)