2

我花了几个小时试图弄清楚这些东西,但没有运气。我用谷歌搜索了这个,并在stackoverflow上通过关键字搜索。

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

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

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

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

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

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

<?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 的访问”!有什么问题?!我输入了正确的数据!

然后我尝试使用我的网站地址而不是“本地主机”。然后mysql_error()告诉类似这样的内容:“此主机不允许来自 mysite.com 的连接”。

再次 - 从 phpMyAdmin 我可以看到:用户 - 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_*我必须对我正在处理的当前脚本使用旧函数。

提前致谢

4

1 回答 1

1

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

笔记:

每当您指定“localhost”或“localhost:port”作为服务器时,MySQL 客户端库将覆盖它并尝试连接到本地套接字(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()
于 2012-12-10T14:27:11.543 回答