【问题标题】:MySql Can't Connect from LANMySql 无法从局域网连接
【发布时间】:2018-12-15 22:11:02
【问题描述】:

我有一个 RPi 上的客户端日志记录设备尝试连接到另一个 RPi (192.168.2.204) 上的 MySQL 服务器,但失败了:

pi@RPi0w-Logger:~ $ sudo python envirologremote.py 回溯(最近一次通话最后): 文件“envirologremote.py”,第 7 行,在 conn=MySQLdb.connect(host="192.168.2.204",user="jim",passwd="xxxxxxxxx",db="EnviroLogger") Connect 中的文件“/usr/lib/python2.7/dist-packages/MySQLdb/init.py”,第 81 行 返回连接(*args,**kwargs) init 中的文件“/usr/lib/python2.7/dist-packages/MySQLdb/connections.py”,第 187 行 super(Connection, self).init(*args, **kwargs2) _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '192.168.2.204' (111)")

我可以使用相同的凭据使用 PHPMySQL 连接到服务器,因此服务器正在工作并且可用。

我可以连接到在客户端 RPi 上本地运行的服务器。

我一直在阅读有关该主题的各种文章。它们似乎专注于绑定选项,但它们到处都是配置文件的位置和名称。我确保在任何地方都能找到显示“bind=0.0.0.0”的配置文件,但即使在我重新启动后也没有任何变化。

以下是用户权限:

我该如何解决这个问题?

【问题讨论】:

  • PHPMySQL 是在与 mysql 服务器相同的服务器上运行,还是在您尝试使用 python 连接的同一台服务器上运行。您需要明确授予用户从远程主机连接的权限。所以除了jim@localhost,您还需要授予jim@remotehost的权限
  • 服务器在 IP 地址 ....204 上,客户端在 IP 地址 ....203 上运行。虽然 203 有一个正在运行的 MySQL 服务器,但它不是我要连接的服务器。查看显示用户权限的更新问题....(在 ....204 上)
  • 权限看起来不错。防火墙允许从远程主机连接到端口 3306?或者这可能有助于serverfault.com/questions/171655/… TL;DR:禁用bind-address 并禁用skip-networking

标签: mysql mysql-python


【解决方案1】:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root_password'; 

mysql> 刷新权限;

将“%”替换为您要授予访问权限的 IP!

你需要提供权限希望这个工作

【讨论】:

  • root@% 非常危险,因为它允许从任何地方进行 root 访问。如果可能,您应该限制对已知主机的远程访问
  • 正如您将在上面提到的,出于特定原因,我没有使用“root”。我选择的用户有 INSERT、SELECT 等权限,但没有 GRANT 或其他“类似 root”的权限。
【解决方案2】:

经过十几次尝试,我终于在MySQL的204实例上找到了一个带有“bind=127.0.0.1”语句的配置文件。我必须学习一些 Linux Bash (grep....) 才能找到它,但我在 MariaDB 配置文件中找到了它。

谢谢,我现在可以完成工作了。感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多