我花了几个小时试图弄清楚这件事,但没有运气。我在googled上搜索了这个,还搜索了堆栈溢出上的关键字。
所以,我在这里问问题。作为一个面板,有DirectAdmin。
当我输入DirectAdmin并创建MySQL数据库时,它会告诉我“数据库已经成功创建了”。
并告知:“将此数据用于您的脚本”
Host : localhost (yes, localhost! )
user : db_user
password : db_password
databse : db_name好吧。当我向phpMyAdmin输入这些数据时,它是有效的--用户和密码。我可以使用SQL通过phpMyAdmin操作数据。一切都很好。
但
当我将这些数据输入到某个脚本时
<?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)
这是MySQL一节,来自PHP.INI
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_*函数。
提前感谢
发布于 2012-12-10 14:27:11
http://php.net/manual/en/function.mysql-connect.php
注意: 每当您将"localhost“或"localhost:port”指定为服务器时,MySQL客户端库将覆盖此内容,并尝试连接到本地套接字(Windows上的命名管道)。如果要使用TCP/IP,请使用"127.0.0.1“而不是"localhost”。如果MySQL客户端库试图连接到错误的本地套接字,您应该设置正确的路径,就像在您的中一样,并将服务器字段保留为空。
您可以考虑或使用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()https://stackoverflow.com/questions/13802446
复制相似问题