【问题标题】:How to reset mysql root password?如何重置mysql root密码?
【发布时间】:2011-05-14 13:47: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】:

    在我的情况下,它是一个令人沮丧的 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';
    

    就是这样

    【讨论】:

      【解决方案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】:

      这是我所做的,并且成功了:
      安装(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';
      你完成了。

      【讨论】:

        【解决方案4】:

        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 的密码相同。

        【讨论】:

          【解决方案5】:

          对于 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');
          

          【讨论】:

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

          请按照以下链接中的说明重置您的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) 我已经解释了同样的事情。

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

          【讨论】:

            【解决方案7】:

            我在这里总结了我的解决方案: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
            猜你喜欢
            • 1970-01-01
            • 2012-02-08
            • 2018-06-09
            • 2021-11-09
            • 2014-01-13
            • 2013-05-09
            相关资源
            最近更新 更多