2016-08-17 84 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'的訪問(使用密碼:是)

我認爲這是因爲我的矯枉過正的密碼。

我如何得到這個工作?

接下來我要導入一個轉儲與此:

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-console用你的密碼登錄嗎?如果你將你的密碼設置爲不同的東西,你可以使用你的代碼嗎? –

回答

0

有可能是一對夫婦的問題在這裏,所以一定要確保:

  • 您正確轉義您的密碼字符串(具體的人物,如' - >\'
  • 它實際上正確的密碼(通過登錄控制檯,看看它是否工作)
  • 您的用戶實際上擁有正確的表權限。

此外,嘗試在連接之前打印您的密碼字符串,並驗證它確實是正確的。

+0

- 我如何正確逃避POST? - 是的,它是正確的密碼 - 用戶擁有所有權利 – Tom

+0

@你可以這樣轉義:''未轉義'#「' - >''未轉義\'\#」'例如。 – Magisch

+0

有沒有PHP的功能?我從(POST)獲取密碼 – Tom