mysql root密码忘记了

Posted

技术标签:

【中文标题】mysql root密码忘记了【英文标题】:mysql root password forgotten 【发布时间】:2012-04-21 15:50:53 【问题描述】:

我有一段时间没有使用 php mysql,现在我需要再次使用它。但问题是我忘记了 MySQL 控制台的密码。尝试登录 PHPMyAdmin 时出现错误 #1045。

在MySQL站点看到一篇文章如何重置root密码(http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html#resetting-permissions-windows)

步骤是

create a mysql-init.txt file containing UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;

我保存为C:\me\mysql-init

我在命令提示符下写了--

C:\wamp\bin\mysql\mysql5.5.8\bin\mysqld --init-file=C:\me\mysql-init.txt 

我也尝试使用双反斜杠..但它不起作用。 MySQL 控制台要求输入密码,但它没有使用新密码。我究竟做错了什么?我那里有几张桌子。怎么办?

提前致谢。

【问题讨论】:

youtu.be/gFo5DV_pSg8 - 这个视频帮助我更改了我的一个生产服务器的密码。 这能回答你的问题吗? How to reset or change the MySQL root password? 【参考方案1】:

尝试使用 --skip-grant-tables 启动 mysql

mysqld --skip-grant-tables

然后在没有用户名/密码的情况下使用 mysql 命令行连接到您的 mysqld

shell> mysql

然后发出命令

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

【讨论】:

非常感谢您的回复。它目前正在工作。现在我可以登录到 phpmyadmin 复制我要保存的所有表格。谢谢。但它没有占用稍后重新打开 wamp 服务器时的密码。我必须经历与 mysqld --skip-grant-tables 相同的过程。 我安装的 mysql 版本没有密码列,而是这样工作:更新 mysql.user set authentication_string=password('MyNewPass') where User = 'root'; 未能将datadir设置为/var/lib/mysql/ 如果您的 sql 版本告诉您它不是“在 ('MyNewPass') 附近使用的正确语法”:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass'; "Thank you very much for reply.It is working for the time being." - 在这种情况下,请接受答案,这将对以后阅读此问题的其他人有所帮助【参考方案2】:

我无法在 Adelave 的工作回答中得到 mysqld。但这对我有用

使用 --skip-grant-tables 停止和启动 mysql

service mysql.server stop
service mysql.server start --skip-grant-tables

然后在没有用户名/密码的情况下连接到您的 mysqld

mysql

然后在mysql命令行上更新密码

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

然后正常重启mysql

 service mysql.server restart

【讨论】:

这适用于 Mac OSX 10.9.1 上的 MySQL 5.6.16,它适用于我 ;-) start -skip-grant-tables 命令抛出 错误!服务器退出而不更新PID文件错误.. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to 在 Mysql 8 上【参考方案3】:

如果其他答案没有帮助,您可以尝试卸载/重新安装 mysql。它适用于我的 ubuntu 服务器:

$sudo apt-get purge mysql*
$sudo apt-get autoremove
$sudo apt-get autoclean

更新分布

$sudo apt-get dist-upgrade

然后重新安装

$sudo apt-get install mysql-server

【讨论】:

【参考方案4】:

使用 SQLYog 可以执行命令

用户创建
CREATE USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
授权
GRANT ALL PRIVILEGES ON sakila.* TO 'tester'@'localhost'
在 MySQL 8.0 中更改密码
ALTER USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'

(或者如果你知道 authentication_string 直接将其设置为更新)

UPDATE mysql.user 
    SET authentication_string='*F9B62579F38BE95639ACB009D79427F2D617158F'  
WHERE USER='root'***

低版本mysql修改密码

GRANT USAGE ON *.\* TO 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
SET PASSWORD FOR 'tester'@'localhost' = PASSWORD('Pass123#d');**

【讨论】:

【参考方案5】:

以下是要遵循的步骤:

    使用以下命令找到 MySQL 配置文件:$ mysql --help | grep -A 1 "Default options"

在 Ubuntu 16 上,文件位置通常为 /etc/mysql/mysql.conf.d/mysqld.cnf

    编辑配置文件使用:$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    [mysqld] 块下添加skip-grant-tables 并保存更改。

    重启 MySQL 服务:sudo service mysql restart

    查看 MySQL 服务状态:sudo service mysql status

    使用以下命令登录 mysql:$ mysql -u root

    并更改root密码:

mysql> 刷新权限;

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';

    通过删除 skip-grant-tables 行或使用 #(哈希)对其进行注释来恢复 MySQL 配置文件更改。

    最后重启 MySQL 服务,一切顺利。

【讨论】:

救生解决方案 :)【参考方案6】:

Mac OS Mojave

$ brew services stop mysql

$ pkill mysqld

// warning: deletes all tables
$ rm -rf /usr/local/var/mysql/

$ brew postinstall mysql

$ brew services restart mysql

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'p4ssword';
Query OK, 0 rows affected (0.04 sec)

mysql> exit
Bye

然后你就恢复正常了。

$ sudo mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

我不喜欢在我的.env 文件中看到root 这个词,所以我通常会在创建一个诸如www.hockeysticks.net 之类的网站之后这样做:

#
CREATE DATABASE hockeysticks;

CREATE USER 'hockeysticks'@'localhost' IDENTIFIED BY 'hockeysticks';
GRANT ALL PRIVILEGES ON hockeysticks.* TO 'hockeysticks'@'localhost';

那么你的 localdev .env 文件就很简单了:

DB_DATABASE=hockeysticks
DB_USERNAME=hockeysticks
DB_PASSWORD=hockeysticks

注意:如果您需要保留数据库,请使用skip-grant-tables 方法。这有 3 个难点:

    确保 MySQL 已停止,以便您可以使用 skip-grant-tables 重新启动它

    确保您的密码更新 SQL 语法对于您的 MySQL 版本是正确的

    确保在查询末尾附加FLUSH PRIVELEGES;

【讨论】:

【参考方案7】:

使用 windows 命令提示符可以更改密码

    转到windows+R并运行services.msc然后停止MySQL服务并右键单击查看MySQL的属性并根据需要复制路径--defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"。 使用文本ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your New Password'; 创建文本文件reset.txt 并保存在C 驱动器中。 以管理员身份打开命令提示符,然后更改 MySQL 的安装目录"C:\Program Files\MySQL\MySQL Server 8.0\bin"。 输入命令mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=C:\\reset.txt

【讨论】:

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

win7下mysql服务器忘记密码怎么办

mysql 忘记root密码

mysql root密码忘记了

MySQL忘记root密码的解决办法

MySQL 忘记root密码的两种处理方法

linux下mysql的root密码忘记,怎么改root密码