gpt4 book ai didi

php - 如何从 php 连接到 mysql?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:19 25 4
gpt4 key购买 nike

我正在研究一本关于 php/mysql 开发的书中的示例。我在 linux/apache 环境中工作。

我已经建立了一个数据库和一个用户。我尝试连接这行代码:

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

我收到这个错误:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'www-data'@'localhost' (using password: YES) in /var/www/hosts/dj/connect.php on line 3 unable to connect to database: Access denied for user 'www-data'@'localhost' (using password: YES)

我只能猜测这里发生了什么:我认为 www-data 是 apache 的用户名。在数据库连接时,传递给 mysql 的凭据不是我的数据库用户的凭据,而是 apache 自己的凭据。这就是这里发生的事情吗?

如何传递我为用户定义的凭据?

编辑:顺便说一句——我在变量 $db_hostname、$db_username、$db_password 中确实有凭据。

它们由另一个文件使用 require_once 传入。如果找不到该文件,则会出现错误。所以,我知道我的用户名和密码正在被我的脚本使用。

我的两个脚本都可以在这里看到: http://pastebin.com/MUneLEib

#

已解决:

谢谢你们。

你们中的一些人指出我编码粗心。

此外,我对 Neo 的回答特别满意:他告诉我为什么使用 apache 进程所有者的用户名。

:)

最佳答案

我刚刚看了你的代码!带有用户名的变量是 $database_username 但是您正在使用 $db_username.. 将您的代码更改为:

$db_server = mysql_connect($db_hostname, $database_username, $db_password);

或者您可以更改用户名行:$db_username='[your mysql user]';//或者你创建的用户名

当你不传递任何东西时,mysql 会假设用户是用户,但它不会获得密码,所以如果你没有定义 $db_password,它会说:(using password:NO)

你为你的用户设置了 $database_username 但你传递的 $db_username 没有设置,所以当没有为 mysql 用户传递任何密码时,用户是默认的 linux 用户名!由于没有具有该密码或权限的 mysql 用户,甚至没有具有该名称的 mysql 用户,您没有访问权限!

该用户是 www-data,正如您猜测的那样,它是分配给客户端请求的 apache 用户!

关于php - 如何从 php 连接到 mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com