MySQL 安装过程包括初始化数据目录,包括定义 MySQL 帐户的 mysql
系统模式中的授权表。有关详细信息,请参见 第 2.9.1 节,“初始化数据目录”。
本节介绍如何在 MySQL 安装过程中创建的初始 root
帐户上分配密码,前提是您尚未执行此操作。
执行本节中描述的过程的替代方法
在 Windows 上,您可以在安装过程中使用 MySQL 配置器执行此过程(请参见 第 2.3.2 节,“配置:使用 MySQL 配置器”)。
在所有平台上,MySQL 发行版都包含 mysql_secure_installation,这是一个命令行实用程序,可自动执行保护 MySQL 安装的大部分过程。
在所有平台上,MySQL Workbench 都可用,并提供管理用户帐户的功能(请参见 第 33 章,MySQL Workbench )。
在以下情况下,初始帐户可能已分配密码
在 Windows 上,使用 MSI 安装程序和 MySQL 配置器执行的安装会为您提供分配密码的选项。
使用 macOS 安装程序进行的安装会生成一个初始随机密码,安装程序会在对话框中将其显示给用户。
使用 RPM 软件包进行的安装会生成一个初始随机密码,该密码会写入服务器错误日志。
使用 Debian 软件包进行的安装会为您提供分配密码的选项。
对于使用 mysqld --initialize 手动执行的数据目录初始化,mysqld 会生成一个初始随机密码,将其标记为已过期,并将其写入服务器错误日志。请参见 第 2.9.1 节,“初始化数据目录”。
mysql.user
授权表定义了初始 MySQL 用户帐户及其访问权限。安装 MySQL 仅创建一个具有所有权限的 'root'@'localhost'
超级用户帐户,可以执行任何操作。如果 root
帐户的密码为空,则您的 MySQL 安装将不受保护:任何人都可以以 root
身份无需密码连接到 MySQL 服务器并获得所有权限。
'root'@'localhost'
帐户还在 mysql.proxies_priv
表中有一行,该行允许授予 PROXY
权限,用于 ''@''
,即所有用户和所有主机。这使 root
能够设置代理用户,以及将设置代理用户的权限委派给其他帐户。请参见 第 8.2.19 节,“代理用户”。
要为初始 MySQL root
帐户分配密码,请使用以下过程。在示例中将 root-password
替换为要使用的密码。
如果服务器未运行,请启动服务器。有关说明,请参见 第 2.9.2 节,“启动服务器”。
初始 root
帐户可能已具有密码,也可能没有。选择以下适用过程
如果
root
帐户存在,并且具有已过期的初始随机密码,请使用该密码以root
身份连接到服务器,然后选择一个新密码。如果数据目录是使用 mysqld --initialize 初始化的,无论是以手动方式还是使用在安装操作期间没有为您提供指定密码选项的安装程序,都是这种情况。由于密码存在,您必须使用它来连接到服务器。但是,由于密码已过期,您无法使用该帐户执行任何其他目的,除了选择一个新密码,直到您选择一个新密码为止。如果您不知道初始随机密码,请查看服务器错误日志。
使用密码以
root
身份连接到服务器$> mysql -u root -p Enter password: (enter the random root password here)
选择一个新密码来替换随机密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
如果
root
帐户存在,但没有密码,请使用无密码以root
身份连接到服务器,然后分配一个密码。如果您使用 mysqld --initialize-insecure 初始化数据目录,则是这种情况。使用无密码以
root
身份连接到服务器$> mysql -u root --skip-password
分配密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
为 root
帐户分配密码后,您必须在使用该帐户连接到服务器时始终提供该密码。例如,要使用 mysql 客户端连接到服务器,请使用以下命令
$> mysql -u root -p
Enter password: (enter root password here)
要使用 mysqladmin 关闭服务器,请使用以下命令
$> mysqladmin -u root -p shutdown
Enter password: (enter root password here)
有关设置密码的更多信息,请参见 第 8.2.14 节,“分配帐户密码”。如果您忘记了设置 root
密码,请参见 第 B.3.3.2 节,“如何重置根密码”。
要设置其他帐户,请参见 第 8.2.8 节,“添加帐户、分配权限和删除帐户”。