# 2.10.4 保护初始 MySQL 帐户

MySQL安装过程涉及初始化数据目录,包括授权表mysql定义 MySQL 帐户的系统模式。有关详细信息,请参阅第 2.10.1 节,“初始化数据目录”.

本节介绍如何为初始密码分配密码在 MySQL 安装过程中创建的帐户,如果您还没有这样做的话。

笔记

执行本节所述过程的替代方法:

  • 在 Windows 上,您可以在安装期间使用 MySQL Installer 执行该过程(请参阅第 2.3.3 节,“Windows 的 MySQL 安装程序”)。

  • 在所有平台上,MySQL 发行版包括mysql_安全的_安装,一个命令行实用程序,可自动执行保护 MySQL 安装的大部分过程。

  • 在所有平台上,MySQL Workbench 都可用并提供管理用户帐户的能力(请参阅第 31 章,MySQL 工作台)。

    在以下情况下,可能已经为初始帐户分配了密码:

  • 在 Windows 上,使用 MySQL Installer 执行的安装为您提供了分配密码的选项。

  • 使用 macOS 安装程序进行安装会生成一个初始随机密码,安装程序会在对话框中向用户显示该密码。

  • 使用 RPM 包安装会生成一个初始随机密码,该密码会写入服务器错误日志。

  • 使用 Debian 软件包的安装为您提供了分配密码的选项。

  • 对于使用手动执行的数据目录初始化mysqld --初始化,mysqld生成初始随机密码,将其标记为过期,并将其写入服务器错误日志。看第 2.10.1 节,“初始化数据目录”.

    mysql.user授权表定义了初始 MySQL 用户帐户及其访问权限。安装 MySQL 只会创建一个'根'@'本地主机'拥有所有权限并且可以做任何事情的超级用户帐户。如果帐户密码为空,您的 MySQL 安装不受保护:任何人都可以连接到 MySQL 服务器 没有密码并被授予所有特权。

    '根'@'本地主机'帐户中也有一行mysql.proxies_priv表,使授予代理特权''@'',即适用于所有用户和所有主机。这使设置代理用户,以及授予其他帐户设置代理用户的权限。看第 6.2.19 节,“代理用户”.

    为初始 MySQL 分配密码帐户,请使用以下过程。代替*根密码*在示例中使用您要使用的密码。

    如果服务器没有运行,请启动它。有关说明,请参阅第 2.10.2 节,“启动服务器”.

    最初的帐户可能有也可能没有密码。选择以下任一适用的程序:

  • 如果帐户存在,初始随机密码已过期,连接到服务器为使用该密码,然后选择一个新密码。如果数据目录是使用初始化的mysqld --初始化,手动或使用在安装操作期间不让您选择指定密码的安装程序。因为密码存在,所以必须用它来连接服务器。但由于密码已过期,除了选择新密码外,您不能将帐户用于任何其他目的,除非您选择了一个。

    1. 如果您不知道初始随机密码,请查看服务器错误日志。

    2. 连接到服务器使用密码:

      $> mysql -u root -p
      Enter password: (enter the random root password here)
      
    3. 选择一个新密码替换随机密码:

      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
      
  • 如果账户存在但没有密码,连接服务器为不使用密码,然后指定密码。如果您使用初始化数据目录,就会出现这种情况mysqld --initialize-insecure.

    1. 连接到服务器不使用密码:

      $> mysql -u root --skip-password
      
    2. 分配密码:

      mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
      

    分配后account 一个密码,您必须在使用该帐户连接到服务器时提供该密码。例如,要使用mysql客户端,请使用以下命令:

$> mysql -u root -p
Enter password: (enter root password here)

关闭服务器mysql管理员, 使用这个命令:

$> mysqladmin -u root -p shutdown
Enter password: (enter root password here)

笔记

有关设置密码的更多信息,请参阅第 6.2.14 节,“分配帐户密码”.如果你忘记你的设置密码后,见第 B.3.3.2 节,“如何重置 Root 密码”.

要设置其他帐户,请参阅第 6.2.8 节,“添加帐户、分配权限和删除帐户”.