文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  帐户用户名和密码

8.2.1 帐户用户名和密码

MySQL 将帐户存储在 mysql 系统数据库的 user 表中。帐户的定义包括用户名,以及用户可以用来连接到服务器的客户端主机。有关 user 表中帐户表示形式的信息,请参见 第 8.2.3 节“授权表”

帐户还可以具有身份验证凭据,例如密码。凭据由帐户身份验证插件处理。MySQL 支持多个身份验证插件。其中一些使用内置身份验证方法,而另一些则允许使用外部身份验证方法进行身份验证。请参见 第 8.2.17 节“可插拔身份验证”

MySQL 使用用户名和密码的方式与您的操作系统使用用户名和密码的方式之间存在若干区别。

  • MySQL 用于身份验证目的的用户名与 Windows 或 Unix 使用的用户名(登录名)无关。在 Unix 上,大多数 MySQL 客户端默认情况下都会尝试使用当前 Unix 用户名作为 MySQL 用户名登录,但这只是为了方便起见。默认设置可以轻松覆盖,因为客户端程序允许使用 -u--user 选项指定任何用户名。这意味着任何人都可以使用任何用户名尝试连接到服务器,因此除非所有 MySQL 帐户都有密码,否则您无法以任何方式确保数据库安全。任何指定没有密码的帐户的用户名都可以成功连接到服务器。

  • MySQL 用户名最多为 32 个字符。操作系统用户名可能具有不同的最大长度。

    警告

    MySQL 用户名长度限制在 MySQL 服务器和客户端中是硬编码的,试图通过修改 mysql 数据库中的表定义来规避此限制是行不通的

    除了 第 3 章“升级 MySQL” 中描述的过程之外,您绝不应该以任何方式更改 mysql 数据库中表的结构。尝试以任何其他方式重新定义 MySQL 系统表会导致未定义和不受支持的行为。服务器可以忽略由于此类修改而变得格式错误的行。

  • 为了对使用内置身份验证方法的帐户进行客户端连接身份验证,服务器使用存储在 user 表中的密码。这些密码不同于用于登录到操作系统的密码。您用于登录 Windows 或 Unix 计算机的外部密码与您用于访问该计算机上的 MySQL 服务器的密码之间没有必然的联系。

    如果服务器使用其他插件对客户端进行身份验证,则插件实现的身份验证方法可能会也可能不会使用存储在 user 表中的密码。在这种情况下,外部密码也可能用于向 MySQL 服务器进行身份验证。

  • 存储在 user 表中的密码使用特定于插件的算法进行加密。

  • 如果用户名和密码仅包含 ASCII 字符,则无论字符集设置如何,都可以连接到服务器。为了在用户名或密码包含非 ASCII 字符时启用连接,客户端应用程序应使用 MYSQL_SET_CHARSET_NAME 选项和适当的字符集名称作为参数调用 mysql_options() C API 函数。这将导致使用指定的字符集进行身份验证。否则,除非服务器默认字符集与身份验证默认值中的编码相同,否则身份验证将失败。

    标准 MySQL 客户端程序支持 --default-character-set 选项,该选项会导致按上述方式调用 mysql_options()。此外,还支持字符集自动检测,如 第 12.4 节“连接字符集和排序规则” 中所述。对于使用非基于 C API 的连接器的程序,连接器可以提供 mysql_options() 的等效项,可以使用该等效项来代替。请查看连接器文档。

    以上说明不适用于 ucs2utf16utf32,因为它们不允许用作客户端字符集。

MySQL 安装过程会在授权表中填充初始 root 帐户,如 第 2.9.4 节“保护初始 MySQL 帐户” 中所述,其中还讨论了如何为其分配密码。之后,您通常使用 CREATE USERDROP USERGRANTREVOKE 等语句来设置、修改和删除 MySQL 帐户。请参阅 第 8.2.8 节“添加帐户、分配权限和删除帐户”第 15.7.1 节“帐户管理语句”

要使用命令行客户端连接到 MySQL 服务器,请根据要使用的帐户指定用户名和密码选项

$> mysql --user=finley --password db_name

如果您更喜欢简短选项,则命令如下所示

$> mysql -u finley -p db_name

如果在命令行上的 --password-p 选项后省略密码值(如上所示),则客户端会提示您输入密码。或者,可以在命令行上指定密码

$> mysql --user=finley --password=password db_name
$> mysql -u finley -ppassword db_name

如果使用 -p 选项,则 -p 和后面的密码值之间 不能有空格

在命令行上指定密码应该被认为是不安全的。请参阅 第 8.1.2.1 节“最终用户密码安全指南”。为避免在命令行上提供密码,请使用选项文件或登录路径文件。请参阅 第 6.2.2.2 节“使用选项文件”第 6.6.7 节“mysql_config_editor - MySQL 配置实用程序”

有关指定用户名、密码和其他连接参数的更多信息,请参阅 第 6.2.4 节“使用命令选项连接到 MySQL 服务器”