【问题标题】:mysql connecting to remote host failsmysql连接远程主机失败
【发布时间】:2014-06-26 14:55:25
【问题描述】:

在我的网页服务器脚本中,我尝试通过(旧的)mysql_connect() 连接到同一网络中的 ip(数据库服务器)的 mysql。

MySQL 不断向我抛出错误: 用户 ''@'localhost' 拒绝访问数据库 'dbname'

这似乎是在本地主机(网络服务器)上搜索数据库,而不是我输入的 IP(数据库服务器)。

我检查了 my.cnf 并找不到绑定地址或其他任何东西。

当我通过 mysqli_connect() 连接时,可以建立连接,所以我猜应该不存在防火墙问题。

我还在使用mysql_connect的原因是因为我正在将一个大网站转移到一个新的服务器上,并且没有时间通过​​所有脚本更改功能。

有人熟悉这个问题并有任何建议吗?提前致谢!

更新:一段代码

$link = mysql_connect("12.34.56.78", "username", "password");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('dbname', $link);
if (!$db_selected) {
    die ('Can\'t use dbname : ' . mysql_error());
}

【问题讨论】:

  • 我们需要看一些代码吗?
  • 更新了@Sobiaholic 的问题

标签: php mysql mysql-connect


【解决方案1】:

确保您在 php.ini 文件中禁用了“SQL 安全模式”。

来自server参数上mysql_connect的the documentation

服务器
MySQL 服务器。它还可以包含端口号。例如“主机名:端口”或本地套接字的路径,例如本地主机的“:/path/to/socket”。
如果 PHP 指令 mysql.default_host 未定义(默认),则默认值为 'localhost:3306'。 SQL safe mode 中,忽略此参数,始终使用值'localhost:3306'。

类似的过滤适用于usernamepassword 参数:
username 参数默认为拥有服务器进程的用户名,password 默认为空字符串。

您可以从此处阅读有关 SQL 安全模式的更多信息:
http://us1.php.net/manual/en/ini.core.php#ini.sql.safe-mode

【讨论】:

    【解决方案2】:

    看起来 php 正在本地主机上搜索,但使用的是用户名“”。我认为您的用户/通行证组合有问题,并且还将 IP 地址放在错误的位置。可以贴一下代码吗?

    【讨论】:

    • 更新了问题!
    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 2020-06-15
    • 2012-05-05
    • 1970-01-01
    • 2014-09-29
    • 2017-05-05
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多