MySQL 将帐户存储在系统数据库的user表中 mysql。帐户是根据用户名和用户可以连接到服务器的一个或多个客户端主机来定义的。有关user表中帐户表示的信息,请参阅 第 6.2.3 节“授予表”。
帐户还可能具有身份验证凭据,例如密码。凭据由帐户身份验证插件处理。MySQL 支持多个身份验证插件。其中一些使用内置身份验证方法,而另一些则使用外部身份验证方法启用身份验证。请参见第 6.2.17 节,“可插拔身份验证”。
MySQL 和您的操作系统使用用户名和密码的方式有几个区别:
-
MySQL 用于身份验证目的的用户名与 Windows 或 Unix 使用的用户名(登录名)无关。在 Unix 上,默认情况下,大多数 MySQL 客户端尝试使用当前 Unix 用户名作为 MySQL 用户名登录,但这只是为了方便起见。可以很容易地覆盖默认值,因为客户端程序允许使用
-u或--user选项指定任何用户名。这意味着任何人都可以尝试使用任何用户名连接到服务器,因此除非所有 MySQL 帐户都有密码,否则您无法以任何方式确保数据库安全。任何为没有密码的帐户指定用户名的人都可以成功连接到服务器。 -
MySQL 用户名最长为 32 个字符。操作系统用户名可能有不同的最大长度。
警告
MySQL 用户名长度限制在 MySQL 服务器和客户端中是硬编码的,试图通过修改
mysql数据库中表的定义来规避它是 行不通的。mysql除了第 2.11 节“升级 MySQL”中描述的过程外, 您不应以任何方式更改数据库 中表的结构 。尝试以任何其他方式重新定义 MySQL 的系统表会导致未定义和不受支持的行为。服务器可以随意忽略由于此类修改而格式错误的行。 -
为了验证使用内置身份验证方法的帐户的客户端连接,服务器使用存储在
user表中的密码。这些密码不同于用于登录操作系统的密码。用于登录 Windows 或 Unix 机器的“外部”密码与用于访问该机器上的 MySQL 服务器的密码之间没有必要的联系 。如果服务器使用其他插件对客户端进行身份验证,则插件实现的身份验证方法可能会或可能不会使用存储在
user表中的密码。在这种情况下,外部密码也可能用于对 MySQL 服务器进行身份验证。 -
存储在
user表中的密码使用特定于插件的算法进行加密。 -
如果用户名和密码仅包含 ASCII 字符,则无论字符集设置如何,都可以连接到服务器。要在用户名或密码包含非 ASCII 字符时启用连接,客户端应用程序应
mysql_options()使用MYSQL_SET_CHARSET_NAME选项和适当的字符集名称作为参数调用 C API 函数。这会导致使用指定的字符集进行身份验证。否则,除非服务器默认字符集与身份验证默认值中的编码相同,否则身份验证将失败。标准 MySQL 客户端程序支持一个
--default-character-set选项,mysql_options()如刚才所述的那样调用。此外,支持字符集自动检测,如 第 10.4 节“连接字符集和排序规则”中所述。对于使用不基于 C API 的连接器的程序,连接器可能会提供mysql_options()可替代的等效物 。检查连接器文档。前面的说明不适用于
ucs2、utf16和utf32,它们不允许作为客户端字符集。
MySQL 安装过程使用初始root帐户填充授权表,如 第 2.10.4 节“保护初始 MySQL 帐户”中所述,其中还讨论了如何为其分配密码。此后,你通常建立,修改和删除MySQL账户使用语句,例如 CREATE USER, DROP USER, GRANT,和 REVOKE。请参阅 第 6.2.8 节“添加帐户、分配权限和删除帐户”和 第 13.7.1 节“帐户管理声明”。
要使用命令行客户端连接到 MySQL 服务器,请根据需要为要使用的帐户指定用户名和密码选项:
shell> mysql --user=finley --password db_name
如果您更喜欢简短的选项,则命令如下所示:
shell> mysql -u finley -p db_name
如果您 在命令行中省略了--passwordor-p选项后面的密码值 (如刚才所示),客户端会提示输入一个。或者,可以在命令行上指定密码:
shell> mysql --user=finley --password=password db_name
shell> mysql -u finley -ppassword db_name
如果使用该-p选项,则 与以下密码值之间不得有空格-p。
在命令行上指定密码应该被认为是不安全的。请参见第 6.1.2.1 节,“密码安全的最终用户指南”。为避免在命令行上提供密码,请使用选项文件或登录路径文件。请参阅第 4.2.2.2 节,“使用选项文件”和 第 4.6.7 节,“mysql_config_editor — MySQL 配置实用程序”。
有关指定用户名、密码和其他连接参数的其他信息,请参阅第 4.2.4 节,“使用命令选项连接到 MySQL 服务器”。




