CentOS7获取MySQL最高权限
最近接到一个案子,要求对目标服务器进行数据固定。心想这个没啥难度啊,直接祭出网探进行远勘,一条指令也不用打,分分钟就能搞定。
话不多说,直接开工,打开网探连接上服务器,提示”检测到数据库:MySQL”,胜利就在眼前~~~
“密码多少?”
“木有。。。”
“那我能直接改超管的密码吗?”
“不能,有重要业务在跑!”
怎么办?不能怂啊!
CentOS7获取MySQL最高权限
前言:本文中使用的mysql版本为5.7,操作系统版本是centos7.4,前提是我们已经得到mysql所在主机的操作系统权限,如果是生产环境,伺机找一个使用低谷期进行操作,以求将影响降到最小。
第一步,查看mysql服务状态
systemctl status mysql
返回如下:
mysql.service - LSB: start and stop MySQL Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled) Active: active (exited) since Fri 2018-08-03 18:29:16 CST; 3min 29s ago Docs: man:systemd-sysv-generator(8) Process: 16782 ExecStop=/etc/rc.d/init.d/mysql stop (code=exited, status=0/SUCCESS) Process: 17902 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
显示服务处于激活状态。
第二步,杀掉所有mysql进程
killall -TERM mysqld
第三步,停止mysql 服务
systemctl stop mysql
第四步,以安全模式启动mysql
注意:此时原数据库设置的用户权限限制失效,所在存在一定风险
mysqld_safe --skip-grant-tables &
第五步,增加一个新的mysql用户
用户名test,密码设置为’123!@#321’,并授于管理员权限,并允许在本地以及远程主机登录
1、以root登录mysql
mysql -u root
返回:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1Server version: 5.6.36-log Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
2、切换目标数据库为mysql
use mysql;
返回:
Database changed
3、 刷新权限
flush privileges;
返回:
Query OK, 0 rows affected (0.00 sec)
4 、赋予本地登录权限
给密码为'123!@#321'的本地登录用户‘test’赋予全部权限;
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY '123!@#321' WITH GRANT OPTION;
返回:
Query OK, 0 rows affected (0.00 sec)
5 、赋予远程登录权限
给密码为'123!@#321'的远程登录用户‘test’赋予全部权限;
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY '123!@#321' WITH GRANT OPTION;
返回:
Query OK, 0 rows affected (0.00 sec)
6 、再次刷新权限
flush privileges;
返回:
Query OK, 0 rows affected (0.00 sec)
7 、查看数据库现有用户及所处主机信息,以确认以上操作生效;
elect host,user from mysql.user;
+-----------+-------------+
| host | user |
+-----------+-------------+
| % | test |
| 127.0.0.1 | root |
| localhost | root |
| localhost | test |
+-----------+-------------+
8 rows in set (0.00 sec)
确认操作成功。
8、退出数据库操作
quit
返回到系统提示符下。
第六步 重启数据库服务
1、停止服务
systemctl stop mysql
2 、启动服务
systemctl start mysql
第七步 验证已启用数据库用户权限检验
mysql -u root
返回
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
表示用户权限校验已正常启动,数据库已恢复正常安全级别。
至此,test用户即可使用设定密码进行访问,并具有所有权限,对原root用户未作任何修改
扫一扫关注微信公众帐号