无法连接到 MariaDB
Posted
技术标签:
【中文标题】无法连接到 MariaDB【英文标题】:Can't connect to MariaDB 【发布时间】:2015-10-13 03:37:09 【问题描述】:所以我有两台 AWS 服务器有问题,一台运行 MariaDB,另一台是我的 API 服务器(基于 python)。我可以在 MariaDB 服务器以及我的开发计算机上进行本地连接。我无法从 API 服务器或第三个 AWS 服务器连接。
netstat 输出
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:mysql *:* LISTEN 1363/mysqld
在 API 服务器上显示 ngrep
interface: eth0 (10.[api ip]/255.255.255.0)
filter: (ip or ip6) and ( port 3306 )
##########
Maria 服务器上的 ngrep
interface: eth0 ([maria ip]/255.255.255.0)
filter: (ip or ip6) and ( port 3306 )
####
T [maria ip]:3306 -> [dev ip]:2392 [AP]
[redacted]
##
T [dev ip]:2392 -> [maria ip]:3306 [AP]
[redacted]
##
T [maria ip]:3306 -> [dev ip]:2392 [AP]
[redacted]
#######################
最终我得到了这个错误
ERROR 2003 (HY000): Can't connect to MySQL server on '[maria ip]' (110 "Connection timed out")
或者来自我的python脚本
Exception happened during processing of request from ('127.0.0.1', 50110)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
self.wfile.close()
File "/usr/lib/python2.7/socket.py", line 279, in close
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
在有人提及之前,我的 IP 表设置正确,AWS SecGrps 也不是问题。
这不是 Trying to connect to remote MySQL host (error 2003) 的副本,因为 (1) 服务器之间没有(逻辑)设备,(2) 我可以从该国另一端的开发站连接,并且 (3) 没有的“修复”奏效了。
我还可以从 API 脚本连接到我的 maria 服务器上运行的 Redis 服务器。
【问题讨论】:
Trying to connect to remote MySQL host (error 2003)的可能重复 【参考方案1】:我认为您必须按照以下步骤操作:
-
允许远程连接 MariaDB AWS 服务器上的 3306 端口(取决于您的配置)
检查您的 Maria AWS 服务器上的防火墙(安全组 --> 入站设置),该服务器必须允许从 API 服务器的 IP 地址通过 3306 端口进行访问。
检查 API AWS 服务器上的防火墙(安全组 --> 出站设置。默认情况下,AWS 服务器允许所有端口)。
参考@http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html
【讨论】:
以上是关于无法连接到 MariaDB的主要内容,如果未能解决你的问题,请参考以下文章
docker 无法使用不同的用户从 localhost 连接到 mariadb
无法使用 DBeaver 连接到本地主机上的 MariaDB