`

闲来无事从网络上找了篇破解MYSQL数据库ROOT密码的文章

 
阅读更多

(1)确认一下3306是否对外开放,mysql默认状态下是不开放对外访问功能的。查看的办法如下:

Java代码 复制代码
  1. ~# netstat -an | grep 3306
  2. tcp00 127.0.0.1:33060.0.0.0:* LISTEN

从上面可以看出,mysql的3306端口只是监听本地的连接,这样就阻碍了外部IP对该数据库的访问,修改的办法其实很简单,进入到mysql的配置文件所在目录(/etc/mysql/my.cnf)下,找到文件中的如下内容:

Java代码 复制代码
  1. # Instead of skip-networking the default is now to listen only on
  2. # localhost which is more compatible and is not less secure.
  3. bind-address = 127.0.0.1

将bind-address注释掉,或者改成你想要使用的客户端主机IP。

这样mysql的远程访问端口就算开启了,下面还有一个更重要的步骤,就是要给远程用户授权。

(2)确认客户端用户是否具有访问权限。

为了让访问mysql的客户端的用户有访问权限,我们可以通过如下方式为用户进行授权:

Java代码 复制代码
  1. mysql> grant all on *.* to user_name@'%' identified by 'user_password';

上面的命令授予的用户权限可以访问mysql中的任意数据库(database)和表(table)。

完成上面的两个步骤,重启mysql即可在远程登陆mysql服务器了。Mysql的重启命令如下:


GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;

使用GRANT ... IDENTIFIED BY语句

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY ’biscuit’;

这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。

注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。

MySQL 忘记口令的解决办法

如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。

启动 MySQL :bin/safe_mysqld --skip-grant-tables &

就可以不需要密码就进入 MySQL 了。

然后就是

>use mysql

>update user set password=password("new_pass") where user="root";

>flush privileges;

重新杀 MySQL ,用正常方法启动 MySQL 。

mysql密码清空

Windows:

1.用系统管理员登陆系统。

2.停止MySQL的服务。

3.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是c:/mysql,进入C:/mysql/bin

4.跳过权限检查启动MySQL,

c:/mysql/bin>mysqld-nt --skip-grant-tables

5.重新打开一个窗口,进入c:/mysql/bin目录,设置root的新密码

c:/mysql/bin>mysqladmin -u root flush-privileges password "newpassword"

c:/mysql/bin>mysqladmin -u root -p shutdown

将newpassword替换为你要用的root的密码,第二个命令会提示你输入新密码,重复第一个命令输入的密码。

6.停止MySQL Server,用正常模式启动Mysql

7.你可以用新的密码链接到Mysql了。

教你如何将MySQL数据库的密码恢复

因为MySQL密码存储于数据库mysql中的user表中,所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了。

在c:/mysql/data/mysql/(linux 则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文件user.frm、user.MYD、user.MYI

user.frm //user表样式文件

user.MYD //user表数据文件

user.MYI //user表索引文件

为保险起见,三个都拷贝过来,不过其实如果之前在要恢复的那个MySQL上没有更改过表结构的话,只要拷贝user.MYD就行了

然后

#. /etc/rc.d/init.d/mysql stop

#. /etc/rc.d/init.d/mysql start

#mysql -u root -p XXXXXX

好了,可以用windows 2003下mysql密码登陆了

mysql>use mysql

mysql>update user set Password=PASSWORD(’xxxxxx’) where User=’root’;

这时候会出错,提示user表只有读权限

我分析了一下原因,只这样的,因为user.*文件的权限分配是windows 2003下的,在windows 2003下我ls -l一看权限是666

在linux下我一看,拷过来后权限变成了600(其实正常情况下600就行了,只不过这里的文件属主不是mysql,拷过来后的属主变为了root,所以会出现权限不够,这时候如果你改成权限666则可以了,当然这样不好,没有解决问题的实质),在/var/lib/mysql/mysql/下ls -l看了一下再

#chown -R mysql:mysql user.*

#chmod 600 user.*

//OK,DONE

重起一下MYSQL

重新连接

mysql>use mysql

mysql>update user set Password=PASSWORD(’xxxxxx’) where User=’root’;

mysql>FLUSH PRIVILEGES;

有一点值得注意:如果你windows 下mysql如果是默认配置的话,注意要还要执行

mysql>delete from user where User=’’;

mysql>delete from user where Host=’%’;

mysql>FLUSH PRIVILEGES;

好了,到这里恢复密码过程就完成了

这个方法么就是有点局限性,你必须也具备另外的user表文件

其它方法二

直接用十六进制编辑器编辑user.MYD文件

不过这个里面我要说明一点,我这里编辑的时候发现个问题,加密的密码串有些是连续存储的,有些的最后两位被切开了,后两位存储在后面其他地方.这一点我还没想明白.还有注意一点就是编辑的是加密过的密码串,也就是说你还是需要另外有user表文件。这种方法和我最上面介绍的方法的区别在于,这种方法直接编辑linux下的user表文件,就不需要重新改文件属主和权限了

修正一下:我在Windows下的实际操作如下

1.关闭正在运行的MySQL。

2.打开DOS窗口,转到mysql/bin目录。

3.输入

mysqld-nt --skip-grant-tables

回车。如果没有出现提示信息,那就对了。

4.再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql/bin目录。

5.输入mysql回车,如果成功,将出现MySQL提示符 >

6. 连接权限数据库

>use mysql;

(>是本来就有的提示符,别忘了最后的分号)

6.改密码:

> update user set password=password("123456") where user="root"; (别忘了最后的分号)

7.刷新权限(必须的步骤)

>flush privileges;

8.退出

> /q

9.注销系统,再进入,开MySQL,使用用户名root和刚才设置的新密码123456登陆。

据说可以用直接修改user表文件的方法:

关闭MySQL,Windows下打开Mysql/data/mysql,有三个文件user.frm,user.MYD,user.MYI找个知道密码的MySQL,替换相应的这三个文件,如果user表结构没改过,一般也没人去改,替换user.MYD就可以了。

也可以直接编辑user.MYD,找个十六进制编辑器,UltraEdit就有这个功能。关闭MySQL,打开user.MYD。将用户名root后面的八个字符改为565491d704013245,新密码就是123456。或者将它们对应的十六进制数字,(左边那里,一个字符对应两个数字),改为 00 02 02 02 02 02 02 02,这就是空密码,在编辑器右边看到的都是星号*,看起来很象小数点。重开MySQL,输入root和你的新密码。

分享到:
评论

相关推荐

    MySQL连接数据库

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而Go语言(Golang)则是一种高效、简洁的编程语言,尤其适合构建网络服务和系统。在Go语言中连接MySQL数据库,我们需要使用特定的工具包,这个工具包通常被称为`...

    使用数据库连接池proxool配置mysql数据库

    在本配置中,我们将探讨如何使用Proxool来配置MySQL数据库,以解决8小时连接时限问题,并方便地集成到Tomcat服务器中。 **1. Proxool简介** Proxool是一个灵活、高效的Java数据库连接池,它支持多种数据库,包括...

    sqlyog用于mysql界面优化

    今天闲来无事,下载新版的 mysql 8.0.11 安装。 为了方便安装查看,我下载了sqlyog 工具 连接 mysql 配置新连接报错:错误号码 2058,分析是 mysql 密码加密方法变了。 解决方法:windows 下cmd 登录 mysql -u ...

    mysql57.zip

    MySQL 5.7是MySQL数据库管理系统的一个重要版本,它在5.6的基础上进行了多项改进和增强,提供了更高的性能、安全性和可扩展性。这个压缩包"mysql57.zip"包含了MySQL 5.7.32的Windows 64位安装程序,即"mysql-5.7.32-...

    window版mysql8.0.23_win64安装包

    MySQL是世界上最受欢迎的开源数据库系统之一,特别是在Web应用程序中。MySQL 8.0.23是该系列的一个重要版本,提供了许多性能优化、...了解并熟练掌握这些步骤,将有助于你在Windows环境中高效地部署和管理MySQL数据库。

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。...

    centos7安装mysql5.x脚本

    在这个脚本中,你可以设置root用户的密码,删除匿名用户,禁止远程root登录,以及删除测试数据库和加载数据。 如果想要通过脚本自动化这些步骤,可以创建一个bash脚本,例如`install_mysql.sh`,包含以上所有命令。...

    Centos7下mysql5.7安装步骤.docx

    在CentOS7操作系统中安装MySQL 5.7是一...安装MySQL 5.7.28在CentOS7上的过程涉及多个环节,每个步骤都至关重要,确保了数据库的正确配置和安全运行。遵循这些步骤,可以避免常见的问题,顺利地在你的系统上安装MySQL。

    Centos搭建lamp环境遇到的问题

    `进入mysql数据库。 3. **更新用户密码** 执行以下SQL语句更新root用户的密码: ```sql update user set password=password('新密码') where user='root'; ``` 其中`新密码`应替换为你想要设置的实际密码。 4....

    服务器系统安全分析报告.doc

    6.Mysql备份 1)利用crontab 定时任务对数据库做实时备份。 2)手动备份也是最可靠的备份方法。 3)磁带机备份。 4)双机热备份。 7.防DDOS攻击 1)使用Linux系统强大的命令手段防范Dos攻击 2)购买托管机房硬件防火墙的...

    Java 数据库连接池详解及简单实例

    它的核心原理在于预先在内存中创建一组数据库连接,这些连接作为对象存储在连接池中,当程序需要访问数据库时,不再直接创建新的连接,而是从连接池中获取一个可用的连接。使用完毕后,连接不会被关闭,而是归还到...

    教你把安卓手机改造成web服务器-支持外网访问.docx编程资料

    3. **修改密码**:在 KSWeb 设置中更改 MySQL 的密码。 ##### 3.3 配置端口及服务 1. **启用 Root 权限**:在 KSWeb 的设置中启用 Root 权限。 2. **更改端口**:将默认的 8080 端口更改为 80 端口,并确保 PHP ...

    c3p0jar包和源码

    总的来说,c3p0是一个实用且功能完备的数据库连接池组件,它的源码可以帮助开发者深入理解数据库连接池的工作原理,提高系统的稳定性和性能。通过合理的配置和使用,c3p0能够有效优化数据库操作,降低系统的资源消耗...

    hibernate+spring配置详细解析

    本篇文章主要探讨如何将Hibernate与Spring进行集成,并通过具体的配置示例来深入理解其工作原理。 ##### 1. 数据源配置 数据源是连接数据库的关键组件,在Spring框架中可以通过多种方式配置数据源。这里采用的是C3...

    bonecp详细配置

    **示例:** `jdbc:mysql://localhost:3306/mydatabase`,用于指定数据库服务器的位置及要访问的具体数据库名称。 #### 2. `username` **含义:** 数据库用户名。 **示例:** `root`,用于登录数据库时的身份验证...

    Redis云管理平台CacheCloud.zip

    Redis的开发人员如同使用Mysql一样,不需要运维Mysql服务器,同样使用Redis服务,不要自己运维Redis,Redis由一些在Redis运维方面更有经验的人来维护(保证高可用,高扩展性),使得开发者更加关注于Redis使用本身。...

    JdbcTemplate简单实例

    本文将深入探讨JdbcTemplate的基本用法和优势,并通过一个简单的实例来展示其功能。 ### JdbcTemplate简介 JdbcTemplate是Spring框架的一部分,它为JDBC提供了一种模板方法模式的实现,使得数据库操作变得更加简洁...

    德鲁伊线程池jar包。。。

    德鲁伊线程池(Druid)是阿里巴巴开源的一个高效、强大的数据库连接池组件,它不仅提供了数据库连接池的功能,还集成了监控分析、SQL审计、JDBC组件增强等多种特性,广泛应用于各种Java Web项目中。这个jar包包含了...

Global site tag (gtag.js) - Google Analytics