2.9.4 保护初始 MySQL 帐户
MySQL 安装过程涉及初始化数据目录,包括在 mysql
系统架构中定义的 MySQL 帐户。详细信息,请参见第 2.9.1 节,“初始化数据目录”。
本节描述了如何在 MySQL 安装过程中为初始 root
帐户分配密码,如果您还没有这样做过。
本节所述过程的替代方法:
-
在 Windows 平台上,您可以在安装时使用 MySQL 配置器(见第 2.3.2 节,“使用 MySQL 配置器”)进行该过程。
-
在所有平台上,MySQL 发行版包括mysql_secure_installation,是一个命令行实用工具,可以自动化大部分的安装安全化过程。
-
在所有平台上,MySQL Workbench 可以管理用户帐户(见第 33 章,《 MySQL Workbench》)。
在以下情况下,密码可能已经分配给初始帐户:
-
在 Windows 平台上,使用 MSI 安装程序和 MySQL 配置器安装时,您可以选择分配密码。
-
使用macOS安装程序生成的初始随机密码, installer 在对话框中显示给用户。
-
使用RPM包安装生成的初始随机密码,写入到服务器错误日志中。
-
使用Debian包安装提供了分配密码的选项。
-
手动使用mysqld --initialize初始化数据目录时,mysqld生成初始随机密码,标记为过期,并写入到服务器错误日志中。请参阅第2.9.1节,“初始化数据目录”。
mysql.user
授权表定义了初始MySQL用户账户和访问权限。MySQL安装创建的只有一个'root'@'localhost'
超级用户账户,拥有所有权限,可以做任何事情。如果root
账户密码为空,您的MySQL安装是未保护的:任何人都可以连接到MySQL服务器作为root
无密码,并获得所有权限。
"'root'@'localhost'
" 帐户在 mysql.proxies_priv
表中也有一行,启用了对所有用户和所有主机的PROXY
特权,可以让root
设置代理用户,并将授权其他帐户设置代理用户的权限。见第8.2.19节,“代理用户”.
为初始 MySQL root
帐户分配密码,请按照以下步骤进行。将root-password
在示例中替换为要使用的密码。
如果服务器未运行,先启动它。见第2.9.2节,“启动服务器”.
初始 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节,“重置 root 密码”。
设置其他账户,请参见第8.2.8节,“添加账户、分配权限和删除账户”。