如何重置忘记的 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表为空的解决办法