2016-04-19 26 views
6

Tôi đang chạy cơ sở dữ liệu mysql (được quản lý qua phpmyadmin) trên máy ảo lubuntu, bản thân nó nằm trên máy mac 10.6. Mọi thứ đã làm việc trơn tru cho đến khi trước đó, (và tôi không chạm vào bất kỳ phần nào của mã đăng nhập!) Khi tôi nhận được lỗi sau trên các trang của tôi:Lỗi: Truy cập bị từ chối cho người dùng 'www-data' @ 'localhost'

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

Tôi không hiểu ở đâu lỗi này đang đến từ khi tôi không có một người dùng gọi www-data trên phpmyadmin và các tập tin của tôi có nghĩa vụ phải được sử dụng tài khoản root trên cơ sở dữ liệu:

$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()); 
} 

Sau khi một số googling tôi thấy rằng những người sửa đổi tập tin config.conf của họ , nhưng tôi không biết làm thế nào hay tại sao.

+0

'$ linkpdo = new PDO (" mysql: host = '". $ Dbhost."'; Dbname = '". $ Dbname."' ", $ Dbuser, $ dbpass); ' –

Trả lời

7

Sử dụng một chuỗi trích dẫn đôi và các thông số chính xác cho các kết nối, nó dễ dàng hơn để xây dựng sử dụng một chuỗi trích dẫn đôi và $variable mở rộng .

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

cảm ơn, điều đó đã loại bỏ lỗi đó, mặc dù có vẻ như đã xảy ra lỗi khác ... –

+0

Bạn đã đặt câu hỏi khác với chi tiết về lỗi tiếp theo – RiggsFolly

+0

thực sự, không sao, tôi chỉ quên {thêm xuống mã cho tôi cái màn hình trắng chết –

3

Người dùng và mật khẩu là các thông số riêng biệt, http://php.net/manual/en/pdo.connections.php.

Vì vậy, hãy giải quyết sự lúng túng ở đây->.', '.$dbuser.' , '.$dbpass.

kết nối nên là:

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

Bạn có thể muốn kiểm tra cú pháp đó Chris – RiggsFolly

+0

Aha, cảm ơn, đã bỏ lỡ điều đó trong câu hỏi ban đầu. – chris85

2

Hãy thử điều này:

$linkpdo = new PDO('mysql:host='.$dbhost.';dbname='.$dbname , $dbuser, $dbpass); 
5
<?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(); 
} 
?> 

Hãy thử mã này. Thanh toán liên kết này để biết thêm chi tiết http://php.net/manual/en/pdo.connections.php

Các vấn đề liên quan