Jeg har installeret MySQL Community Edition 5.5 på min lokale maskine, og jeg ønsker at tillade fjernforbindelser, så jeg kan oprette forbindelse fra eksterne kilder.
Hvordan kan jeg gøre det?
Det er tilladt som standard i MySQL.
Det, der er deaktiveret som standard, er fjernadgang til root
. Hvis du ønsker at aktivere det, skal du køre denne SQL-kommando lokalt:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Og find derefter følgende linje og kommenter den ud i din my.cnf
-fil, som normalt ligger på /etc/mysql/my.cnf
på Unix/OSX-systemer. I nogle tilfælde er placeringen af filen /etc/mysql/mysql/mysql.conf.d/mysqld.cnf).
Hvis det er et Windows-system, kan du finde den i MySQL-installationsmappen, normalt noget i retning af C:\Program Files\MySQL\MySQL Server 5.5\
og filnavnet vil være my.ini
.
Ændre linje
bind-address = 127.0.0.1
til
#bind-address = 127.0.0.1
Og genstart MySQL-serveren (Unix/OSX, og Windows) for at ændringerne kan træde i kraft.
I mit tilfælde forsøgte jeg at oprette forbindelse til en ekstern mysql-server på cent OS. Efter at have gennemgået en masse løsninger (tildeling af alle privilegier, fjernelse af ip-bindinger, aktivering af netværk) blev problemet stadig ikke løst.
Som det viste sig, mens jeg kiggede på forskellige løsninger, kom jeg på tværs af iptables, hvilket fik mig til at indse, at mysql port 3306 ikke accepterede forbindelser.
Her er en lille note om, hvordan jeg kontrollerede og løste dette problem.
telnet (mysql server ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables stop
Håber dette hjælper.
Hvis din MySQL-serverproces kun lytter på 127.0.0.0.1 eller ::1, vil du ikke kunne oprette en fjernforbindelse. Hvis du har en bind-address
indstilling i /etc/my.cnf
kan dette være kilden til problemet.
Du skal også tilføje privilegier til en bruger, der ikke er localhost
.