如何重置忘记的 MySQL root 密码?

Posted

技术标签:

【中文标题】如何重置忘记的 MySQL root 密码?【英文标题】:How to reset the forgotten MySQL root password? 【发布时间】:2014-08-20 19:34:45 【问题描述】:

我一直在尝试重置 mysql 的 root 密码。

我已经习惯了两种重置方法。但是没听懂。

以下步骤已完成,但对我不起作用:

方法一:

1) 停止运行 MySQL 服务并创建一个 mysql-init.txt 文件。 mysql-init.txt 包含:

USE mysql;

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

FLUSH PRIVILEGES;

2) 我打开了命令提示符并输入了以下内容:

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqld.exe --defaults-file="my.ini" --init-file="C:\\Users\\user-name\\Desktop\\mysql-init.txt" --console

我得到的错误如下:

无法打开所需的默认文件:C:\Program Files\MySQL\MySQL Server 5.6\b 在\my.ini

默认处理中的致命错误。程序中止

方法 2:

I simply opened the command prompt and typed as follows:

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqladmin -uroot -psample password
vikash

I got the error as:

Warning: Using a password on the command line interface can be insecure.
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

请帮我重设密码...

【问题讨论】:

Here 你从 mysql.org 找到一个文档 好吧,您的密码可能需要用引号引起来。另外,只尝试标志,而不是将密码放在命令行上:mysqladmin -uroot -p。然后mysql应该询问你的密码(此时,你不会使用引号) 【参考方案1】:

以下是重置root用户密码的过程,当我们忘记root用户密码或忘记找回安装过程中提供的密码时。

操作系统 - Ubuntu 16.04

MySQL - 5.7

    停止 MySQL 服务器 sudo /etc/init.d/mysql stop 为避免该错误,UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在,请运行以下命令: sudo mkdir -p /var/run/mysqld sudo chown mysql:mysql /var/run/mysqld 以安全模式启动mysql: sudo mysqld_safe --skip-grant-tables & 登录 Mysql 并将密码更改为“root123”: 在 5.7 版本中,密码列被重命名为 authentication_string。 mysql -uroot mysql>use mysql; mysql>update user set authentication_string=password('root123') where user='root'; 如果你得到错误 :: MySQL failed on: mysql “ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded” 然后运行下面的命令然后运行第四步。 mysql>update user set plugin="mysql_native_password" where User='root'; mysql>flush privileges; quit; 停止和启动mysql服务器 sudo /etc/init.d/mysql stop sudo /etc/init.d/mysql start 使用新密码 mysql -uroot -proot123登录

PFB,参考网址。

https://support.rackspace.com/how-to/mysql-resetting-a-lost-mysql-root-password/ mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists MySQL user DB does not have password columns - Installing MySQL on OSX MySQL fails on: mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"

【讨论】:

谢谢,特别是对于步骤 5。我在 (X)ubuntu18.04 上。然而,我在杀死 ​​mysql_safe 实例时遇到了一些麻烦,但 sudo killall mysqld 似乎在某些时候起作用。然后我用sudo service mysql restart重新加载了mysql-server。【参考方案2】:

尝试停止mysql服务

/etc/init.d/mysqld stop

运行安全的可执行跳过授权

mysqld_safe --skip-grant-tables &

(尾随的 & 号让您回到命令行)

然后以root身份连接,无需密码

mysql -uroot

您将进入 mysql 提示符,您可以在其中更新 root 的密码。

编辑:我刚刚看到您使用的是 Windows。好的,那么您的第一种方法应该几乎可以工作。而不是“UPDATE mysql.user”文件应该读取

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

然后运行

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqld.exe --init-file=C:\Users\user-name\Desktop\mysql-init.txt

我对可执行文件很好奇...所有这些空格可能会使 Windows 混淆。也许在与可执行文件相同的文件夹中创建初始化文件会更容易,因此您只需运行

mysqld.exe --init-file=mysql-init.txt

那里可能还有其他可执行文件。 mysqld-nt、mysqld-safe等。如果mysqld不行,也试试其他的。

【讨论】:

这应该可行。话虽如此:几周前我自己也经历过。 mysqld 有一个错误,即使文件在那里,它有时也找不到文件。这实际上是一个权限问题,但在 mysql 级别而不是 os 级别。您可能需要将文件放在mysql已经可以读取的目录中(在Linux上,我认为它位于/usr目录中)。 快乐舞\o\ ~o~ /o/ 如果你得到以下错误:“mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.”,使用mkdir -p /var/run/mysqld创建它寻找的目录并设置正确使用chown mysql:mysql /var/run/mysqld 的权限

以上是关于如何重置忘记的 MySQL root 密码?的主要内容,如果未能解决你的问题,请参考以下文章

转自阿里云,忘记MySQL数据库的root密码时如何重置密码

Mac - MySQL初始密码忘记重置MySQL root密码

mysql 忘记密码,重置密码,mysql.user表为空的解决办法

重置mysql密码

centos7下,忘记mysql2.5.版本的登录密码,如何重置及登陆

Mysql(Linux服务器)root用户密码忘记重置方法