Właśnie zainstalowałem nowy serwer Ubuntu z mysql (Percona 5.5), ale odmawia przyjmowania połączeń ze zdalnych hostów
Oto, co się stanie, jeśli spróbuję połączyć się z tym serwerem zdalnie:
mysql -h10.0.0.2 -uroot -pmypassowrd
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111)
telnet 10.0.0.2 3306
Trying 10.0.0.2...
telnet: Unable to connect to remote host: Connection refused
Kiedy sprawdziłem, czy mysql nasłuchuje połączeń zdalnych, zobaczyłem to:
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld
Jak widać, jest napisane, 127.0.0.1:3306
co oznacza „Akceptuję tylko połączenia lokalne”.
Sprawdziłem moje skip_networking
i bind-address
zmienne - wszystko jest wyłączone:
mysql> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%bind%';
Empty set (0.00 sec)
Mam inny serwer z absolutnie taką samą konfiguracją i działa świetnie:
sudo netstat -ntlup | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld
Co może być tego przyczyną? Jak zmusić mysql do reagowania na połączenia zdalne?
bind_address
jest dostępna tylko od wersji 5.6 ( bugs.mysql.com/bug.php?id=44355 ), więc zwróci pusty zestaw w wersji 5.5, nawet jeśli jest ustawiony.Odpowiedzi:
Spróbuj dodać
bind-address = 0.0.0.0
do swojej[mysqld]
sekcjimy.cnf
i zrestartuj mysqld .źródło
/etc/mysql/mysql.conf.d/mysqld.cnf
Może to być spowodowane tabelą użytkowników bazy danych mysql (użyj mysql; pokaż tabele;). Jeśli powiązanie z 0.0.0.0 nie działa dla Ciebie, spróbuj podać użytkownikowi host „%” zamiast „localhost” w tej tabeli.
Na przykład spróbuj utworzyć użytkownika takiego jak:
mrówka próbuje połączyć się z tym użytkownikiem.
źródło
Gdy wszystko inne zawiedzie i masz pewność, że serwer nasłuchuje na domyślnym porcie i próbujesz desperacko połączyć się z klientem mysql z innego hosta, spróbuj podać port w adresie URL polecenia mysql.
Dziwne, ponieważ jest, musiałem użyć następującej składni:
Znalazłem to (błąd?) Całkowicie przez przypadek (po utracie włosów :)).
Moja konfiguracja: debian jessie, świeży mysql 5.7.18, utworzono users / db, skomentowano adres wiązania, zrestartowano mysqld
źródło
Właśnie miałem ten problem i mój problem wydawał się być związany z zaporą ogniową. BTW - Dzięki @Temnovit za komendy rozwiązywania problemów Mysql.
Użyłem netstat, aby powiedzieć, że serwer działa i jest na właściwym porcie. Mogłem też powiedzieć, że mój serwer nie akceptuje połączeń na tym porcie za pomocą prostej komendy telnet.
Po kolejnej pomocnej odpowiedzi na polecenia zapory Fedory mogłem otworzyć właściwe porty.
Moje polecenie telnet zakończyło się powodzeniem.
Jeśli nadal masz problemy, prawdopodobnie jest to problem z uprawnieniami użytkownika.
źródło
Mam
mariadb
zainstalowany. Soulution miał zmodyfikowaćbind-address
zlokalizowany przy/etc/mysql/mariadb.conf.d/50-server.cnf
źródło
Rozwiązanie opisane w poniższym linku powinno rozwiązać twój problem http://www.debianhelp.co.uk/remotemysql.htm
źródło