2013-11-18 5 views
0

я создал базу данных с помощью:Доступ запрещен для пользователя «админ» @ «локальный» MySQL

create database test_db; 

Затем я создал пользователя с помощью:

CREATE USER 'test_user'@'test_db' IDENTIFIED BY 'test_pass'; 
grant all privileges on *.* to 'test'@'test'; 

теперь, когда я пытаюсь подключиться к нему с помощью PHP, я использовал следующий код:

$hostname_localhost ="localhost"; 
    $database_localhost ="test_db"; 
    $username_localhost ="test_user"; 
    $password_localhost ="test_pass"; 
    try{ 
     $dbh = new PDO("mysql:host=$hostname_localhost;dbname=$database_localhost",$username_localhost,$password_localhost); 
     echo 'Connected to DB'.'<br />'; 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $dbh->prepare("SELECT user,host from mysql.user"); 
     $stmt->execute(); 

     $result = $stmt->fetchAll(); 

     foreach($result as $row) 
     { 
      echo $row['user'].'@'.$row['host'].'<br />'; 
     } 

     $dbh = null; 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getTraceAsString().$e->getLine().$e->getMessage(); 
    } 

я получаю следующее сообщение об ошибке:

SQLSTATE [28000] [1045] Доступ запрещен для пользователя 'test_user' @ 'localhost' (с использованием пароля: ДА)

скажите, пожалуйста, как исправить это. как подключиться к моему тестовому пользователю через PHP.

ответ

4

Ваш создать пользователя/грант должен быть:

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'test_pass'; 
grant all privileges on test_db.* to 'test_user'@'localhost'; 

Я также заметил, ваш SQL Select заявление от mysql.user. Если вы хотите, чтобы test_user имел доступ к запросу из этой базы данных, вам понадобится другой оператор GRANT и или изменить часть test_db в заявлении о гранте на *.. Я не уверен, что ваш прецедент и что вам нужно, но просто голова вверх.

Синтаксис для создания пользователя выглядит следующим образом:

CREATE USER 'username'@'host_or_IPAddress' IDENTIFIED BY 'password'; 

Для гранта он (опущена несколько пунктов, пожалуйста, прочитайте ссылочный материал для более вариантов глубины/информация):

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'samehostascreateuser'; 

для справки/чтения: MySQL Create User и Mysql Grant Syntax

+0

в случае, если я не хочу использовать базу данных (после @), то .. ?? Мне жаль, что я немного новичок в MySQL. поэтому хотел знать. –

+0

спасибо, что это сработало .. :) –

+0

@ Vineet Verma Я добавил немного больше, чтобы помочь вам увидеть, как работает синтаксис. –

Смежные вопросы