2.10.4 保护初始 MySQL 帐户
MySQL 的安装过程涉及初始化数据目录,包括mysql
系统数据库中用于定义 MySQL 帐户的授权 table。有关详细信息,请参见第 2.10.1 节“初始化数据目录”。
本节介绍了如何为在 MySQL 安装过程中创建的初始root
帐户分配密码(如果尚未这样做的话)。
Note
执行本节中描述的过程的替代方法:
-
在 Windows 上,可以使用 MySQL Installer 在安装过程中执行该过程(请参见第 2.3.3 节“用于 Windows 的 MySQL Installer”)。
-
在所有平台上,MySQL 发行版均包含mysql_secure_installation,这是一个命令行 Util,可自动执行许多确保 MySQL 安装安全的过程。
-
在所有平台上,都可以使用 MySQL Workbench,并且可以 Management 用户帐户(请参见第 30 章,MySQL Workbench)。
在以下情况下,可能已经为初始帐户分配了密码:
-
在 Windows 上,使用 MySQL Installer 执行的安装使您可以选择分配密码。
-
使用 macOS 安装程序进行安装会生成一个初始随机密码,安装程序会在对话框中向用户显示该密码。
-
使用 RPM 软件包进行安装会生成一个初始随机密码,该密码将写入服务器错误日志中。
-
使用 Debian 软件包进行安装时,可以选择分配密码。
-
对于使用mysqld --initialize手动执行的数据目录初始化,mysqld会生成一个初始随机密码,将其标记为过期,然后将其写入服务器错误日志。参见第 2.10.1 节“初始化数据目录”。
mysql.user
授予 table 定义了初始 MySQL 用户帐户及其访问权限。安装 MySQL 只会创建一个具有所有特权并且可以执行任何操作的'root'@'localhost'
超级用户帐户。如果root
帐户的密码为空,则您的 MySQL 安装不受保护:任何人都可以root
的身份(无密码)连接到 MySQL 服务器,并被授予所有特权。
'root'@'localhost'
帐户在mysql.proxies_priv
table 中还具有一行,该行允许授予''@''
的PROXY特权,即授予所有用户和所有主机的PROXY特权。这使root
可以设置代理用户,以及将设置代理用户的权限委托给其他帐户。参见第 6.2.14 节“代理用户”。
要为初始 MySQL root
帐户分配密码,请使用以下过程。将示例中的* root-password
*替换为您要使用的密码。
如果服务器未运行,请启动它。有关说明,请参见第 2.10.2 节“启动服务器”。
初始root
帐户可能没有密码。选择以下任一过程:
-
如果
root
帐户的初始随机密码已过期,请使用该密码以root
的身份连接到服务器,然后选择一个新密码。如果数据目录是使用mysqld --initialize手动或使用安装程序初始化的,而该安装程序在安装操作期间没有为您提供指定密码的选项,则属于这种情况。因为密码存在,所以必须使用它来连接到服务器。但是由于密码已过期,因此除非选择一个新密码,否则您不能将帐户用于选择其他目的,而只能选择一个新密码。 -
如果您不知道初始随机密码,请查看服务器错误日志。
-
使用密码以
root
的身份连接到服务器:
shell> 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
的身份连接到服务器:
shell> mysql -u root --skip-password
- 分配密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
为root
帐户分配密码后,每次使用该帐户连接到服务器时,都必须提供该密码。例如,要使用mysqlClient 端连接到服务器,请使用以下命令:
shell> mysql -u root -p
Enter password: (enter root password here)
要使用mysqladmin关闭服务器,请使用以下命令:
shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)
Note
有关设置密码的其他信息,请参见第 6.2.10 节“分配帐户密码”。如果您在设置root
密码后忘记了密码,请参见B.4.3.2 节,“如何重设根密码”。
要设置其他帐户,请参阅第 6.2.7 节“添加帐户,分配特权和删除帐户”。