16

我有一段时间没有使用 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 控制台要求输入密码,但没有使用新密码。我究竟做错了什么?我那里有几张桌子。怎么办?

提前致谢。

4

7 回答 7

20

以下是要遵循的步骤:

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

在此处输入图像描述

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

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

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

在此处输入图像描述

  1. 使用以下命令重启 MySQL 服务:sudo service mysql restart

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

在此处输入图像描述

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

  2. 并更改root密码:

mysql> 刷新权限;

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

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

  2. 最后重新启动 MySQL 服务,一切顺利。

于 2019-11-20T22:09:12.843 回答
11

我无法获得mysqldAdelave 的工作答案。但这对我有用

使用 --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
于 2013-03-22T06:22:57.577 回答
10

尝试使用 --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;
于 2012-04-09T07:52:30.677 回答
4

如果其他答案没有帮助,您可以尝试卸载/重新安装 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
于 2016-10-11T16:17:53.747 回答
2

Mac OS 莫哈韦沙漠

$ 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.

我不喜欢root在我的.env文件中看到这个词,所以我通常会在创建网站后这样做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 个困难的部分:

  1. 确保 MySQL 已停止,因此您可以使用以下命令重新启动它skip-grant-tables

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

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

于 2020-06-02T23:14:36.780 回答
0

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

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

在此处输入图像描述

于 2022-01-17T17:00:37.350 回答
-1

使用 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');**
于 2019-05-08T11:31:03.900 回答