Jak skonfigurować serwer MySql, aby akceptował połączenia zdalne?

16

Instaluję serwer MySql na pulpicie Ubuntu. Mógłbym podłączyć do niej MySql Query Browser, podając Server Hostnameas localhost, ale kiedy zastąpię ją adresem IP komputera, przestaje działać (nawet jeśli MySql Query Browser działa na tym samym komputerze).

Do tej pory wszystko, co zrobiłem, to usunięcie iptables, ale wygląda na to, że nie ma z tym nic wspólnego.

Oto komunikat o błędzie

Nie można połączyć się z hostem „192.168.0.2”.

Błąd MySQL Nr. 2003

Nie można połączyć się z serwerem MySQL na „192.168.0.2” (111)

Kliknij przycisk „Ping”, aby sprawdzić, czy występuje problem z siecią.

Ping jest jednak w porządku

Jader Dias
źródło

Odpowiedzi:

22

Będziesz musiał powiązać mysqld z adresem IP innym niż 127.0.0.1.

Otwórz plik my.cnf (zwykle /etc/mysql/my.cnf) i zmień wiersz z napisem

bind = 127.0.0.1

do dowolnego adresu IP używanego przez maszynę do łączenia się ze światem zewnętrznym. 0.0.0.0wiąże się ze wszystkimi adresami IP. Nie zapomnij zrestartować mysqld po tej zmianie.

halfdan
źródło
wystąpił inny błąd: nie można połączyć się z hostem „192.168.0.2”. Błąd MySQL Nr. 1130 Host „what-vubuntu.local” nie może połączyć się z tym serwerem MySQL
Jader Dias
użytkownik @ localhost i użytkownik @ <nazwa hosta> jest inny. Musisz dodać użytkownika, aby móc połączyć się ze zdalnymi hostami.
James
To nie jest problem. Zrobiłem to i nadal pojawia się błąd.
Cerin
Tak powinno być bind-address?
Thomas Weller
5

Oprócz odpowiedzi halfdana musiałem wykonać następującą komendę mysql:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Jak się uczyłem

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Jader Dias
źródło
2

Wyjaśniono tutaj kilka innych potencjalnych problemów:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en /access-denied.html

Jeśli chcesz przyznać wszystkie uprawnienia wszystkim bazom danych, spróbuj

grant all on *.* to 'joe'@'%';

Jednak zanim to zrobisz, upewnij się, że masz użytkownika w bazie danych „mysql”, który ma „Host” ustawiony na twój adres IP - w moim przypadku mój adres IP jest tutaj w domu. Użytkownik „Joe” może mieć więcej niż jeden rekord, po jednym dla każdego adresu IP, z którego może dzwonić. Aby zobaczyć, co już tam masz:

use mysql;
select Host, User, Password from user where user='joe';`

W moim przypadku okazało się, że mój użytkownik ma teraz poprawny adres IP, ale hasła również brakuje. Wkleiłem hasło (jest ono zakodowane lub coś takiego) i to rozwiązało mój szczególny problem ze zdalnym połączeniem:

update user set Password='5493845039485' where user='joe';

Jeszcze jedno, w my.cnf możesz ustawić „port = 3306” lub dowolny inny port, którego zamierzasz używać.

PJ Brunet
źródło