Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从另一个网络(MacOS)连接到mysql_Python_Mysql - Fatal编程技术网

Python 从另一个网络(MacOS)连接到mysql

Python 从另一个网络(MacOS)连接到mysql,python,mysql,Python,Mysql,我有一个mysql数据库运行在我的家用电脑上,我想从其他网络(当我离开家的时候是笔记本电脑)访问它 我关注了一些帖子并设置了特权: +-----------------------------------------------------------+ | Grants for test@% | +-----------------------------------------------------------

我有一个mysql数据库运行在我的家用电脑上,我想从其他网络(当我离开家的时候是笔记本电脑)访问它

我关注了一些帖子并设置了特权:

+-----------------------------------------------------------+
| Grants for test@%                                         |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%'                          |
| GRANT ALL PRIVILEGES ON `database`.`table` TO 'test'@'%'  |
+-----------------------------------------------------------+
我正在使用SQLAlchemy连接到数据库:

engine = create_engine('mysql://test:my_password@my_home_computer_ip_address:3306/table')
然而,我得到了这个错误:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2003, "Can't connect to MySQL server on 'my_ip_address' (61)")

我做错了什么

在访问远程计算机上不工作的服务时,有两件事需要检查

  • 你能ping这台电脑吗
  • 您可以远程登录服务(远程登录我的sql\主机我的sql\端口)吗
  • 如果第一步出现故障,您的网络配置可能是错误的。 第二步失败表明防火墙或服务配置错误


    仍然有可能存在另一个问题源,但这些是最基本的检查。

    以下是从外部解决MySQL连接问题的一般答案:


    防火墙上的端口打开了吗?哦……很好。让我检查一下。让MySQL保持打开状态会带来麻烦。您可能希望在禁用密码身份验证的情况下打开SSH,并使用它来隧道,因为SSH通常比MySQL更不容易受到攻击。记住默认的MySQL协议是不加密的。这里有一个关于大多数要求的通用答案:对于telnet,我的sql主机是我的ip地址?我的telnet ip地址3306被拒绝连接它是我的家庭计算机ip地址,所以防火墙或服务可能有问题。这台机器上运行的是Linux上的mySQL服务器吗?我没有MacOS,但根据internet,您可以使用netstat检查运行的端口
    netstat-tlnp
    。检查mysql是否正在3306上侦听