php - 如何从 php 连接到 mysql?

标签 php mysql linux apache ubuntu

我正在研究一本关于 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/

相关文章:

php - 使用 PHP/MySQL 导入 CSV 数据 - 完整示例

javascript - Highcharts:具有许多数据点的折线图

php - Laravel:列选择,找不到列

regex - 使用 find 匹配以数字开头的文件名

javascript - 让 Google Bot 检测 AJAX 内容

php - MySQL数据库搜索php问题

javascript - DataTables 中的 PHP 重定向按钮不起作用

mysql - 使用 mysql 在 nodejs 中进行事务管理

android - 使用 32 位 Android SDK 作为用户

C使用信号同步进程