MySQL数据库root密码丢失后的找回

实验前准备:
1.环境
端口3306 该实例是生产环境,欲找回3306的 root密码
测试3307 测试时使用
2.开启 3306,3307 mysqld 服务

[[email protected] ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf &
[[email protected] ~]# mysqld --defaults-file=/data/mysql/mysql3307/my.cnf & 

两种方法:
一.使用 skip_grant_tables 参数

[[email protected] ~]# ps -ef|grep 3306|grep -v grep
mysql 947 365 0 19:00 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3306/my.cnf
[[email protected] ~]# kill -9 947
[[email protected] ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --skip_grant_tables &
[[email protected] ~]# mysql -S /tmp/mysql3306.sock
mysql> alter user user() identified by ‘zstzst‘;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> update mysql.user set authentication_string=password(‘zstzst3306‘) where host=‘localhost‘ and user=‘root‘;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
[[email protected] ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf &
[[email protected] ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306 #登陆成功

这个方法需要重启MySQL服务,由于免密码登陆,所以再启动数据库时,最好也要加上参数 --skip__networking

二.拷贝修改user.*

3306 老密码是zstzst,假装遗忘,通过拷贝user*文件方式修改成zstzst3306
3307 password‘zstzst3307‘

[[email protected] ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306
mysql> alter user [email protected] identified by ‘zstzst‘; #3306密码修改成 zstzst
[[email protected] ~]# ps -ef|grep mysqld|grep -v grep
mysql 1032 365 0 19:00 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3307/my.cnf
mysql 3960 365 0 19:05 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3306/my.cnf
[[email protected] ~]# kill -9 1032 #杀掉3307
[ro[email protected] ~]# \cp /data/mysql/mysql3306/data/mysql/user.frm /data/mysql/mysql3307/data/mysql/user.frm
[[email protected] ~]# \cp /data/mysql/mysql3306/data/mysql/user.MYD /data/mysql/mysql3307/data/mysql/user.MYD
[[email protected] ~]# \cp /data/mysql/mysql3306/data/mysql/user.MYI /data/mysql/mysql3307/data/mysql/user.MYI
[[email protected] ~]# mysqld --defaults-file=/data/mysql/mysql3307/my.cnf --skip_grant_tables & #这样不用重启生产库
[[email protected] ~]# mysql -S /tmp/mysql3307.sock
mysql> update mysql.user set authentication_string=password(‘zstzst3306‘) where host=‘localhost‘ and user=‘root‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.01 sec)
[[email protected] ~]# \cp /data/mysql/mysql3307/data/mysql/user.frm /data/mysql/mysql3306/data/mysql/user.frm
[[email protected] ~]# \cp /data/mysql/mysql3307/data/mysql/user.MYD /data/mysql/mysql3306/data/mysql/user.MYD
[[email protected] ~]# \cp /data/mysql/mysql3307/data/mysql/user.MYI /data/mysql/mysql3306/data/mysql/user.MYI
[[email protected] ~]# kill -HUP 3960
[[email protected] ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306 #验证登陆成功

原文地址:https://www.cnblogs.com/bkwong/p/9264973.html

时间: 2024-10-09 22:14:19

MySQL数据库root密码丢失后的找回的相关文章

MySQL数据库root密码丢失破解方法

MySQL密码丢失破解方法 第1章 单实例破解方法 1.1 停止mysql服务 [[email protected] ~]# /etc/init.d/mysqld stop Shutting down MySQL. SUCCESS! 1.2 重新启动mysql启动 直接使用mysqld_safe命令启动,并添加参数--skip-grant-tables,跳过权限认证表 [[email protected] ~]# mysqld_safe --skip-grant-tables & [1] 598

如何修改Linux服务器的MySQL数据库root密码

测试服务器密码知道的人太多了,mysql root账号密码竟然被修改.... 总结一下修改mysql数据库root密码的办法,呵呵大 分两种情况一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"Enter password: [输入原来的密码] 方法二:通过登录mysql系统,# mysql -uroot -pEnter password: [输入原来的密码]

MySQL的root密码忘记后重置方法

如果忘记了MySQL的root密码怎么办? 我们默认的情况下是没有给MySQL设置密码的,如下 默认的登录MySQL [[email protected] ~]# mysql -uroot Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.40-log MySQL Community Server (GPL) Type 'help;

MySQL数据库root密码的修改方法

本文以windows为例为大家详细介绍下MySQL修改root密码的4种方法,大家可以可以根据的自己的情况自由选择,希望对大家有所帮助 方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for [email protected] = password('123'); 方法2:用mysqladmin 格式:mysqla

mysql数据库root权限丢失(密码丢失)

今天同事,调整mysql安全,在删除用户的时候误删了 [email protected],后来加进去了,但是在登录发现数据库很多库都没有了,顿时懵逼,考虑恢复数据,稍后我看到了,想起当年也出现过类似情况,主要是因为root用户没有权限,所以跳过授权表,经过查询权限,真的缺少,所以将其都由N改为Y ,在次测试,OK,以下是处理步骤. 第一步,跳过授权表登录mysql 1.pkill 停止 实例进程 2.mysqld_safe --defaults-file=/data/3306/my.cnf --

xampp默认mysql数据库root密码的修改

因为安装xampp后的mysql默认用户root的密码为空,而比如部署Testlink时需要提供数据库密码,此时就需要给root设定密码(网上有些方法,大同小异,但是可能都未标明关键点,未一些出上手的童鞋造成了不成功). 如下介绍两个方法: 方法一:通过phpmyadmin xampp也是通过phpmyadmin管理的,所以我们能登录到phpmyadmin,在浏览器地址上输入http://localhost/phpmyamdin 进入到数据库控制面板,然后选择名称为mysql数据库,如图,可从中

忘记mysql数据库root密码

找到配置文件my.ini  ,然后将其打开,可以选择用记事本打开,查找的方法如下: 打开后,搜索mysqld关键字 找到后,在mysqld下面添加skip-grant-tables,保存退出. PS:若提示不让保存时,可以将该文件剪切到桌面,更改保存后再复制到mySQL目录下 然后运行cmd 输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入. 1.进入mysql数据库: mysql> use mysql; Database changed 2

lnmp重置mysql数据库root密码

第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本 一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh sh reset_mysql_root_password.sh 方便吧! 第二种方法:通过命令修改,具体如下: a.停止MySQL服务 执行:/etc/init.d/mysql stop b.跳过验证启动MySQL /usr/local/mysql/bin/

mysql数据库root密码重置

很多时候我们连接数据库都不是用的root(管理员)权限登录,但是在工作中不可避免的会遇到需要root权限,却不知道root秘密的情况,下面就是我再忘记或者不知道root密码的情况下重置root密码: 操作系统:CentOs 6.5 (阿里云) 找到MySQL的配置文件,一般在安装MySQL时,配置文件默认在/etc目录下面找到my.cnf; 编辑my.cnf 内容如下 3.在 [mysqld] 下面添加如下语句  skip-grant-tables(跳过mysql权限验证) 如图: 4.保存配置