在我的de webserver脚本中,我尝试通过(旧的)mysql_connect()连接到mysql到同一网络中的ip(db服务器)。
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());
}
答案 0 :(得分:1)
确保您拥有" SQL安全模式"在php.ini文件中禁用。
来自server
参数的the documentation mysql_connect:
服务器强>
MySQL服务器。它还可以包含端口号。例如"主机名:端口"或者本地套接字的路径,例如":/路径/到/插座"对于localhost 如果PHP指令mysql.default_host未定义(默认),则默认值为' localhost:3306'。 在SQL safe mode中,此参数被忽略,并且值为' localhost:3306'总是被使用。
类似的过滤适用于username
和password
参数:
username
参数默认为拥有服务器进程的用户的名称,password
默认为空字符串。
您可以从这里阅读有关SQL安全模式的更多信息:
http://us1.php.net/manual/en/ini.core.php#ini.sql.safe-mode
答案 1 :(得分:0)
看起来php正在本地主机上搜索,但使用的是用户名""。我认为您的用户/通行证组合存在问题,并且还将IP地址放在错误的位置。你能粘贴你的代码吗?