奇怪的主持人问题

时间:2012-12-10 14:00:57

标签: php mysql phpmyadmin

我花了几个小时试图找出这些东西,但没有运气。 我用Google搜索,并在stackoverflow上搜索关键字。

所以,我在这里问问题。 作为一个小组,有DirectAdmin。

当我进入DirectAdmin并创建MySQL时 数据库告诉“数据库已成功创建”。

并且还告诉:“将这些数据用于您的脚本”

Host     : localhost (yes, localhost! )
user     : db_user
password : db_password
databse  : db_name

好。当我将此数据输入phpMyAdmin时,它可以正常工作 两者 - 用户和密码。我可以使用SQL通过phpMyAdmin操作数据。 没关系。

BUT

当我将此数据输入某个脚本时

<?php

$host     = 'localhost';
$password     = 'db_password';
$db           = 'db_name';
$user     = 'db_user';

// I'm aware of PDO and I use this one but PDO isn't installed on my hosting provider
// This is just test to see if connection can be established

if ( ! mysql_connect($host, $user, $password) ){

    die( mysql_error() );
}

所以它告诉我,“访问被拒绝为db_user @ localhost使用密码(是)”! 有什么问题?!我输入了正确的数据!

然后我尝试使用我的网站的地址而不是'localhost'。 然后mysql_error()会这样说:“此主机不允许从mysite.com连接”。

再次 - 从phpMyAdmin我可以看到:user - db_user@localhost(这样用户名和主机都没有错)

问题是:为什么它允许从phpMyAdmin连接而不是从自定义脚本连接?

更新1 。 我尝试将port(如@Bondye建议)和localhost更改为127.0.0.1。但得到同样的错误 - Access denied for user 'db_user'@'localhost' (using password: YES)

这是PHP.INI的MySQL部分

Active Persistent Links  0  
Active Links  0  
Client API version  5.1.53  
MYSQL_MODULE_TYPE  external  
MYSQL_SOCKET  /tmp/mysql.sock  
MYSQL_INCLUDE  -I/usr/local/include/mysql  
MYSQL_LIBS  -L/usr/local/lib/mysql -lmysqlclient  

Param:              Local Value: Master Value: 

mysql.allow_persistent  Off      Off 
mysql.connect_timeout   60       60 
mysql.default_host      no value no value 
mysql.default_password  no value no value 
mysql.default_port      no value no value 
mysql.default_socket    no value no value 
mysql.default_user      no value no value 
mysql.max_links         5        5 
mysql.max_persistent    0        0 
mysql.trace_mode        Off      Off 



System : FreeBSD

我知道PDO和MySQLi,但我不能使用它们。我必须使用旧的mysql_*函数来处理我正在处理的当前脚本。

提前致谢

1 个答案:

答案 0 :(得分:1)

http://php.net/manual/en/function.mysql-connect.php

  

注意:

     

每当您指定“localhost”或“localhost:port”作为服务器时,   MySQL客户端库将覆盖它并尝试连接到本地   socket(Windows上的命名管道)。如果要使用TCP / IP,请使用   “127.0.0.1”而不是“localhost”。如果MySQL客户端库尝试   要连接到错误的本地套接字,您应该设置正确的路径   与在PHP配置中一样,并将服务器字段留空。

你可能会考虑使用mysqli(以i结尾进行改进)

Use of this extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

    mysqli_connect()
    PDO::__construct()