【问题标题】:How to recover/Change MySQL Password如何恢复/更改 MySQL 密码
【发布时间】:2016-08-29 22:45:52
【问题描述】:

昨天一切正常。今天当我启动 mysql 时,它开始给我以下错误消息

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

我不知道它何时以及如何设置密码。

现在我正在尝试设置密码,但它没有更新它。

我正在使用以下步骤来恢复密码。

  1. 停止Mysql服务
  2. 在 cmd 中写入:

C:\Program Files\MySQL\MySQL Server 5.5>mysqld.exe --defaults-file="my.ini" --init-file="d:\mysql-init.txt" --console

它开始向我显示进度,但在收到此消息后停止响应

160504 18:01:54 [Note] Server socket created on IP: '0.0.0.0'.
160504 18:01:54 [Note] Event Scheduler: Loaded 0 events
160504 18:01:54 [Note] mysqld.exe: ready for connections.
Version: '5.5.38'  socket: ''  port: 3306  MySQL Community Server (GPL)

我等了超过 10 分钟,但此后没有显示任何进展..

请指导我如何解决此问题。

谢谢

【问题讨论】:

    标签: mysql mysqlconnection


    【解决方案1】:

    停止mysql服务

    编辑my.ini 文件或my.cnf 文件

    在ini文件中找到[mysqld]部分,在[mysqld]部分后面直接添加这一行

    skip-grant-tables
    

    重启mysql服务。

    打开 MySQL 控制台

    现在我们要重置root用户的密码,当然这可以用来重置任何用户的密码。

    在mysql>命令提示符下输入以下2条命令,每条命令在行尾加分号,每行后按回车,向mysql发出命令。

    MYSQL 5.7 之前的版本

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

    发布 MYSQL 版本 5.7 列名已更改

    UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
    ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    FLUSH PRIVILEGES;
    

    请注意,更新可能会报告它已更新多行,因为实际上有 3 个用户帐户的用户 ID 为“root”,每个帐户具有不同的域,即 127.0.0.1、localhost 和 :: 1

    现在在mysql命令提示符处输入quit退出mysql。

    停止mysql服务

    编辑 my.ini 文件或 my.cnf 文件

    在 ini 文件中找到 {mysqld] 部分并删除我们之前添加的skip-grant-tables 参数。

    不要将此参数留在 ini 文件中,因为它是一个巨大的安全漏洞。

    重启mysql服务。

    您现在应该可以使用用户 ID 'root' 和刚刚为该用户设置的新密码登录 phpmyadmin。

    【讨论】:

      【解决方案2】:
      1. 停止mysql服务

        /etc/init.d/mysql 停止

      2. 跳过 mysql 权限

        /usr/bin/mysqld_safe --user=mysql --skip-grant-tables

      3. 打开cmd写入

        mysql

      4. 现在让我们通过这个命令来使用我们的数据库:

        使用 MY_DATABASE_NAME;

      5. 使用下一条命令更新 root 用户的字段密码:

        UPDATE user SET Password=PASSWORD('ourpassword') WHERE user='root';

      6. 退出命令。

        退出

      7. 启动一个新的数据库会话。

        mysql -u root -p

      【讨论】:

      • 它给了我以下消息'mysqld_safe' is not recognized as an internal or external command,
      • 我在cmd里写的C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqld_safe --user=mysql --skip-grant-tables
      【解决方案3】:

      按照步骤更改 mySQL 根密码。

      1) 以管理员身份登录服务器。

      2) 停止 MySQL 服务或从任务管理器中杀死它 [mysqld-nt.exe] [如果无法从 services.msc 中工作]。

      3) 创建一个包含以下语句的文本文件:

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

      4) 保存文件。对于此示例,文件将命名为 C:\mysql-init.txt。

      5) 进入命令提示符:使用 --init-file 选项启动 MySQL 服务器。

      6) C:> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

      【讨论】:

      • 收到此错误消息'mysqld-nt' is not recognized as an internal or external command,
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2013-06-22
      相关资源
      最近更新 更多