【问题标题】:Connect to lan database using python使用python连接局域网数据库
【发布时间】:2015-07-07 17:36:24
【问题描述】:

我已经成功地为我的两台电脑设置了 xampp。当我在 PC 1 上通过 python 尝试连接到 PC 1 的本地主机时,一切正常。 但是当我尝试连接到 PC 2 xampp sql 时,我无法连接。 我已经配置 xampp 以接受来自局域网中其他设备的连接,我可以通过我的网络浏览器完美地访问它,但不能通过我的 python 程序。

这是我的代码:

def GetResults(self):
        try:
            cnx = mysql.connector.connect(user='test', password= '123456', host='paraliass-pc', port='3306', database='test')
            cursor = cnx.cursor()
        except mysql.connector.Error as err:
            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                print("Something is wrong with your username or password")
                self.statusBar().showMessage("Wrong Username or Password")
            elif err.errno == errorcode.ER_BAD_DB_ERROR:
                print("Database does not exist")
                self.statusBar().showMessage("Database does not exist")

        if cnx :               
            print("Connected")
            self.statusBar().showMessage("Connected")

        cursor = cnx.cursor()
        cursor.execute("SELECT * FROM STAFF WHERE NAME LIKE '" + self.textEdit.text() + "%' OR SURNAME LIKE '" + self.textEdit.text() + "%'" + "OR RANK LIKE '" + self.textEdit.text() + "%'")

我收到此错误,当我连接到正在运行程序的同一台电脑时不会出现此错误

UnboundLocalError: local variable 'cnx' referenced before assignment

顺便说一句,如果我故意将本地主机上的用户名或密码更改为错误,我会得到同样的错误。

【问题讨论】:

  • 因为 cnx 仅在连接实际成功时才定义。您似乎应该在记录错误后从该方法返回。

标签: python sql localhost


【解决方案1】:

您应该考虑授予远程连接到 MySQL 的权限,并绑定 MySQL 以使用您选择的 IP 地址和端口。默认情况下,MySQL 只会监听通过 localhost/socket 的连接。

【讨论】:

  • @dmarvelous 我该怎么做?从 phpmyadmin 本地网页?我已经编辑了配置文件并添加了“全部允许”但仍然没有
  • 很遗憾,这不是一个与编程相关的问题,应该在服务器故障时询问。但是,请考虑在 my.cnf 中更改 mysql 的绑定地址
  • @dmarvelous 我将 ip 更改为:192.168.1.6 并取消了该部分的注释,但仍然没有。我不明白问题出在哪里...
  • 你重启mysql了吗?此外,您可能需要为您的新 IP 和所需的用户/通行证授予权限。
  • @dmarvelous 但是如果我需要做所有这些,我怎么能从我的浏览器连接而没有任何问题呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2018-12-15
相关资源
最近更新 更多