【问题标题】:Resetting ROOT password in MySQL 5.6在 MySQL 5.6 中重置 ROOT 密码
【发布时间】:2014-03-06 06:58:08
【问题描述】:

我一直在关注 these instructions 重置 root 密码,以便在 Windows 7 笔记本电脑上本地安装 MySQL 5.6

我停止了服务,创建了 init-file,并运行了以下命令(以管理员身份):

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" --init-file=C:\\MySQL-misc\\mysql-init.txt

我收到以下警告

2014-02-08 15:44:10 0 [警告] 带有隐式 DEFAULT 值的 TIMESTAMP 已弃用。请使用 --explicit_defaults_for_timestamp 服务器 选项(有关详细信息,请参阅文档)。

由于这是一个警告,我不确定是否需要修复任何问题,然后再次重做该过程。

当前命令窗口仍然打开并且不接受任何输入。我应该强制关闭它还是我可以做些什么来优雅地完成这个过程?

更新

我杀死了命令窗口并尝试重新启动服务。出错了。

重新启动 Windows,服务自动启动。 新的 root password 似乎有效。成功使用Workbench的各种需要密码的功能。

所以,警告确实只是一个警告。

【问题讨论】:

  • @Mr.Radica - 我将其发布为 UPDATE。我认为它可能对其他人有帮助,所以我没有删除它。
  • 干得好。你仍然可以把它放在下面然后接受它。你确实解决了你最初的问题。 ;-)
  • 我尝试了将近一个小时,按照 MySQL 手册上的说明操作,但没有成功,刷新权限等。重新启动计算机后它工作了。
  • 谢谢!对于 mysql 5.7,您需要使用 authentication_string
  • youtu.be/gFo5DV_pSg8 - 这个视频帮助我更改了我的一个生产服务器的密码。

标签: mysql windows-7 passwords password-recovery mysql-5.6


【解决方案1】:

问题已解决

正如我的问题所述,我关注了instructions from MySQL manual

过程并没有像描述的那样完全进行(这就是我最初发布帖子的原因),但它仍然有效(请参阅我帖子中的更新部分)。

【讨论】:

  • 非常感谢......奇怪......对我来说其他答案不起作用,但这个答案像 steph curry 3 分;)
【解决方案2】:

在 Windows 上

0) 关闭服务mysql56

1) 转到C:\ProgramData\MySQL\MySQL Server 5.6,注意ProgramData是一个隐藏文件夹

2) 查找文件my.ini,打开并在[mysqld]下面添加一行skip-grant-tables,保存

[mysqld]

skip-grant-tables

3) 启动服务mysql56

4) 右键可以访问数据库,运行mysql

5) 并使用下面的查询更新密码

update mysql.user set password=PASSWORD('NEW PASSWORD') where user='root';

注意:对于较新的版本,请使用authentication_string 而不是password

6) 再次关闭服务,去掉skip-grant-tables这行保存,重新启动服务。尝试使用您设置的密码登录。


在 Mac 上

0) 停止服务

sudo /usr/local/mysql/support-files/mysql.server stop

1) 跳过授权表

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

一旦运行,不要关闭它,而是打开一个新的终端窗口

2) 进入mysql终端

/usr/local/mysql/bin/mysql -u root

3) 更新密码

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

对于 5.7 等较新版本,请使用

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';

4) 运行FLUSH PRIVILEGES;

5) 运行\q 退出

6) 启动mysql服务器

sudo /usr/local/mysql/support-files/mysql.server start

【讨论】:

  • 投了反对票,因为您实际上并没有说明在何处或如何连接以运行更新语句。完整回答。
  • 您在第一条(非 Mac)指令中忘记了 FLUSH PRIVILEGES?除此之外,这效果很好,比 MySQL 手册上的说明更好
  • 应该注意没有'password'列,至少在MySql 5.7中没有。使用“authentication_string”,如@SatishakumarAwati 的回答。
  • ERROR 1054 (42S22): Unknown column 'password' in 'field list'
  • @CsabaToth 试试authentication_string
【解决方案3】:

如果你安装了 Xampp。

  1. 转到 C:\xampp\mysql\bin
  2. 打开 my.ini 文件
  3. skip-grant-tables 放在[mysqld]
  4. 转到 windows 服务并停止 mysql 服务
  5. 从命令提示符C:\xampp\mysql\bin\mysql 触发此命令
  6. 现在,使用 MySQL 查询 update mysql.user set password=PASSWORD('root') where user='root'; 重置 root 密码
  7. 退出命令提示符。
  8. 重启步骤4中关闭的mysql windows服务。
  9. 现在您可以使用 root 密码登录 mysql。

【讨论】:

    【解决方案4】:

    更新 this answer 关于 MySQL 5.7 的更改:

    0) 关闭服务mysql57

    1) 转到C:\ProgramData\MySQL\MySQL Server 5.7,注意ProgramData是一个隐藏文件夹

    2) 寻找文件my.ini,打开并在[mysqld]下面添加一行skip-grant-tables,保存

    [mysqld]
    
    skip-grant-tables
    

    3) 启动服务mysql57

    4)按右键,可以访问数据库,运行mysql

    5) 并使用下面的查询更新密码

    update mysql.user set authentication_string=password('NEW_PASSWORD') where user='root';

    6) 再次关闭服务,删除skip-grant-tables 行保存,重新启动服务。尝试使用您设置的密码登录。

    【讨论】:

      【解决方案5】:
      • 通过进入管理工具 > 服务停止 Mysql 服务
      • 打开开始 > 运行 > cmd(以管理员身份运行
      • 使用此行手动启动服务器:

        mysqld -P3306 --skip-grant-tables
        
      • 在新的 cmd 中(以管理员身份运行)执行:

        mysql -P3306 mysql
        
      • 在mysql客户端执行如下查询:

        update mysql.user set authentication_string=password('new_password') where user='root';
        

      就是这样!!

      【讨论】:

        【解决方案6】:

        对于 Windows 上的 MySQL 5.6,我必须运行此语句才能使其工作。

        UPDATE mysql.user
        SET Password=PASSWORD('NEW PASSWORD'), 
        authentication_String=PASSWORD('NEW PASSWORD')
        WHERE User='root';
        

        【讨论】:

        • 你在哪里运行这个语句?在cmd中?
        【解决方案7】:

        首先停止mysql服务器并按照以下步骤操作:

        在 cmd i 上转到 mysql bin 目录,即。 cd C:\ProgramData\MySQL\MySQL Server 5.6\bin(隐藏目录)

        跳过授权表将允许您进入 mysql

        • mysqld.exe --skip-grant-tables

        打开新的命令提示符或在同一命令提示符下

        • mysql.exe -uroot -p(无需密码即可登录mysql)

        运行以下查询以更改 mysql root 密码

        • UPDATE mysql.user set password=password('root password') WHERE user='root';
        • flush privileges

        就是这样,重启 mysql 就可以用新密码了..!!

        【讨论】:

          【解决方案8】:

          无需编辑 mi.ini:

          service mysql stop
          mysqld_safe --skip-grant-tables
          

          在单独的 ssh 会话中:

          update mysql.user set password=PASSWORD('NEW PASSWORD') where user='root';
          

          无需刷新权限,重启服务器即可

          【讨论】:

            【解决方案9】:

            如果您收到此错误:mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists. 在尝试重置您的 root 密码时。你可以试试:

            sudo service mysql stop
            sudo mkdir -p /var/run/mysqld
            sudo chown mysql:mysql /var/run/mysqld
            sudo service mysql stop
            sudo mysqld_safe --skip-grant-tables & 
            mysql -uroot
            update mysql.user set authentication_string=password('your_password') where user='root';
            flush privileges;
            quit
            sudo killall mysql
            sudo service mysql start
            mysql -u root -pyour_password
            

            在运行于 Ubuntu 18.04 的 MySQL 5.7 中测试

            【讨论】:

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