错误:无法访问用户'www-data'@'localhost'

6

我正在一个 Lubuntu 虚拟机上运行 MySQL 数据库(通过 phpMyAdmin 进行管理),而该虚拟机本身运行在 Mac 10.6 上。一切运作良好,直到之前(并且我没有触及任何登录代码的部分!),当我在我的页面上得到以下错误:

错误:SQLSTATE[28000] [1045] Access denied for user 'www-data'@'localhost' (using password: NO)

我不明白这个错误是从哪里来的,因为我在 phpMyAdmin 中没有名为 www-data 的用户,并且我的文件应该使用数据库上的 root 帐户。

$dbname = 'name';
$dbuser = 'root';
$dbpass = '*****';
$dbhost = 'localhost';
try{
    $linkpdo = new PDO('mysql:host='.$dbhost.';'.$dbname.', '.$dbuser.' , '.$dbpass);
    $linkpdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e) {
    die('Erreur : '.$e->getMessage());
}

在一些搜索后,我发现人们修改了他们的config.conf文件,但我不知道如何或为什么这样做。


$linkpdo = new PDO("mysql:host='".$dbhost."';dbname='".$dbname."'",$dbuser , $dbpass); - Alive to die - Anant
4个回答

6

使用双引号字符串和正确的连接参数,使用双引号字符串和$variable扩展更容易构建。

    $linkpdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $linkpdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

谢谢,那个错误已经被解决了,不过好像又出现了另一个错误... - Jessica Chambers
最好您提出另一个问题,并附上下一个错误的详细信息。 - RiggsFolly
其实,没事了,我只是忘记在代码的后面加上一个 {,这导致了白屏死机。 - Jessica Chambers

3

用户名和密码是两个不同的参数,http://php.net/manual/en/pdo.connections.php

因此,在这里删除连接符-> .', '.$dbuser.' , '.$dbpass

连接应该是:

$linkpdo = new PDO('mysql:host='.$dbhost.';dbname='. $dbname, $dbuser, $dbpass);    

2
你可能想要检查一下语法,Chris。 - RiggsFolly

3
<?php

$dsn = 'mysql:dbname=name;host=localhost';
$user = 'root';
$password = '*****';


try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>

尝试这段代码。更多详情请查看此链接:http://php.net/manual/en/pdo.connections.php

2
试试这个:
 $linkpdo = new PDO('mysql:host='.$dbhost.';dbname='.$dbname , $dbuser, $dbpass);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接