如果你从未分配过根
MySQL的密码,服务器连接时根本不需要密码根
.然而,这是不安全的。有关分配密码的说明,请参见第2.10.4节“MySQL初始帐户的安全”.
如果你知道根
密码和想更改它,见第13.7.1.1节,“ALTER USER语句”,第13.7.1.10节“SET PASSWORD Statement”.
如果你分配了根
以前的密码但已经忘记了,可以重新设置密码。以下部分提供了Windows、Unix和类Unix系统的说明,以及适用于任何系统的通用说明。
在Windows操作系统下,请参考以下步骤重置MySQL密码“根”@“localhost”
帐户。修改用户的密码根
帐户具有不同的主机名部分,请修改说明以使用该主机名。
以Administrator身份登录到系统。
如果MySQL服务器正在运行,请停止它。对于作为Windows服务运行的服务器,转到服务管理器
菜单中,选择 ,然后 ,然后 .在列表中找到MySQL服务并停止它。如果服务器不是作为服务运行,则可能需要使用任务管理器强制其停止。
在单行中创建一个包含密码分配语句的文本文件。将密码替换为您想要使用的密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'
保存文件。本示例假设您为文件命名
C: \ mysql-init.txt
.打开控制台窗口以获得命令提示符cmd作为要运行的命令。
菜单中,选择 ,然后进入启动MySQL服务器
init_file
为文件命名设置的系统变量(注意选项值中的反斜杠加倍):C:\> mysqld——init-file=C:\\ MySQL -init.txt . C:\> cd "C:\Program Files\MySQL\MySQL Server 8.0\bin
如果您将MySQL安装到不同的位置,请调整cd相应的命令。
控件命名的文件的内容
init_file
系统变量在启动时,更改“根”@“localhost”
账户密码。若要使服务器输出显示在控制台窗口而不是日志文件中,请添加
——控制台
的选项mysqld命令。如果您使用MySQL安装向导安装MySQL,您可能需要指定一个
——defaults-file
选择。例如:C:\> mysqld——defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini"——init-file=C:\\ MySQL -init.txt
适当的
——defaults-file
设置可以使用服务管理器找到 菜单中,选择 ,然后 ,然后 .在列表中找到MySQL服务,右键单击它,并选择属性
选择。的可执行文件路径
字段包含——defaults-file
设置。服务器成功启动后,删除
C: \ mysql-init.txt
.
现在,您应该能够以根
使用新密码。停止MySQL服务器并正常重启。如果将服务器作为服务运行,则从Windows Services窗口启动它。如果您手动启动服务器,请使用您通常使用的任何命令。
在Unix环境下,请按照以下步骤重置MySQL密码“根”@“localhost”
帐户。修改用户的密码根
帐户具有不同的主机名部分,请修改说明以使用该主机名。
下面的说明假设您从通常用于运行MySQL服务器的Unix登录帐户启动MySQL服务器。例如,如果您使用mysql
登录帐户,您应该以mysql
在使用使用说明之前。或者,您也可以以根
,但在这种情况下,你必须开始mysqld与——用户= mysql
选择。如果将服务器启动为根
不使用——用户= mysql
,服务器可能创建根
—数据目录中所有的文件,如日志文件,这些可能会导致未来服务器启动的权限相关问题。如果发生这种情况,您必须将文件的所有权更改为mysql
或者移除它们。
以MySQL服务器运行的Unix用户登录到系统上(例如,
mysql
).如果MySQL服务器正在运行,请停止它。定位
.pid
包含服务器进程ID的文件。该文件的确切位置和名称取决于您的发行版、主机名和配置。常见的位置有/var/lib/mysql/
,/var/run/mysqld/
,/usr/local/mysql/data/
.通常,文件名的扩展名为.pid
开始的时候mysqld
或者您的系统主机名。通过发送一个正常的
杀了
(不kill - 9
)至mysqld的过程。的实际路径名.pid
文件在以下命令:删除cat /mysql-data-directory/host_name.pid
类使用反引号(而不是前引号)
猫
命令。这些导致的输出猫
代入杀了
命令。在单行中创建一个包含密码分配语句的文本文件。将密码替换为您想要使用的密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'
保存文件。本示例假设您为文件命名
/home/me/mysql-init
.该文件包含密码,因此不要将其保存在其他用户可以读取的地方。如果您不是以mysql
(服务器运行的用户),确保该文件具有允许的权限mysql
去读它。启动MySQL服务器
init_file
设置文件名称的系统变量:Shell > mysqld——init-file=/home/me/mysql-init &
控件命名的文件的内容
init_file
系统变量在启动时,更改“根”@“localhost”
账户密码。其他选项也可能是必要的,这取决于您通常启动服务器的方式。例如,
——defaults-file
可能需要在init_file
论点。服务器成功启动后,删除
/home/me/mysql-init
.
现在,您应该能够以根
使用新密码。停止服务器并正常重启。
前面的部分提供了专门针对Windows、Unix和类Unix系统的密码重置说明。或者,在任何平台上,都可以使用mysql客户端(但这种方法不太安全):
如果需要,请停止MySQL服务器,然后使用
——skip-grant-tables
选择。这使得任何人都可以在没有密码和所有特权的情况下进行连接,并禁用帐户管理语句,例如改变用户
而且设置密码
.因为这是不安全的,如果服务器是用——skip-grant-tables
选项,它还通过启用禁用远程连接skip_networking
.连接到MySQL服务器mysql客户端;不需要密码,因为服务器是用
——skip-grant-tables
:壳> mysql
在
mysql
客户端,告诉服务器重新加载授权表,以便帐户管理语句工作:mysql> FLUSH PRIVILEGES;
然后更改
“根”@“localhost”
账户密码。将密码替换为您想要使用的密码。修改用户的密码根
帐户具有不同的主机名部分,请修改说明以使用该主机名。mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
现在,您应该能够以根
使用新密码。停止服务器并正常重新启动它(没有——skip-grant-tables
选项,而不启用skip_networking
系统变量)。