MYSQL如何重置root密码

如果您从未为MySQL分配root密码,则服务器根本不需要以root身份连接的密码。但是,这是不安全的。建议一定要设置root密码。

如果您知道root密码并想要更改它,推荐使用ALTER USER user IDENTIFIED BY 'auth_string';

如果您之前分配了root密码但忘记了,您可以分配一个新密码。以下部分提供了适用于Windows、Unix和类Unix系统的说明,以及适用于任何系统的通用说明。

第一、重置root密码:Windows系统

在Windows上,使用以下步骤重置MySQL'root'@'localhost'帐户的密码。要更改具有不同主机名部分的root帐户的密码,请在下面的步骤上把localhost修改为您的主机名。

  1. 以管理员身份登录系统。

  2. 如果MySQL服务器正在运行,则停止它。对于作为Windows服务运行的服务器,请转到服务管理器:从开始菜单中,选择控制面板,然后选择管理工具,然后选择服务。在列表中找到MySQL服务并停止它。如果您的服务器没有作为服务运行,您可能需要使用任务管理器强制它停止。

  3. 创建一个包含密码修改语句的文本文件。将密码替换为您要使用的密码。

    bash 复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
  4. 保存该文件。此示例假定您将文件命名为C:\mysql-init.txt

  5. 打开控制台窗口进入命令提示符:从开始菜单中,选择运行,然后输入cmd作为要运行的命令。

  6. 使用init_file系统变量启动MySQL服务器(注意init-file选项中使用两个反斜杠), 如果您将MySQL安装到不同的位置,请相应地调整cd命令。服务器在启动时执行由init_file系统变量命名的文件的内容,更改'root'@'localhost'帐户密码。:

    bash 复制代码
    C:\> cd "C:\Program Files\MySQL\MySQL Server 8.4\bin"
    C:\> mysqld --init-file=C:\\mysql-init.txt

要使服务器输出显示在控制台窗口而不是日志文件中,请将--console选项添加到mysqld命令中。 如果使用MySQL安装向导安装MySQL,则可能需要指定--defaults-file
--defaults-file选项。例如:

bash 复制代码
C:\> mysqld
         --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.4\\my.ini"
         --init-file=C:\\mysql-init.txt
复制代码
     可以使用服务管理器找到适当的--defaults-file设置:从开始菜单中,选择控制面板,然后选择管理工具,然后选择服务。在列表中找到MySQL服务,右键单击它,然后选择Properties选项。Path to executable字段包含--defaults-file设置。

7.服务器启动成功后,删除C:\mysql-init.txt

您现在应该能够使用新密码以root身份连接到MySQL服务器。停止MySQL服务器并正常重新启动它。如果您将服务器作为服务运行,请从Windows服务窗口启动它。如果您手动启动服务器,请使用您通常使用的任何命令。

第二、重置root密码:Unix和类Unix系统

在Unix上,使用以下步骤重置MySQL'root'@'localhost'帐户的密码。要更改具有不同主机名部分的root帐户的密码,请在下面的步骤上把localhost修改为您的主机名。

这些说明假定您从通常用于运行MySQL服务器的Unix登录帐户启动服务器。例如,如果您使用mysql登录帐户运行服务器,您应该在使用说明之前以mysql身份登录。或者,您可以以root身份登录,但在这种情况下,您必须使用--user=mysql选项启动mysqld。如果您以root身份启动服务器而不使用--user=mysql,服务器可能会在数据目录中创建root所有的文件,例如日志文件,这些可能会导致未来服务器启动的权限相关问题。如果发生这种情况,您必须将文件的所有权更改为mysql或删除它们。

1、以MySQL服务器运行的Unix用户身份登录系统(例如,mysql)。

2、如果MySQL服务器正在运行,则停止它。找到包含服务器进程ID的.pid文件。该文件的确切位置和名称取决于您的发行版本、主机名和配置。常见位置是/var/lib/mysql/、/var/run/mysqld/和/usr/local/mysql/data/。通常,文件名的扩展名为.pid,并以mysqld或您系统的主机名开头。

通过向mysqld进程发送正常的kill(不是kill -9)来停止MySQL服务器。在以下命令中修改为您的.pid文件的实际路径名:

bash 复制代码
$> kill `cat /mysql-data-directory/host_name.pid`

3、在一行中创建一个包含密码分配语句的文本文件。将密码替换为您要使用的密码。

bash 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

4、保存文件。此示例假定您将文件命名为/home/me/mysql-init。该文件包含密码,因此不要将其保存在其他用户可以读取的地方。如果您未以mysql(服务器运行时的用户)身份登录,请确保该文件具有允许mysql读取它的权限。

5、使用init_file系统变量启动MySQL服务器:

bash 复制代码
$> mysqld --init-file=/home/me/mysql-init &

服务器在启动时执行由init_file系统变量命名的文件的内容,更改'root'@'localhost'帐户密码。

根据您通常启动服务器的方式,可能还需要其他选项。例如,init_file参数之前可能需要--defaults-file。

6、服务器启动成功后,删除/home/me/mysql-init。

您现在应该能够使用新密码以root身份连接到MySQL服务器。停止服务器并正常重新启动它。

第三、重置root密码:通用说明

前面的部分提供了专门针对Windows、Unix和类Unix系统的密码重置说明。或者,在任何平台上,您都可以使用mysql客户端重置密码(但这种方法不太安全):

1、如有必要,停止MySQL服务器,然后使用--skip-grant-tables选项重新启动它。这使任何人都可以在没有密码的情况下以所有权限进行连接,并禁用帐户管理语句,例如ALTER USER和SET PASSWORD。因为这是不安全的,如果服务器使用--skip-grant-tables选项启动,它还会通过启用skip_networking来禁用远程连接。在Windows平台上,这意味着您还必须启用shared_memory或named_pipe;否则服务器无法启动。

2、使用mysql客户端连接到MySQL服务器;不需要密码,因为服务器是使用--skip-grant-tables启动的:

bash 复制代码
$> mysql

3、在mysql客户端中,告诉服务器重新加载授权表,以便帐户管理语句工作:

bash 复制代码
mysql> FLUSH PRIVILEGES;

然后更改'root'@'localhost'帐户密码。将密码替换为要使用的密码。要更改具有不同主机名部分的root帐户的密码,请修改localhost以使用您的主机名。

bash 复制代码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

您现在应该能够使用新密码以root身份连接到MySQL服务器。停止服务器并正常重新启动它(注意不再设置--skip-grant-tables选项,也没有启用skip_networking系统变量)。

相关推荐
AI大模型顾潇3 分钟前
[特殊字符] 本地部署DeepSeek大模型:安全加固与企业级集成方案
数据库·人工智能·安全·大模型·llm·微调·llama
FAQEW7 分钟前
MongDB和MySQL的区别
数据库·mysql·mongdb·区别
码农飞哥10 分钟前
互联网大厂Java面试实战:Spring Boot到微服务的技术问答解析
java·数据库·spring boot·缓存·微服务·消息队列·面试技巧
愚戏师11 分钟前
Linux复习笔记(三) 网络服务配置(web)
linux·运维·笔记
JANYI201834 分钟前
嵌入式MCU和Linux开发哪个好?
linux·单片机·嵌入式硬件
niechel1 小时前
02-GBase 8s 事务型数据库 客户端工具dbaccess
数据库
熊大如如1 小时前
Java NIO 文件处理接口
java·linux·nio
扫地生大鹏1 小时前
Mysql-OCP PPT课程讲解并翻译
数据库
晚秋大魔王1 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——nettle库
linux·开源·harmonyos
掘金-我是哪吒1 小时前
分布式微服务系统架构第126集:集群,数据库扩展,多节点分布,分库,分表,分片,分表,运维
运维·数据库·分布式·微服务·系统架构