【问题标题】:How to reset mysql root password?如何重置mysql的root密码?
【发布时间】:2010-11-23 16:11:20
【问题描述】:

我的 phpmyadmin 有点问题,实际上我不小心删除了多个用户帐户。 由于没有错误就无法连接:

# 1045 - Access denied for user 'root' @ 'localhost' (using password: NO)

我之前在网上搜索了一下,甚至是技术:

UPDATE mysql.user SET Password = PASSWORD ('') WHERE User = 'root';
FLUSH PRIVILEGES;

不起作用,或者我不明白它是如何工作的。

我使用的是 FreeBSD 8.1,我的 PhpMyadmin 版本是 2.11。

提前感谢您的回答。

【问题讨论】:

    标签: mysql mysql-error-1045


    【解决方案1】:

    我在这里总结了我的解决方案:http://snippets.dzone.com/posts/show/13267

    sudo stop mysql
    sudo mysqld --skip-grant-tables --skip-networking
    
    mysql
    mysql> update mysql.user set password = password('your_new_password') where user = 'root';
    mysql> flush privileges;
    mysql> exit;
    sudo mysqladmin shutdown
    sudo start mysql
    

    【讨论】:

    • 请不要多次发布完全相同的答案。如果问题是重复的,请将其标记为这样。
    • 上面的 sn-p 中缺少 - 尽管在异地摘要中进行了解释。 1) 运行第一个 sudo mysqld... 后,切换到不同的终端窗口。 2)运行mysqladmin shutdown时提示输入新密码:sudo mysqladmin shutdown -u root -p
    【解决方案2】:

    我正在使用 MySQL Server 8,这就是我解决此问题的方法。

    创建一个文件并相应地命名它。我把它命名为reset.txt。将以下内容放入文件中,但更改 MyNewPass。这将是您的新 SQL 密码

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
    

    停止我的 SQL 服务器(转到服务并搜索 MYSQL 并右键单击它并停止)

    现在在 My SQLserver 目录的 bin 文件夹中打开一个 cmd。在我的情况下是

    C:\Program Files\MySQL\MySQL Server 8.0\bin

    执行以下命令。

    mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\reset.txt' 
    

    注意:我的 reset.txt 文件位于 C 盘。给出正确的路径。检查 my.ini 文件是否在目录中。就我而言,它在

    C:\ProgramData\MySQL\MySQL 服务器 8.0\my.ini

    最后,重新启动 SQL Server。检查您的新密码。

    【讨论】:

    • 我尝试了这个解决方案,但我仍然收到一条错误消息,提示我无法连接到数据库。
    • @wolfblitza 当您尝试 mysqld 命令时,您是否在管理员 cmd 中尝试过。如果您没有这样做,请告诉我您是否遇到同样的错误。
    • 是的,我在管理员中运行它
    【解决方案3】:

    对于 mysql 5.7.16 或更高版本,我发现 this(来自 mysql.com)是可行的解决方案。以下是与以前的旧版本相比的一些不同点

    1) 我使用下面的命令在安全模式下运行 mysql,这些参考对我来说实际上工作得很好(mysql 5.7.16 ubuntu 16.04)。

    mysqld_safe --skip-grant-tables --skip-networking
    

    2) 以下更新 stmt 不适用于更高版本(即 5.7 及更高版本)

    -- NOT Working for 5.7 and later
    UPDATE mysql.user SET Password = PASSWORD ('') WHERE User = 'root';
    FLUSH PRIVILEGES;
    

    在下面使用 5.7.6 及更高版本

    UPDATE mysql.user
        SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
        WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES;
    

    OR 用户低于 5.7.5 或更早版本。

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    

    【讨论】:

    • 您应该尝试在答案正文中包含重要部分并使用链接作为参考。
    【解决方案4】:

    请按照以下链接中的说明重置您的root密码。您必须从mysql外部进行。

    重置MySql密码

    忘记您的 MySQL 密码可能会让您非常头疼。这里有一些简单的步骤,您可以按照这些步骤在 Windows 下恢复 MySql 密码 停止 MySql

    在继续之前,您必须停止 MySql 服务。在 Windows 环境中,转到“任务管理器”并在“服务”选项卡下找到 MySQL 并停止它。 编写Sql修改密码

    您需要做的就是创建一个文本文件并将以下两行放入其中。 UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';同花顺特权;将其保存在 C:\ 驱动器下并命名为 'mysql-init.txt' 是时候自行重启 MySQL 了。

    现在是时候重新启动您之前停止的 MySQl,但这次是从命令行。 C:> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt 完成!

    现在您可以使用新密码登录了。当您完成删除您在上一阶段创建的文件时。

    还有一个链接 (http://kaziprogrammingblog.osinweb.com/article/showarticle/Resetting-MySql-Password) 我已经解释了同样的事情。

    希望这会有所帮助..:)

    【讨论】:

      【解决方案5】:

      Windows 上 XAMPP 的答案:

      • 编辑 C:\xampp\mysql\bin\my.ini 并在 [mysqld] 下面插入 skip-grant-tables
      • 从控制面板界面重启 MySQL
      • 在 phpMyAdmin 窗口的顶部面板中选择 SQL 选项卡。这将打开 SQL 选项卡,我们可以在其中运行 SQL 查询。现在在文本区域中输入以下查询并单击 Go

      UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';刷新特权;

      • 删除 my.ini 文件中的 skip-grant-tables
      • 从控制面板界面重启 MySQL

      完成!

      请注意,mysql root 用户密码不必与 phpmyadmin 的密码相同。

      【讨论】:

        【解决方案6】:

        这是我所做的,并且成功了:
        安装(rpm 安装)后,执行vi /etc/my.cnf
        这将为您提供设置 datadir 的路径。对我来说是datadir=/var/lib/mysql
        user=root处添加一行,并删除datadir路径内的所有内容:rm -rf /var/lib/mysql/*
        现在点击命令:mysqld --initialize。 在某个位置生成一个临时密码。为此:
        grep "A temporary password" /var/log/*.
        您将收到一条显示:
        /var/log/mysqld.log:2018-05-01T15:13:47.937449Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &uosjoGfi9:K。所以对我来说,&uosjoGfi9:K 是我的临时密码。
        现在做一个mysql -u root -p。粘贴您从上面获得的临时密码。
        您将处于 mysql cli 模式。现在做:
        mysql> use mysql;
        您将被要求重置密码: ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
        运行您的 ALTER 命令:
        mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPswd';
        你完成了。

        【讨论】:

          【解决方案7】:

          在我的情况下,它是一个令人沮丧的 Windows Server 安装 (iis/php/mysql),所以这就是我所做的:

          第 1 部分:删除旧的 MYSQL:

          注意:如果您已经有数据,您应该备份它!

          第 1 步 从控制面板卸载 MySQL。 (你应该知道怎么做)

          第 2 步 以管理员身份运行命令提示符并执行以下命令以停止和删除 MySQL 服务。

          Net stop MySQL
          Sc delete MySQL
          

          第 3 步 删除这些文件夹:

          C:\Program Files\MySQL
          C:\Program Files (x86)\MySQL
          C:\ProgramData\MySQL
          

          如果它存在:

          C:\Users\[User-Name]\AppData\Roaming\MySQL
          

          第 2 部分:安装 MYSQL

          https://dev.mysql.com/downloads/installer/ 下载安装程序并安装 -MySQL 服务器 8.0.23

          以管理员身份打开 cmd 并转到 c:\Program Files\MySQL\MySQL 服务器 8.0\bin\ 运行

          mysqld --initialize --console
          mysqld --install
          

          现在启动服务(在运行面板中输入 services.msc)

          现在回到控制台运行:

          mysql -u root -p
          ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
          

          就是这样

          【讨论】:

            【解决方案8】:

            mysql80:

            update user SET authentication_string='your password after encode to sha256' where User='root';
            

            【讨论】:

              猜你喜欢
              • 2011-05-14
              • 2012-02-08
              • 2018-06-09
              • 2021-11-09
              • 2014-08-20
              • 1970-01-01
              相关资源
              最近更新 更多