6.3.1用户名和密码

MySQL将帐户存储在mysql系统数据库的user表中 。帐户是根据用户名称和用户可以连接到服务器的客户端主机或主机定义的。有关user表中的科目表示的信息,请参见 第6.2.2节“授予表”。

该帐户也可能有密码。MySQL支持身份验证插件,因此有可能使用某种外部身份验证方法进行身份验证。参见 第6.3.9节“可插入认证”。

MySQL和您的操作系统使用用户名和密码的方式有几点区别:

  • 用于身份验证的MySQL用户名与Windows或Unix使用的用户名(登录名)无关。在Unix上,大多数MySQL客户端默认尝试使用当前的Unix用户名作为MySQL用户名登录,但这仅仅是为了方便。默认值可以很容易地被覆盖,因为客户端程序允许用-uor 指定任何用户名--user选项。这意味着任何人都可以尝试使用任何用户名连接到服务器,因此除非所有MySQL帐户都有密码,否则无法以任何方式保护数据库安全。任何为没有密码的帐户指定用户名的人都可以成功连接到服务器。
  • MySQL用户名最长可达32个字符操作系统用户名可以具有不同的最大长度。例如,Unix用户名通常限制为八个字符。 警告 MySQL用户名长度的限制是在MySQL服务器和客户端硬编码的,试图通过修改mysql数据库中表的定义来绕过它是行不通的。mysql除非通过第4.4.7节“ mysql_upgrade - 检查和升级MySQL表”中描述的过程, 否则绝不应以任何方式更改数据库 中表的结构 。试图以任何其他方式重新定义MySQL的系统表会导致未定义(和不支持!)的行为。服务器可以自由忽略由于此类修改而变得格式错误的行。
  • 为了验证使用MySQL本地认证(由mysql_native_password认证插件实现)的帐户的客户端连接 ,服务器使用存储在user表中的密码。这些密码与用于登录到操作系统的密码不同。 用于登录Windows或Unix机器的“ 外部 ”密码与用于访问该机器上MySQL服务器的密码之间没有必要的连接。如果服务器使用其他插件对客户端进行身份验证,则插件实现的身份验证方法可能会或可能不会使用存储在user 表中的密码。在这种情况下,可能还会使用外部密码对MySQL服务器进行身份验证。
  • 存储在user表中的密码使用特定于插件的算法进行加密。有关MySQL本机密码散列的信息,请参见 第6.1.2.4节“MySQL中的密码散列”。
  • 如果用户名和密码只包含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。请参见 第13.7.1节“帐户管理语句”。

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

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

如果您更喜欢短期选项,该命令如下所示:

shell> mysql -u finley -p db_name

如果您 在命令行中按--password或-p选项忽略密码值(如刚才所示),客户端会提示输入密码值 。或者,可以在命令行中指定密码:

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

如果您使用该-p选项,则必须 与以下密码值之间没有空格-p。

在命令行中指定密码应被视为不安全。请参见第6.1.2.1节“密码安全的最终用户指南”。您可以使用选项文件或登录路径文件来避免在命令行上输入密码。请参见第4.2.6节“使用选项文件”和第4.6.6节“ mysql_config_editor - MySQL配置实用程序”。

有关指定用户名,密码和其他连接参数的更多信息,请参见第4.2.2节“连接到MySQL服务器”。