我花了几个小时试图找出这些东西,但没有运气。 我用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_*
函数来处理我正在处理的当前脚本。
提前致谢
答案 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()