mysql5.7没有密码登录数据库

出于某种业务需要,需要连接一个没有密码的数据库。检查了整个网络环境并使用wireshark进行简单的抓包分析,我们发现在局域网内有两个网段10开头的、和192开头的。
经过分析判断后数据库主机存在于 10.0.0.22的主机上。
由于22主机上的服务正在运行,我们抓包后发现是 3308端口正在运行,还有一些半加密的sql语句。

22主机运行的竟然是Windows7的环境,这是个天大的好事,我们使用了PE镜像干掉了Windows系统的登录密码。
进入到主机后,检查磁盘发现一个mysqlbar的目录,里面的结构和mysql5.7安装版本非常一致。
我猜测这就是我们要找的数据库,找到了命令行之后,通过myql.exe尝试连接后提示密码错误,可以基本确定这就是我们要找的数据库。

连接不上数据库之后, 我们终止了数据库了数据库服务,企图通过免验证模式进入。

修改根目录下的 my-default.ini 再 [mysqld] 节点下 添加一行
skip-grant-tables = 1
修改根目录下的 my.ini 在 [mysqld] 节点下添加一行
skip-grant-tables

重启mysqld.exe发现,root用户下的 root密码登录成功,但是查看数据库看不到我们所需要的库。
再项目正在大功告成的时候,新的问题出现了,原来的数据库连接提示数据库连接异常。

接着尝试插入mysql库的user表进行新增用户的提权操作,尝试一条sql解决问题。

INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, `ssl_type`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `password_last_changed`, `password_lifetime`, `account_locked`,`ssl_cipher`,`x509_issuer`,`x509_subject`) VALUES ('%', 'test', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '0', '0', '0', '0', 'mysql_native_password', 'password(\'123\')', 'N', '2018-07-04 00:00:00', NULL, 'N','N','N','N');

后来发现我们insert的用户存在着权限问题,没有读取一些数据库的权限,由于对mysql库的不熟悉我们放弃了这个方案。

我们尝试再安全模式通过password函数修改root密码,然后新增一个用户,并提升他的数据库权限。
update user set authentication_string=password('123') where user='root';
修改了mysql的root密码,我们就可以合法登录,我们关闭了mysql安全模式,重启了myqsld

尝试通过合法登录832881-20180714205249256-355155675.png

合法登录这块在实际执行得时候遇到了mysql默认端口3306被修改为3308的问题,我们还是修改了配置文件得mysql端口才得以正常登录。
登录成功,

通过命令行 CREATE USER'admin'@'%' IDENTIFIED BY '123';
创建新的用户admin,密码为123

grant all privileges on 数据库名.* to 'admin'@'%' identified by '123';
授权admin用户对数据库名的所有操作.

flush privileges;
刷新授权。

附上一个 python尝试读取数据库的代码。顺便可以检查下我们授权的权限是否正确。

#-*- coding:utf-8 -*-
import mysql.connector

mysql_config = {'user':'admin',
'password':'123',
'host':'localhost',
'port':'3306',
'database' :'数据库',
'charset' :'utf8'}
conn = mysql.connector.connect(**mysql_config)

cursor=conn.cursor()
sql = "SHOW DATABASES;"
cursor=conn.cursor()
cursor.execute(sql)
result_set = cursor.fetchall()
print result_set

最后我们把root密码重置回来。
update user set authentication_string='*FF1887726154F9E870A6596D469B8C271B8E5BAA' where user='root';
完事

转载于:https://www.cnblogs.com/guohan/p/9289341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值