Не удается подключиться к удаленному серверу MySQL с ошибкой 61
Когда я попытался подключить удаленный сервер MySQL с помощью командной строки mysql -h <remote-ip> -u any_existing_users -p
или любого другого клиента mysql, такого как phpmyadmin, это не сработало, и подсказка об ошибке была
ERROR 2003 (HY000) Can't connect to MySQL server on '<remote-ip>' (61)
Но, когда я попытался ssh <remote-ip>
и локально подключил MySQL к mysql -u root -p
, проблем нет.
Вот часть таблицы пользователя (SELECT User, Host FROM mysql.user;
):
+------------------+----------------+
| User | Host |
+------------------+----------------+
| root | % |
| other_users | <remote-ip> |
| root | localhost |
+------------------+----------------+
Вот iptable:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
Итак, в чем проблема?
Ответы
Ответ 1
Проверьте, что ваш сервер mysql прослушивает сокет с netstat:
netstat -tulpen
и найдите 3306.
Если нет или если только на localhost, проверьте my.cnf и найдите строку bind-address
и измените ее на:
bind-address = 0.0.0.0
затем перезагрузите сервер и повторите попытку.
Ответ 2
Проверить статус:
netstat -tulpen
Измените конфигурацию:
nano /etc/mysql/my.cnf
# Edit:
bind-address = 0.0.0.0
Введите mysql и предоставите привилегии:
mysql -umyuser -pmypassword
# Run:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Перезапустить mysql
/etc/init.d/mysql restart
Ответ 3
Если вы запустите MAMP, не забудьте разрешить доступ (панель mySQL, установите флажок "Разрешить доступ к сети MySQL" )
Ответ 4
С MySql 5.7
они изменили файлы, поэтому bind-address
теперь находится:
/etc/mysql/mysql.conf.d/mysqld.cnf
вместо:
/etc/mysql/my.cnf
Ответ 5
У меня была эта проблема сразу после установки Centos 7 на сервере. Я не мог получить доступ к нему через Mysql Workbench на удаленном компьютере.
Проблема была в конфигурации брандмауэра. В конце концов, решение пришло:
sudo firewall-cmd --zone=public --permanent --add-service=mysql
И затем перезапустите брандмауэр:
sudo systemctl restart firewalld
Ответ 6
Это может быть проблема, связанная с брандмауэром или попробовать следующее:
Перейти к серверу Admin → MySQL → Настройки → проверить: разрешить сетевые подключения
Затем перезапустите MySQL
Ответ 7
Взгляните на "причины ошибок, связанных с доступом" из MySQL.
http://dev.mysql.com/doc/refman/5.1/en/access-denied.html
Возможно ли, что на вашем сервере была неудачная конфигурация, или другая программа использует один и тот же порт? Или привязка сервера к "127.0.0.1"? Попробуйте изменить файл my.cnf.