🐮博主syst1m 带你 acquire knowledge!
✨博客首页——syst1m的博客💘
🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭
😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈
😎《大数据专栏》大数据从0到秃头👽,从分析到决策,无所不能❕
🔥 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样的官方大型专栏,python面向对象必学之一!🐽
😋《性格荷官在线送书活动》不定期会存在有送书活动哦,大部分肯定是网安内容的书籍啦宝子们!💘
🎉希望本文能够给读者带来帮助,更好地理解这个问题或解决你的困惑🐾
文章目录
前言
上一期内容我们介绍了mysql的基础用法,增删改查,这期内容主要是讲安全值守的常用语句,用户和权限的管理,一些高级的查询方法,还有数据库的导入与导出
MySQL安全值守常用语句
1.用户管理
1-1.查询用户
查询所有用户
select user,host from mysql.user;
1-2.增加用户
用户是由 ‘用户名’@‘ip’ 这样组成的
create user '用户名'@'ip' identified by '密码';
地址是写可以在哪些ip地址上登录
例如
添加 admin用户只能在本地ip登录,密码123456
create user 'admin'@'localhost' identified by '123456';
添加 admin666用户可以在任何ip登录,密码123456
create user 'admin666'@'%' identified by '123456';
1-3.删除用户
现在我觉得这个admin666用户可以在任何ip登录太危险了,我不想要可以使用下面的指令
drop user 'admin666'@'%';
删除用户可不是只用写用户名就够了,还需要加上它的ip地址
drop user '用户名'@'ip';
2.用户权限管理
2-1.用户权限级别介绍
MySQL的用户权限级别
级别作用全局管理整个MySQL库管理指定的数据库表管理指定的数据库里指定的表字段管理指定的数据库里指定的表里面的指定的字段
权限存储在 mysql 库的 user , db , tables_priv , columns_ priv , procs_ priv 这几个系统数据表中
2-2.查看用户的的权限
查看某个用户的权限
show grants for '用户名'@'ip';
2-3.添加权限
给某个用户添加某个数据库的所有权限
grant ALL PRIVILEGES on 数据库.* to '用户名'@'ip';
# 数据库.* 数据库中所有的表 也就是这个数据库
# 可以在后面加上 identified by '密码' 让使用时需要输入密码
# 还可以加上 whit option 让他也可以给别人授权
数据库.*可以改成数据库.test_1,弄成指定的数据表
2-4.权限示例
权限作用语句ALL PRIVILEGES拥有所有权限grant ALL PRIVILEGES on 数据库.* to ‘admin’@‘ip’;SELECT允许用户查询表中的数据grant SELECT on 数据库.* to ‘admin’@‘ip’;INSERT允许用户向表中插入数据grant INSERT on 数据库.表 to ‘admin’@‘ip’;UPDATE允许用户更新表中的数据grant UPDATE on 数据库.表 to ‘admin’@‘ip’;DELETE允许用户删除表中的数据grant DELETE on 数据库.表 to ‘admin’@‘ip’;CREATE允许用户创建新的数据库或表grant CREATE on 数据库.* to ‘admin’@‘ip’;DROP允许用户删除数据库或表grant CREATE on 数据库.* to ‘admin’@‘ip’;GRANT OPTION允许用户授予或撤销其他用户的权限grant CREATE on 数据库.* to ‘admin’@‘ip’;
2-5.撤销权限
revoke ALL PRIVILEGES on 数据库.* from '用户名'@'ip';
撤销了 ‘admin’@'localhost’在test.test_1中所有的权限
2.元数据查询
语句语句select version();服务器当前版本select database();当前数据库名select user();当前用户名show status;服务器状态show variables;服务器配置变量show global variables like ‘%datadir%’;看数据文件存放位置select @@datadir;查询数据库的路径select @@basedir;查询MySQL的安装路径
3.union联合查询
可以将多条sql语句查询的结果显示在一起,原理就将选择的数据追加到第一张表的后面
查询出的结果列名以第一个为主
select * from 表名 union select * from 表名 union ...
# union 默认会去掉重复的结果 想要显示所有的可以使用 unio all
简单的查询下三个表
也可以在后面追加数据
select * from test_1 union select 1,2,3;
后面可以写别的但是不能超过第一张表的总列数不然会报错
4.分组查询
可以将想要查询的分为一组
select group_concat(列名),group_concat(列名)... from 表;
select 列名1,group_concat(列名2) from 表名 group by 列名1;
将sex相同的分为一组
select sex,group_concat(name order by name desc SEPARATOR'❤ ') from test_3 group by sex;
# order by name desc SEPARATOR'❤ ' name里面以 ❤ 隔开
# 默认是以 , 隔开
5.字符串函数
select 函数;
函数作用结果lower(column|str)将字符串全部转换为小写字母upper(column|str)将字符串全部转换为大写字母concat(column|str1,column}str2,…)将多个字符串收尾相连后concat_ws(separator,str1,str2,…)使用指定的字符(s)将多个字符串进行连接substr(str,pos,len)从字符串中的指定位置(pos)向后抓取多少长度(len)的字符length(str)返回字符串的存储长度char_length(str)返回字符串的字符个数
6.数据库导入导出
6-1.导出
导出数据库不需要登录MySQL,直接在cmd里面输入
导出数据库
mysqldump -u root -p test>D:\mysql\test.sql
将 test 数据库导出到D盘的 mysql 文件夹
导出数据表
mysqldump -u root -p test test_1>D:\mysql\test_1.sql
将 test 数据库里的 test_1 表导出到D盘里的 mysql 文件夹
导出所有的数据库和表
mysqldump -u root -p --all-databases>D:\mysql\mysql.sql
6-2.导入
cmd导入
mysql -u root -p testnew>D:\mysql\test.sql
将 test.sql 导入到 testnew 数据库
不知道为什么使用cmd导入总是不了
msyql语句导入
use testnew;
source D:/mysql/test.sql
将 D:/mysql/test.sql 导入进 testnew 数据库中
7.总结
今天这期内容讲解的是mysql管理方面的内容,学习完这期内容后对于操作mysql这块算是学完了,这些指令还是很简单的,如果实在是记不住的话也可以再需要的时候再查找,之后用着用着就会记住了。如果你还有什么问题的记得私信我哦!
版权归原作者 syst1m' 所有, 如有侵权,请联系我们删除。