【问题标题】:Unable to access remote MySql Server from local PHP script无法从本地 PHP 脚本访问远程 MySql Server
【发布时间】:2015-09-11 20:24:09
【问题描述】:

希望各位有经验的朋友能帮我解惑!我进行了搜索和研究,发现多个来源讨论了与我试图解决的问题类似的问题,但似乎没有一个能帮助解决这种情况。在没有给出我尝试过的完整历史列表的情况下,这里是目前的情况:

  • 我有一个使用 MySql 数据库设置的简单 Debian 服务器。所有相关的防火墙端口都已打开,并且已为 'username'@'mylocalglobalip' 申请了特定的 GRANT PRIVILEGES(用户名不是 root)。
  • 在我的本地 Apache 实例(我目前在 OS X 上运行它)上,我安装了最新的 PHP,并且可以正常工作。我已经通过访问 localhost/website/phpinfo.php 确认了这一点 - PHP 本身工作正常。
  • 我已经阅读了有关使用 mysqli 设置简单 MySql 连接的所有教程。这是我的简单代码(已删除凭据):

    $connection = mysqli_connect($mylocalglobalip,$username,$password,$dbname);

    无论我尝试过什么,我都会保持友好

"mysqli_connect(): (HY000/1045): 拒绝用户访问 'username'@'mylocalglobalip'(使用密码:YES)”警告。

  • 如果我通过 SSH 连接到远程服务器,我可以从我的非 root 登录和 root 登录进入 MySql 控制台。但是,我只有使用...才能登录。

    mysql -u username -p

    ... 并在出现提示时提供我的密码。但是,如果我输入...

    mysql -u username -pPassword

    ...不走运。我再次收到拒绝访问。

  • 最后,为了确保我的防火墙上的所有内容都打开并且我的服务器和 MySql 可以远程访问,我安装了 MySqlWorkbench 的本地实例。我输入了相同的凭据,我可以毫无问题地登录到远程服务器。

为什么我可以通过 Workbench 登录,但不能通过我的本地 PHP 脚本登录?我需要在本地和/或远程配置文件中启用明显的参数吗?从我看过的 php 和 mysql 配置文件中,我看不到任何会阻止 PHP 连接的东西。

我很乐意根据要求提供配置和代码 sn-ps!

感谢阅读!

【问题讨论】:

  • 权限被拒绝。您正在连接,但使用了错误的凭据。
  • 听起来好像有两个问题,密码中的特殊字符就是其中之一。几乎可以肯定,您在 MySQL 服务器上拥有多个帐户,具有相同的用户名和不同的密码。检查 mysql.user 表。使用-p'your-password'(单引号,无空格)解决本地问题。
  • 感谢迈克尔的提示。您的评论促使我考虑检查我的 PHP 代码中单引号和双引号中的特殊字符!我现在可以睡得更好了。谢谢:)

标签: php mysql


【解决方案1】:

感谢 cmets 和响应,解决方案自行呈现。 Michael (sqlbot) 提到在单引号中使用 -p'your-password' 来封装密码中的任何特殊字符。然后我(作为一个 PHP 菜鸟)突然想到要在 PHP 代码中检查我的 $password 变量。果然我有一些大意:

$password = "some random pa$$word goes here";

哎呀。 PHP 中双引号内的 $ 字符表示在字符串中插入变量。这很可能被解释为:

"some random pa goes here" // Since $ is empty and $word isn't a declared variable!

在单引号之间加上 $ 特殊字符的密码解决了简单的 PHP 语法问题。

感谢您阻止我走上服务器重新配置的道路,并鼓励我更仔细地搜索我的 PHP 代码!

【讨论】:

    【解决方案2】:

    这是一次错误搜索,听起来至少在某些情况下凭据是错误的。

    检查 mysql 日志并验证当您从命令行成功登录以及从 PHP 登录或从命令行失败时它显示的是同一用户。您有时可能会显示为“用户名”或“用户名”@“本地主机”或“用户名”@“fqdn”,并因此受到不同的对待。

    逐个字母仔细检查,确保您没有在两个不同的地方输入不同的凭据。验证凭据是否正确导入到您的 php 文件中。

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2023-03-27
      • 2016-06-23
      相关资源
      最近更新 更多