mysql自动增量是否可以安全地用作userID?

Sth*_*the 10 mysql userid auto-increment

我正在网站上工作,允许人们在线创建个人资料.我想知道使用MySQL AUTO_INCREMENTed ID作为我的用户ID 是否是正确的选择.还要记住,有一天我可能不得不跨多个服务器复制数据库?

例如,你会在Twitter或Facebook这样的网站上对userIds使用这种方法吗?


我之前尝试用PHP生成userIds.我使用过这样的东西:

function generateID() {
      $possible = "1234567890";
      $code = "";
      $characters = mt_rand(7,14);
      $i = 0;
      while ($i < $characters) { 
            $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $i++;
      }
      return $code;
}
Run Code Online (Sandbox Code Playgroud)

这给出了我需要的值类型,但是我总是必须从DB检查该ID是否还不存在.

有没有更好的方法?

Pek*_*ica 17

mysql自动增量是否可以安全地用作userID?

如果你的安全系统是可靠的,基本上是的.但通常情况下,Web开发人员会因为暴露ID而感到不舒服,这些ID允许通过递增或递减数字来猜测其他 ID.许多人使用随机的多位数ID.

在一个更加模糊的说明中,数字ID还可以让竞争对手通过跟踪增量值的增长来估计您的增长.


dav*_*ell 5

不,这不是一个好主意,因为auto_increment ID难以移植。对于您的用户ID,您希望可以在数据库实例之间备份,还原,移动ID等,而不必担心ID的冲突。

最好使用UUID之类的东西来生成唯一的数字或字母数字字符串。