2016-08-17 2 views
-2

У меня проблема.

Я пытаюсь подключиться к MySQL-базы данных с этим паролем:

Test12&@_#+.:-;}][{$%!/()?, * "` <>

public function __construct() { 
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
     if (isset($_POST['dbName'])) { 
      $this->dbName = $_POST['dbName']; 
     } 
     if (isset($_POST['dbUser'])) { 
      $this->dbUser = $_POST['dbUser']; 
     } 
     if (isset($_POST['dbPass'])) { 
      $this->dbPass = $_POST['dbPass']; 
     } 
    } 
} 


public function connectToDatabase() { 
    try { 
     $dsn = 'mysql:dbname=' . $this->dbName . ';host=' . $this->dbHost . ';charset=utf8'; 
     $options = array(
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, 
     ); 
     $dbh = new PDO($dsn, $this->dbUser, $this->dbPass, $options); 
     $this->isConnected = TRUE; 
    } catch (PDOException $e) { 
     echo $e->getMessage(); 
     $this->isConnected = FALSE; 
    } 
} 

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

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

Я думаю, что это из-за моего пароля overkill.

Как я могу заставить это работать?

Далее я должен импортировать дамп с этим:

public function importDatabase($dbTarget) { 
    $stmt = 'mysql --host=' . $this->dbHost . ' --user=' . $this->dbUser . ' --password=' . $this->dbPass . ' ' . $this->dbName . ' ' . '<' . ' ' . $dbTarget; 
    var_dump($stmt); 
    exec($stmt, $output, $return); 
    if (!$return) { 
     $this->dbImported = TRUE; 
    } 
} 

же проблема здесь. без импорта с этим паролем.

Как я могу это исправить?

+0

... Я не уверен, что вы ожидаете от нас, чтобы использовать, вы используете неправильный пароль/и или ваш пользователь не имеет доступа к таблице/базе данных, к которой вы пытаетесь подключиться , мы не можем много сделать. – Epodax

+0

Вы проверили, что ваша строка пароля содержит именно то, что вы ожидаете от нее? Поскольку вы используете одиночные и двойные кавычки и, например, знак '$', как вы его назначаете, это очень важно. – jeroen

+0

где вы определили свой пароль * в своем коде *? вы избежали его правильно? можете ли вы войти в свой пароль с помощью mysql-консоли? можете ли вы использовать свой код, если вы установили свой пароль на что-то другое? –

ответ

0

Там может быть несколько проблем здесь, так что убедитесь, что:

  • Вы избежали вашу строку пароля правильно (в частности, символы, такие как ' ->\')
  • Ее на самом деле правильный пароль (войти через консоль и посмотреть, работает ли она)
  • У вашего пользователя действительно есть правильные разрешения для таблиц.

Далее, попробуйте распечатать строку пароля перед подключением и убедитесь, что она действительно правильная.

+0

- Как я правильно освобождаюсь от POST? - Да, это правильный пароль - Пользователь имеет все права – Tom

+0

@ Вы можете сделать это следующим образом: '' unescaped '# "' -> '" unescaped \' \ # "' например. – Magisch

+0

Ist там функция php? я получаю пароль через a (POST) – Tom