MySQL安全值守常用语句

1、用户权限设置

(1)用户定义:用户名@主机域

-- 查询所有用户
use mysql;
select user,host from user;

-- 增加用户,后面是密码
create user xinjing@'%' identified by '123';

-- 删除用户
drop user xinjing@'%';

(2)权限级别:

        可向用户按照全局、库、表、字段分发权限。存在于user, db, tables_priv, columns_priv, procs_priv这几个系统表中,当MySQL实例启动后加载到内存中。

-- 用户权限, mysql8.0之后不要加密码,之前要加密码!
grant all privileges on student.* to 'xinjing'@'%' with grant option;

-- 查看用户授权情况
show grants for xinjing@'%';

-- 回收用户的授权
revoke all privileges on student.* from xinjing@'%';

 2、查询相关信息

-- 服务器版本信息
select version();
-- 当前数据库名
select database();
-- 当前用户名
select user();
-- 服务器的状态,变量的值,放弃的终端,废弃的连接有啥
show status;
-- 服务器的配置变量,自增的偏移量,编码方式等等
show variables;
-- 数据存放的路径
show global variables like '%datadir%';
-- 建立的数据库的存放路径
select @@datadir;
-- mysql的安装路径
select @@basedir;

 3、union查询

-- union查询
use student;
show tables;
create table temp1(
	uid int primary key auto_increment,
	uname varchar(20) not null
)
insert into temp1(uname) values('zs'),('ls'),('ll');

create table temp2(
	eid int primary key auto_increment,
	age int not null
)
insert into temp2(age) values(11),(19),(20);

select * from temp1;
select * from temp2;
-- union联合查询,标头是第一个表格的
select * from temp1 union select * from temp2; 
-- sql注入手段
select * from temp1 union select 1,2;
  • union查询就是2条或多条查询结果合并成一个结果集;
  • 要求:结果集中的列数一致就可以!
  • 最终取出的列名,以第一条sql为准;
  • 默认去重,不想去重要用union all;
  • 非常重要的sql注入手段:因为只有当使用union语句,后接几个数字,只有相同列数,才会输出不会报错,同时可以得到表的标题!

 

4、分组查询

-- 分组查询
select sid,group_concat(cid),group_concat(cj order by cj desc separator ' ') from score group by sid;
  • group_concat(cid):表示组合某字段
  • order by <字段> esc/desc:表示升序/降序排列
  • separator ' ':表示分隔符,默认是逗号
  • group by sid:表示按照什么来分组

 

5、字符串函数

-- 字符串函数
select lower("ABcd");
select upper("ABcd");
select concat('abc','123');
select concat_ws(':','abc','123');
select substr('hello',2,2);
select length('hello');
select char_length('hello');

6、数据库的导入导出 

 (1)展示是否拥有导入导出的安全权限

show variables like 'secure_file_priv';

  • 此处这里,我可以将其导入导出到此文件目录中!如果为NULL则是没有权限
  • 正常应该是NULL,不允许随意导入导出,所以应该在检查的时候,设置为null!!!

(2)导出文件

 ① 使用MySQL语句导入导出文件

-- 导出为TXT文件,有点子问题!
select * from stuinfo into outfile 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\stuinfov1.txt';
-- 导入TXT文件,有点子问题!
load data local infile 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\stuinfov1.txt';

此处没能导出导入成功,没有过于深究。应该是需要修改前面的权限,而新版本或者安全MySQL不会允许有导入导出目录,此方法不做过多解释,有大佬可以在评论区补充!感谢 ღ( ´・ᴗ・` )比心

② 使用cmd命令导出数据表

mysqldump -u root -p --all-databases>mysqldatabases.sql //导出所有数据库太大了,就不执行了
mysqldump -u root -p student>student.sql // 导出一个数据库
  •  Mysqldump是一个命令,在cmd里面执行!!!
  • 导出的其实是sql语句,可以导出表,库,所有库。

mysqldump -u root -p student temp1>temp1.sql

③ 查看sql文件中的内容 

type temp1.sql

(3)导入文件 

①  cmd命令下导入数据

 但首先要在mysql中创建这个数据库!

mysql -u root -p1234 tt<student.sql

②  mysql中导入数据的命令

  但首先要在mysql中创建这个数据库!

source c:\Users\BXG\student.sql

 观察到直接在Navicat里面输入是不行的!那么我们在cmd里面进入mysql,输入此命令!

 

导入成功!!! 

PS:-- 这是Linux系统下的数据库路径

source /var/lib/mysql-files/student.sql

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一棵纯白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值