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

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

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

链接不上数据库以后, 咱们终止了数据库了数据库服务,企图经过免验证模式进入。sql

修改根目录下的 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库的不熟悉咱们放弃了这个方案。ide

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

尝试经过合法登陆fetch

合法登陆这块在实际执行得时候遇到了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'; 完事

相关文章
相关标签/搜索