如何 recover/Change MySQL 密码
How to recover/Change MySQL Password
昨天一切正常。今天当我开始 mysql 它开始给我以下错误消息
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我不知道它何时以及如何设置密码。
现在我正在尝试设置密码,但它没有更新它。
我正在使用以下步骤来恢复密码。
- 停止Mysql服务
- 在cmd中写入:
C:\Program Files\MySQL\MySQL Server 5.5>mysqld.exe
--defaults-file="my.ini" --init-file="d:\mysql-init.txt" --console
它开始向我显示进度,但在这条消息后停止响应
160504 18:01:54 [Note] Server socket created on IP: '0.0.0.0'.
160504 18:01:54 [Note] Event Scheduler: Loaded 0 events
160504 18:01:54 [Note] mysqld.exe: ready for connections.
Version: '5.5.38' socket: '' port: 3306 MySQL Community Server (GPL)
我等了10多分钟,但之后没有任何进展..
请指导我如何解决这个问题。
谢谢
按照分步操作更改 mySQL root 密码。
1) 以管理员身份登录服务器。
2) 停止 MySQL 服务或从任务管理器 [mysqld-nt.exe] 中终止它 [如果在 services.msc] 中不起作用。
3) 创建包含以下语句的文本文件:
更新mysql.user 设置密码=密码('test@123') WHERE 用户='root';
刷新权限;
4) 保存文件。对于此示例,文件将命名为 C:\mysql-init.txt.
5) 进入命令提示符:使用 --init-file 选项启动 MySQL 服务器。
6) C:> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
停止mysql服务
/etc/init.d/mysql停止
跳过mysql权限
/usr/bin/mysqld_safe --user=mysql --skip-grant-tables
打开cmd并写入
mysql
现在让我们通过以下命令使用我们的数据库:
使用MY_DATABASE_NAME;
使用下一个命令更新 root 用户的字段密码:
更新用户 SET Password=PASSWORD('ourpassword') WHERE user='root';
退出命令。
退出
启动新的数据库会话。
mysql -u root -p
停止 mysql 服务
编辑my.ini
文件或my.cnf
文件
在ini文件中找到[mysqld]
段,直接在[mysqld]
段后面加上这一行
skip-grant-tables
重新启动 mysql 服务。
打开MySQL控制台
现在我们要为root用户重设密码,当然这可以用来重设任何用户的密码。
在mysql>命令提示符下输入以下2条命令,每条命令的末尾有一个分号,每行后按回车键向mysql发出命令。
Pre MYSQL 版本 5.7
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Post MYSQL version 5.7 列名称更改
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
请注意,更新可能会报告它更新了不止一行,因为实际上有 3 个用户帐户的用户 ID 为 'root',每个帐户都有不同的域,即 127.0.0.0。 0.1,本地主机和::1
现在在 mysql 命令提示符下输入 quit
退出 mysql。
停止 mysql 服务
编辑 my.ini 文件或 my.cnf 文件
在ini文件中找到{mysqld]部分,删除我们之前添加的skip-grant-tables
参数。
不要将此参数留在 ini 文件中,这是一个很大的安全漏洞。
重新启动 mysql 服务。
您现在应该可以使用用户 ID 'root' 和刚刚为该用户设置的新密码登录 phpmyadmin。
昨天一切正常。今天当我开始 mysql 它开始给我以下错误消息
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我不知道它何时以及如何设置密码。
现在我正在尝试设置密码,但它没有更新它。
我正在使用以下步骤来恢复密码。
- 停止Mysql服务
- 在cmd中写入:
C:\Program Files\MySQL\MySQL Server 5.5>mysqld.exe --defaults-file="my.ini" --init-file="d:\mysql-init.txt" --console
它开始向我显示进度,但在这条消息后停止响应
160504 18:01:54 [Note] Server socket created on IP: '0.0.0.0'.
160504 18:01:54 [Note] Event Scheduler: Loaded 0 events
160504 18:01:54 [Note] mysqld.exe: ready for connections.
Version: '5.5.38' socket: '' port: 3306 MySQL Community Server (GPL)
我等了10多分钟,但之后没有任何进展..
请指导我如何解决这个问题。
谢谢
按照分步操作更改 mySQL root 密码。
1) 以管理员身份登录服务器。
2) 停止 MySQL 服务或从任务管理器 [mysqld-nt.exe] 中终止它 [如果在 services.msc] 中不起作用。
3) 创建包含以下语句的文本文件:
更新mysql.user 设置密码=密码('test@123') WHERE 用户='root'; 刷新权限;
4) 保存文件。对于此示例,文件将命名为 C:\mysql-init.txt.
5) 进入命令提示符:使用 --init-file 选项启动 MySQL 服务器。
6) C:> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
停止mysql服务
/etc/init.d/mysql停止
跳过mysql权限
/usr/bin/mysqld_safe --user=mysql --skip-grant-tables
打开cmd并写入
mysql
现在让我们通过以下命令使用我们的数据库:
使用MY_DATABASE_NAME;
使用下一个命令更新 root 用户的字段密码:
更新用户 SET Password=PASSWORD('ourpassword') WHERE user='root';
退出命令。
退出
启动新的数据库会话。
mysql -u root -p
停止 mysql 服务
编辑my.ini
文件或my.cnf
文件
在ini文件中找到[mysqld]
段,直接在[mysqld]
skip-grant-tables
重新启动 mysql 服务。
打开MySQL控制台
现在我们要为root用户重设密码,当然这可以用来重设任何用户的密码。
在mysql>命令提示符下输入以下2条命令,每条命令的末尾有一个分号,每行后按回车键向mysql发出命令。
Pre MYSQL 版本 5.7
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Post MYSQL version 5.7 列名称更改
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
请注意,更新可能会报告它更新了不止一行,因为实际上有 3 个用户帐户的用户 ID 为 'root',每个帐户都有不同的域,即 127.0.0.0。 0.1,本地主机和::1
现在在 mysql 命令提示符下输入 quit
退出 mysql。
停止 mysql 服务
编辑 my.ini 文件或 my.cnf 文件
在ini文件中找到{mysqld]部分,删除我们之前添加的skip-grant-tables
参数。
不要将此参数留在 ini 文件中,这是一个很大的安全漏洞。
重新启动 mysql 服务。
您现在应该可以使用用户 ID 'root' 和刚刚为该用户设置的新密码登录 phpmyadmin。