2014-12-03 55 views
1


我已經被賦予了使用mysqli到PDO學習和更新許多php腳本的任務。
由於某些未知原因,當我嘗試連接到我們的mysql數據庫時,它會截斷用戶名。
這是我的PHP:PDO連接截斷的用戶名

try{ 
    $user = "this_is_a_really_really_really_long_user_name"; 
    echo $user."\n"; 
    $pass = "StackOverflowExample"; 
    $DBH = new PDO("mysql:host=localhost;dbname=example", $user, $pass); 
} 
catch(PDOException $err){echo $err->getMessage(); $error = true;} 

的回波返回值:

this_is_a_really_really_really_long_user_name 

然後我的catch語句輸出:

SQLSTATE[28000] [1045] Access denied for user 'this_is_a_really'@'localhost' (using password: YES) 

正如你所看到的,用戶名被截斷。 任何援助將不勝感激。

+0

嗯,你確定MySQL實際上支持這麼長的用戶名 - 它是否在命令行客戶端工作? – Andrea 2014-12-03 23:37:31

+0

如果確實有效,我建議在bugs.php.net上提交一個bug :) – Andrea 2014-12-03 23:37:48

+0

它的確行得通,因爲我在mysqli_connect語句中使用了相同的用戶名:$ con = mysqli_connect(「localhost」,「example」,「 StackOverflowExample」, 「this_is_a_really_really_really_long_user_name」); – Zze 2014-12-03 23:41:08

回答

4

MySQL用戶名可以高達16個字符長。操作系統用戶名,因爲它們與MySQL用戶名完全無關,可能會有不同的最大長度。例如,Unix用戶名通常限於八個字符

+1

你能否提供「unix」用戶名限制的來源?剛剛在FreeBSD中添加了一個'abcdefghijklmnop'。 – Aif 2014-12-04 00:33:54

+0

看起來答案是取決於:http://serverfault.com/a/408950 – 2014-12-04 00:43:51

+0

更多信息在mysql文檔http://dev.mysql.com/doc/refman/5.7/en/user-names.html – 2014-12-04 01:16:01