2014-12-03 53 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