Mysql 需要了解的常用命令、修改配置文件、数据库用户权限管理、几种读取外部文件的方法。

本文介绍了MySQL数据库中的一些常用命令,包括如何修改配置文件以允许读取外部文件。重点讲解了secure_file_priv配置项的设置,以及如何通过`LOAD DATA INFILE`和`INSERT ... VALUES (LOAD_FILE())`语句来读取文件内容到数据库。同时提到了`SYSTEM CAT`命令在本地读取文件的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 、和 mysql 相关的 shell 命令
启动 mysql          systemctl start mysqld
检查 mysql进程   ps -ef | grep mysqld
2 mysql 中常用命令
 
查看mysql 版本号   mysql中, select version()from dual;
查看数据库      show databases;
使用数据库      use mysql
查看表              show tables;
 
3 、获得 mysql 元数据命令
select version() ;服务器版本信息
select database() ;当前数据库名
select user(): 当前用户名
show status; 服务器状态
show variables like ‘’; 服务器配置变量
show global variables like '%datadir%'; :看数据文件存放位置
select @@datadir; 查询数据库的路径
select @@basedir 查询 mysql 的安装路径
4 、快捷命令
\h help ? 查看帮助 help create database
\G 格式化查看数据(
key : value
\c
5.7 可以 ctr1+c )束命令
\s status 查看状态信息
\. source 导入数据
\u use 切换数据库
\q exit quit 退出
\!
system 执行系统命令 前面敲一个 system 就可以了 比如 system ifconfig
5 mysqladmin 常用命令
mysqladmin -uroot -p123456 status 查看状态
mysqladmin -uroot -p123456 ping 查看状态
mysqladmin -uroot -p123456 variables 查看变量
Mysqladmin -uroot -p drop database 删除数据库
Mysqladmin -uroot -p create dadtabse 创建数据库
Mysqladmin -uroot -p password 修改密码
mysqladmin -uroot -p flush-log 刷新日志
mysqladmin -uroot -p reload 刷新缓存
MySql 修改配置文件
1 、了解 mysql 的配置文件
Linux 下安装的 mysql ,配置文件位置 /etc/my.cnf   或者   /etc/mysql/my.cnf
2 、修改端口
(1)编辑 vi /etc/my.cnf
[mysqld] 选项下增加 port=12345
  (2)关闭 selinuc
setenforce 0
(3)重新启动 mysql 服务
service mysqld restart
(4)查看修改端口
mysqladmin -uroot -p show variables like 'port'
(5)防火墙放行 12345 端口,关闭 3306 端口
firewall-cmd --zone= public -- add -port= 12345 /tcp --permanent
firewall-cmd --permanent --zone=public --remove-port=3306/tcp
(6)防火墙重新启动
Service firewalld restart 重启
systemctl restart firewalld 重启
systemctl disable firewalld 关闭开机启动
MySQL 数据库用户权限管理
1 MySQL 中用户是如何定义的
用户名 @ 主机域
主机域的样子
10.0.0.51
10.0.0.%
%
10.0.0.0/255.255.255.0
Db01
localhost
127.0.0.1
端口号 0-65535
2 MySQL 权限级别介绍
全局——可以管理整个 MySQL
库——可以管理指定的数据库
表——可以管理指定数据库的指定表
字段——可以管理指定数据库的指定表的指定字段、
权限存储在 mysql 库的 user, db, tables_priv, columns_priv, procs_priv 这几个系统表中,待
mysql  实例启动后就加载到内存中
3 、用户查看
(1) 查看所有用户
select user,host from mysql.user;
(2) 查看单个用户所有情况
select * from mysql.user where user = 'root' \G
(3) 查看用户权限赋予情况
show grants for root@'%'
4 、用户创建
create user 用户名@'主机域' identified by '密码';
create user test1@'%' identified by '123';
create user test2@'%' identified by '123';
create user test3@'%' identified by '123';
create user gmf@'%' identified by '123';
5 、用户删除
drop
user username;
username :是要删除的用户名
drop user 用户名1@'主机域'
drop user ' '@'127.0.0.1' 用户名为空的删除
6 、用户授权
1 )赋权语句
grant privileges
on databasename.tablename to 'username'@'host' with grant option
identified by ‘password’
例如:
grant all privileges on *.* to ‘xj’@’%’ identified by ‘123’ with grant option;
privileges: 是指赋予哪些数据库的操作权限,如:
insert update 等,全部是 ‘all’databasename
是指可以操作哪个数据库,全部数据库则是 * . *tablename :指可对哪些表进行操作 username
指给哪个用户授权
Host :指哪一主机、
GRANT 命令说明:
(1)ALL PRIVILEGES 表示所有权限,你也可以使用 select update 等权限。
(2)ON 用来指定权限针对哪些库和表。
(3)*.* 中前面的号用来指定数据库名,后面的号用来指定表名。
(4)TO 表示将权限赋予某个用户。
(5)@ 前面表示用户, @ 后面接限制的主机,可以是 IP IP 段、域名以及 % % 表示任何地方。
(6)IDENTIFIED BY 指定用户的登录密码。
(7)WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
2 )部分赋权举例
单数据库赋权
create database test
use test create table aaa(cmd text)
create table bbb(cmd text)
grant all privileges on test.* to ‘test1’@’%’ identified by ‘123’ with option;
单表赋权
grant all privileges on test.aaa to ‘test2’@’%’ identified by ‘123’ with option;
字段赋权
MySQL 单列级别的授权 , 这样做的话,我们是连表都是打不开的,只能通过查询语句,查对
我们开放的字段
grant select(user) on mysql.user to ‘test3’@’%’ identified by ‘123’
select * from tables_priv;
select user();
7 、收回用户权限
revoke [ 权限 ] ON [ . ] FROM [ 用户名 ]@[ 主机 ];
-- 查看用户
select user,host from user;
-- 新建 1 个用户 test4@'localhost'
create user test4@'localhost' identified by '123456';
-- 查看 test4 用户权限
select * from user where user='test4';
-- test4 赋权限 对所有表的所有权限 ,5.7 没有用户给创建一个用户
grant all privileges on test.aaa to 'test4'@'%' identified by '123456';
-- 收回权限 revoke table 权限表
revoke all privileges on test.aaa from 'test4'@'%';
select * from tables_priv;
MySQL 几种读取外部文件的方法
一、为什么要在 mysql 数据库中读取外部文
mysql 数据库在渗透过程中能够使用的功能还是比较多的 , 除了读取数据库数据之外,还可以
进行对数据库外部文件进行读写 ( 但前提是权限足够 )
mysql 在不同版本读取文件方法大致有这 3 :
1.load_file()
2.load data infile()
3.system cat
load_file()和 load data infile 读取文件的方法为:新建一个表,读取文件为字符串形式插入表中,
然后读出表中数据。
但是通常情况下有前提:

1、对外部文件有读的权限
2、secure_file_priv  null  什么文件都读不了   默认/var/lib/mysql-files/ 有读取权限    

为无  任意读取路径
能够做到任意路径读取   local-infile=1  [mysqld] [mysql]

insert into 表(字段) values(load_file('路径和文件'));
load data infile '路径文件'  into table 表名
system cat -----只能本地读

二、读取文件前提实现
修改 mysql.cnf 文件,
[mysqld] 下添加条目 : secure_file_priv =
[mysqld] 下面添加 local-infile=1 选项
[mysql] 下面也添加 local-infile=1
保存,关闭 selinux
setenforce 0
重启 mysql
Service mysqld restart
三、 load_file() 方式读取文件实现
首先在 /tmp 目录下创建一个文档
运行 mysql

sql 命令如下 :
    1 create table aaa(cmd text);
    2 insert into aaa(cmd) values (load_file('/tmp/1.txt'));
    3 select * from user;
四、 load data infile 方式实现文件读取
其实 load data infile load_file() 用法上没有什么区别 , 只是在注入过程中,往往会过滤掉
load_file() 这个函数,但是仍然有 load data infile 可以使用。
如: load data infile '/tmp/1.txt' into table aaa;
五、 System 命令方式读取文件
mysql 版本为 5.x , 除了可以使用上两种方法外,还可以使用系统命令直接读取文件

    注意:
1. 此方法只能在本地读取,远程连接 mysql 时无法使用 system
2. 无法越权读取。
show grants for 用户名@主机域
操作权限  insert  delete update select create drop grant revoke
操作对象  库,表,字段,所有

 
读取外部文件
load_file   函数  insert into 表(字段) values(load_file(‘’路径文件))
load data infile   命令 load data infile ‘路径文件’ into table 表名
system cat       system ifconfig  本地运行 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值