我花了几个小时试图弄清楚这些东西,但没有运气。我用谷歌搜索了这个,并在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_*
我必须对我正在处理的当前脚本使用旧函数。
提前致谢