我似乎无法连接使用PHP脚本到MySQL,即使我可以用phpmyadmin的正常连接。我创建了一个带有密码的用户,并给它适当的priveleges为DB,但每次它连接它死说访问被拒绝。我使用基于Windows XP框XAMPP。防火墙是所有残疾,我已经检查了用户名NAD密码是否正确。下面的代码:

$conn=mysql_connect('localhost','westbrookc16','megadots') || die (mysql_error());

千万用户名必须以特定的格式什么的?

有帮助吗?

解决方案

我有一种预感,这里的问题是你给予它的主人,但它真的不是比猜测更。如果您授予访问权限myuser@'127.0.0.1' 或服务器的实际IP地址,你将不会被允许使用localhost作为主机连接。这是由于这样的事实,当“本地主机”被指定为主机,PHP会认为你要使用Unix套接字,而不是网络插座,并在这方面127.0.0.1是不一样的本地主机。

这对于手动输入 mysql_connect()函数

  

请注意:当你指定 “localhost”   或“本地主机:端口”为服务器时,   MySQL客户端库将覆盖   这一点,并尝试连接到本地   插座(在Windows命名管道)。如果你   要使用TCP / IP,使用 “127.0.0.1”   而不是“本地主机”。如果MySQL   客户端库尝试连接到   错误的本地套接字,你应该设置   正确的路径运行时配置   在你的PHP配置和休假   服务器字段为空。

希望这是不完全是多余的。 :)

其他提示

我以前见过此,其中一个MySQL用户通过PHP登录和另一个没有。有时用户甚至从命令行而不是从PHP的工作原理。

这一直是什么埃米尔是reffering两项。 MySQL用户确实是用户/主机对。因此用户megadots @本地和用户megadots @ mycoolhost在mysql.user表中被列为两个单独的记录。

如果可以在命令行登录运行此查询。

SELECT user, host FROM mysql.user

您应该看到用户和thier主机的完整列表。

如果你意识到工作phpMyAdmin的用户,看看主机列这可能是您要使用的主机。

复位主机运行这些查询(!小心做这个用的privilages表整个MySQL安装你的工作)

update mysql.user set host = 'hostname' 
where user = 'username' and host = 'oldhostname';

flush privileges;

如果您看到的用户名和%作为将优先于所有其他主机的记录,如果有用户和%作为东道主为他们的一个多条记录,它可能是用%用户名作为主机有错误密码,无论你怎么manytimes重置用户名@本地的密码是无效的,因为它会被比作上的登录用户名@%。

如果您使用的是Linux使用新立得软件包管理器中找到并下载所有的PHP和MySQL的需要,使他们既可以连接库和器官功能障碍综合征。我的问题是,单独运行PHP脚本在服务器端的工作,但是当我尝试使用PHP脚本连接到MySQL将无法连接我只看到一个白色的页面。然后我发现我没有PHP使用瞬移到MySQL的MySQL客户端库。我只用了MySQL服务器库。一旦我安装了客户端库,并重新启动Apache服务器我的PHP脚本没有问题的连接。默认情况下PHP 5不与MySQL客户端侧的库来安装。

在我的情况下,它变成我已经删除了用于创建我所用的数据库中的用户。通常,这应该给错误“用户指定的定义者不存在”,但由于某种原因它简单地返回剥夺了我的PHP代码更普遍的访问。我不知道为什么我仍然可以通过命令行等接口登录。为了纠正我的问题,我重新被删除的用户。

这要么是一个错字,或者您还没有授予的特权。有时也可以是惊人很难发现这些。

我建议不要用phpmyadmin,但下载 SQLyog的副本(免费的社区版是伟大的),并尝试通过您的用户登录。一旦你的问题诊断有复制/粘贴的用户名/密码,回到你的脚本。

顺便phpMyAdmin是好的,但如SQLyog的程序一般比较方便,因此值得一试,反正 - 我敢肯定你会被转换。如果SQLyog的不是很对你的口味还有其他一些免费的和商业的替代品。

  

和赋予它适当的priveleges为分贝

如何? 你给予它的时候使用什么样的主机用户?

这是它是如何正常进行:

GRANT ALL ON mydb.* TO 'someuser'@'somehost' identified by 'password';
FLUSH privileges;

你的情况“某”可能应该“本地主机”或“127.0.0.1”(见其他后)

语法参考: http://dev.mysql.com/ DOC / refman / 5.1 / EN / grant.html

具有一个类似的问题后,我发现,与替换“127.0.0.1”“本地主机”并获得成功(尽管我是能够成功地通过使用“本地主机”连接终端)。

我有同样的问题,但后来我想通了,如果你在用“%”(任何主机)的默认账户离开,无密码,那么你就不能使用密码进行连接。我不知道这个问题到底是什么,但删除它们解决它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top