mysql root密码忘记了

时间:2012-04-09 07:47:57

标签: mysql passwords root reset

我没有使用php mysql很长一段时间,现在我需要再次使用它。但问题是我忘记了mysql console的密码。当尝试登录phpmyadmin时收到错误#1045。 在mysql站点中,我看到一篇文章如何重置root密码(http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html#resetting-permissions-windows

步骤是
创建一个包含UPDATE的mysql-init.txt文件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控制台要求输入密码而不接受新密码。我做错了什么?我有几张表。怎么办? 提前谢谢。

6 个答案:

答案 0 :(得分:11)

尝试使用--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;

答案 1 :(得分:7)

在阿德莱夫的工作回答中,我无法得到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

答案 2 :(得分:1)

如果其他答案无能为力,您可以尝试卸载/重新安装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

答案 3 :(得分:1)

这是要遵循的步骤:

  1. 使用$ mysql --help | grep -A 1 "Default options"
  2. 查找MySQL配置文件

enter image description here

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

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

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

enter image description here

  1. 使用sudo service mysql restart

  2. 重新启动MySQL服务
  3. 检查MySQL服务状态:sudo service mysql status

enter image description here

  1. 使用$ mysql -u root

  2. 登录mysql
  3. 并更改root密码:

  

mysql>冲洗特权;

     

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

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

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

答案 4 :(得分:0)

使用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 :(得分:0)

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.

我不希望在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. 重新启动它
  3. 确保您的密码更新SQL语法对于您的MySQL版本正确

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