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系统变量)。

相关推荐
DO your like1 小时前
Linux系统操作笔记
linux·服务器·笔记
YashanDB1 小时前
【YashanDB知识库】YAS-05534 unsupport operation: Create sibling files to diskgroups
数据库·yashandb·崖山数据库
重生之我是数学王子1 小时前
内核链表 例题 C语言实现
linux·c++
西瓜味儿的小志3 小时前
Redis的大key和热key问题
数据库·redis·缓存·中间件
只做开心事5 小时前
Linux之信号量
linux
风_流沙7 小时前
python pandas 对mysql 一些常见操作
python·mysql·pandas
练小杰7 小时前
我在广州学 Mysql 系列——有关数据表的插入、更新与删除相关练习
android·运维·数据库·经验分享·学习·mysql·adb
silence2508 小时前
oracle基础:将字段从 VARCHAR 修改为 CLOB
数据库·oracle
hqxnb6668 小时前
深入理解 Linux 管道:创建与应用详解(匿名管道&&进程池)
linux·运维·服务器
2301_767233228 小时前
数据库中的并发控制
数据库·oracle