gpt4 book ai didi

mysql - Zend Framework,访问我的数据库被拒绝,但仅在某些 wi-fi 连接下?

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:28 26 4
gpt4 key购买 nike

这是我第二次注意到这个......

我在笔记本电脑上运行我的 Zend Framework 应用程序,但连接到我的远程数据库。它大部分时间都运行良好(在家里和其他地方)。但这是我第二次从我的应用程序中收到错误消息:

SQLSTATE[28000] [1045] Access denied for user 'databaseuser'@'some.ip.address.here' (using password: YES) 

唯一改变的是我的 Wi-Fi 连接。现在,此消息始终在此 wi-fi 连接上弹出,但一旦我使用不同的连接,就不会收到此消息。但是,我注意到在生产服务器上运行应用程序并通过 wi-fi 访问它时也发生过一次。

这对我的申请意味着什么?我怎样才能防止这种情况发生?

最佳答案

MySQL 权限通常按用户客户端主机的 IP 地址授予(从数据库的角度来看,客户端是运行 PHP 应用程序的主机)。

您的 Wi-Fi 路由器可能正在使用 DHCP 为您的笔记本电脑分配 IP 地址,因此无法保证它会在每次更新连接时为您的笔记本电脑授予相同地址。 p>

我看到了两种可能的补救措施:

  1. 一些路由器允许您将特定的 IP 地址绑定(bind)到给定的 MAC 地址,这样一台 PC 就能可靠地获得相同的 IP 地址(这就是我在家庭网络中所做的)。

  2. 或者您可以使用 GRANT 在您的数据库服务器上打开权限声明,以便路由器提供的 DHCP 地址范围内的任何 IP 地址都可以访问数据库。示例:

    GRANT ALL ON test.* TO 'databaseuser'@'192.168.1.%' IDENTIFIED BY 'databasepassword';

    但是,您不想授予对任何 IP 地址的开放访问权限,因为这样更广泛网络上的任何人都可能会联系您的数据库服务器。


更新:当然,192.168.1.% 是您在防火墙后面使用的内部子网。这只是一个示例,表明您可以对您在 GRANT 语句中提供的地址中的任何八位字节使用通配符。

如果您从家里连接,您可能有一个单独的外部 IP 地址,这是您的互联网提供商分配的,但这可能会经常更改,具体取决于他们的网络管理政策。您可能可以选择获取保证不会更改的静态 IP 地址,但这通常会花费更多。

当然,如果您是从咖啡店或机场或其他地方连接,您的连接将显示为他们的外部 IP 地址。

当然,开放您的 MySQL 权限是最灵活的,这样来自任何 IP 地址的任何客户端都可以连接(假设他们知道用户名和密码)。但该计划的问题在于,来自任何 IP 地址的任何客户端都可以连接——即即使不是您。

关于mysql - Zend Framework,访问我的数据库被拒绝,但仅在某些 wi-fi 连接下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937633/

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