gpt4 book ai didi

python - OperationalError : (OperationalError) (2003, "Can' t 连接到 '192.168.129.139' (111)"上的 MySQL 服务器"无 无

转载 作者:IT王子 更新时间:2023-10-29 00:33:15 67 4
gpt4 key购买 nike

我正在尝试在运行 12.04 的 Ubuntu 机器上使用 mysql 创建一个远程数据库。

它有一个启用了远程登录且没有密码的根用户。我已经启动了服务器。

输出

sudo netstat -tap | grep mysql

显示

tcp        0      0 localhost:mysql         *:*                     LISTEN      13246/mysqld

我创建了一个名为 nwtopology 的数据库(如前所述,root 还没有密码。)

 create database nwtopology
grant all privileges on *.* to root@192.168.129.221
FLUSH PRIVILEGES;

在同样运行 Ubuntu 12.04 的客户端机器上,我使用 python 脚本通过 sqlalchemy 连接到远程 mysql 数据库。

from pox.core import core
import pox.openflow.libopenflow_01 as of
import re
import datetime
import time
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import exists

log = core.getLogger()
engine = create_engine('mysql://root@192.168.129.139/nwtopology', echo=False)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()

class SourcetoPort(Base):
""""""
__tablename__ = 'source_to_port'
id = Column(Integer, primary_key=True)
port_no = Column(Integer)
src_address = Column(String,index=True)

#-----------------------------------------
def __init__(self, src_address,port_no):
""""""
self.src_address = src_address
self.port_no = port_no

create_engine() 调用失败并出现以下错误。

POX 0.1.0 (betta) / Copyright 2011-2013 James McCauley, et al.
Traceback (most recent call last):
File "/home/karthik/ms_thesis/pox/pox/boot.py", line 89, in do_import2
__import__(name, globals(), locals())
File "/home/karthik/ms_thesis/pox/custom/tutorial.py", line 39, in <module>
Base.metadata.create_all(engine)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/schema.py", line 2515, in create_all
tables=tables)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2230, in _run_visitor
conn = self.contextual_connect(close_with_result=False)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2340, in contextual_connect
self.pool.connect(),
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 210, in connect
return _ConnectionFairy(self).checkout()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 371, in __init__
rec = self._connection_record = pool._do_get()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 697, in _do_get
con = self._create_connection()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 174, in _create_connection
return _ConnectionRecord(self)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 256, in __init__
self.connection = self.__connect()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 316, in __connect
connection = self.__pool._creator()
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 280, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (OperationalError) (2003, "Can't connect to MySQL server on '192.168.129.139' (111)") None None

我不明白为什么会这样?非常感谢任何帮助?

最佳答案

看起来 mysql 服务器配置为仅在 localhost 上监听。

您可以通过在客户端计算机上运行 telnet 192.168.129.139 3306 来测试。

最可能的原因 - mysqld(=MySQL 守护程序)被配置为这样做。

请尝试关注Configuration step described here :

编辑 /etc/mysql/my.cnf 文件以配置 MySQL 监听来自网络主机的连接,更改 bind-address 指向服务器 IP 地址的指令。例如,在您的情况下,将 192.168.0.5 替换为 192.168.129.139

发件人:

bind-address            = 192.168.0.5

到:

bind-address            = 192.168.129.139

如果没有这样的条目并且您无法连接,请创建一个新行。您也可以尝试注释掉该行。

After making a change to /etc/mysql/my.cnf the MySQL daemon will need to be restarted:

sudo systemctl restart mysql.service

然后使用 telnet 或再次运行您的应用程序进行测试。 netstat 也会有 mysqld 的第二个条目。

关于python - OperationalError : (OperationalError) (2003, "Can' t 连接到 '192.168.129.139' (111)"上的 MySQL 服务器"无 无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16472175/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com