Zainstalowałem MySQL Community Edition 5.5 na moim lokalnym komputerze i chcę zezwolić na zdalne połączenia, aby móc łączyć się z zewnętrznego źródła.
Jak mogę to zrobić?
Jest to domyślnie dozwolone w MySQL.
Domyślnie wyłączony jest zdalny dostęp root
. Jeśli chcesz to włączyć, uruchom lokalnie tę komendę SQL:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
A następnie znajdź następującą linię i komentuj ją w swoim pliku my.cnf
, który zazwyczaj znajduje się w /etc/mysql/my.cnf
w systemach Unix/OSX. W niektórych przypadkach lokalizacją dla tego pliku jest /etc/mysql/mysql.conf.d/mysqld.cnf).
Jeśli jest to system Windows, możesz go znaleźć w katalogu instalacyjnym MySQL, zazwyczaj jest to coś w stylu C:™Program Files™MySQL™MySQL Server 5.5
, a nazwa pliku to my.ini
.
Zmień linię
bind-address = 127.0.0.1
na
#bind-address = 127.0.0.1
Uruchom ponownie serwer MySQL (Unix/OSX i Windows), aby zmiany zaczęły obowiązywać.
W moim przypadku próbowałem połączyć się ze zdalnym serwerem mysql na cent OS. Po przejściu przez wiele rozwiązań (nadanie wszystkich uprawnień, usunięcie wiązań ip, włączenie sieci) problem nadal nie został rozwiązany.
Jak się okazało, szukając różnych rozwiązań, natknąłem się na iptables, które uświadomiło mi, że port mysql 3306 nie przyjmuje połączeń.
Oto mała notatka na temat tego, jak sprawdziłem i rozwiązałem ten problem.
telnet (ip serwera mysql) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables stop
Mam nadzieję, że to pomoże.
Jeśli Twój proces serwera MySQL nasłuchuje na 127.0.0.1 lub ::1 tylko wtedy nie będziesz mógł się połączyć zdalnie. Jeśli masz ustawiony bind-address
w /etc/my.cnf
może to być źródłem problemu.
Będziesz musiał również dodać uprawnienia dla użytkownika innego niż localhost
.