2019-10-10:渗透测试,基础学习,mysql语法基础,笔记
mysql常用命令
mysql -u用户名 -p,登录方式也称为,二进制方式
exit 退出mysql
查看mysql版本
select version();
查看mysql所有数据库
show datebases;
大于5.0版本的mysql都会有information_schema,存放当前所有数据库信息,如登录信息,权限设置,安全设置等
选择某个数据库
use 库名;
修改密码
知道原密码修改,mysql -u -p进入mysql
低版本 5.0 5.1 5.5等有user表下有password字段的 update mysql.user set password=password('新密码') where user='root' and host='127.0.0.1';
flush privileges;
高版本5.7 8.0,
update mysql.user set authentication_string=password('新密码') ;
alter user "root"@"losthost" identified by '新密码';
flush privileges;
mysqladmin -u root -p password "新密码" ,输入老密码确认
忘记密码修改
找到Mysql配置文件,找到[mysqld]加上,skip-grant-tables,跳过密码验证,重启服务,直接免密码登录
update mysql.user set password=password('新密码')where user = '用户名';
mysql数据库中添加账户并授权
create user '用户名'@'localhost主机ip' identified by '密码';
主机ip,允许哪个主机可以登录
localhost 本机登录
% 任意主机可登录
ip地址,只能ip地址下的账户
grant 权限 on 库名.表名 to ‘用户名’@‘主机ip’;
权限,inset drop update select,all所有权限
库名.表名,‘*’表示所有的数据库以及所有的表
配置文件bind 127.0.0.1需要注释掉,或根据需求进行修改
数据库允许外连
update user set host ='%' where user ='root' and host = 'localhost';
flush privileges;
mysql常用函数
version(); 查看mysql版本
user(); 当前登录的用户
select @@version;查询版本
select @@hostname;查询主机名
select @@tmpdir;查询临时目录
select @@basedir;数据库服务所在路径
select @@datadir;数据存放的位置
mid(被截取的字符串,开始索引,截取长度)
ord()显示字符的ascii码,多个字符显示的为首字符
concat()拼接字符串
concat_ws(分隔符,xxx)使用分隔符将字符串将每个字符拼接
group_concat()分组并拼接
sleep(1)让数据库等待时间
数据库文件类型
opt 数据库编码
frm 存储表结构,比如 表头信息
myd 存储数据
myi 当前数据的配置和索引信息
sql语法
create database 库名;
mysqladmin -uroot -proot create 库名
删除数据库
drop database 库名;
mysqladmin -uroot -proot drop 库名
数据库数据类型
int 整型
bigint 大整形
float 浮点型
date 日期
time 时间
char 字符
varchar 变长字符
text 文本
timestamp 时间戳
double 双精度浮点型
bit 比特
tinyint 0/1
创建表
create table 表名(字段名 数据类型 primary key auto_increment,字段2 数据类型);
primary key 设置主键,表中需要一个主键,主键具有唯一性,能表示某个人或事,通过该主键可以确定一个记录
char varchar必需有值,不允许为空后边加 Not null
auto_increment 自增
charset=utf8 设置编码
default charset 设置编码
删除表
drop table 表名;
查询字段
show create table 表名;快速查看表中字段
desc 表名;
alter 表名 add primary key(字段) 主键名不能为空,后续设置主键
插入数据
insert into 表名(字段名1,字段名2) value(数据1,数据2)
自增的主键可以不插入数据的
查询数据
select 字段名 from 表名 where 字段名=指定值;一个条件
select 字段名 from 表名 where 字段名=值 and 字段2=值2 多条件
限制查询
limit a,b (ab均为数字,a表示记录的索引,b表示记录的长度也就是个数) limit 1默认从0开始选择a个记录
更新数据
update 表名 set 字段1=值1,字段2=值2;这有更新会把写的字段一列全改了,一般不这有做,需要有条件的修改
update 表名 set 字段1=值1 where 条件;
删除表中数据
delect from 表名;慎用
like字句
通配符
%任意字符
_单个字符
select * from 表名 where 字段名 like '%x' 匹配查询,表示字段下任意有x字符的记录都查找到
select * from 表名 where 字段 like 'x',匹配查询,表示字段下只有x的记录被查到
select * from 表名 where 字段 like'__x' 匹配查询,表示字段下任意有2位字符最后一位是x的记录被查到
union联合查询
查询语句 1 union 查询语句2,将他们查询出来的结果放一张表中显示,必需保证查询到的字段数必需一样
可以根据查询语句2的字段数量,判断查询语句1的字段数
排序
order by 字段 条件,根据给定的条件进行排序,默认情况下表的排序是升序
asc 升序
desc 降序
select * from 表名 order by 数字,表示对第n列进行排序,可以根据数字来推断字段列数
删除字段
alter table 表名 drop 字段名;删除指定表下的字段,列下记录会没有
alter table 表名 add 字段名 数据类型; 添加一个字段
修改表名
alter table 原表名 rename to 新表名;
去重
select distinct 字段 from 表名;可以去掉查询的记录的重复值
mysql注释符
# 或者 --
数据的导入和导出
导入数据
1,mysql -uroot -proot < 需要导入的数据库文件(xx.sql),需要注意xx.sql文件需要自动创建数据库,并且需要选择该数据库,如果xx.sql不会创建数据库,就手动创建一个数据库
create database 库名;
use 库名;
source 数据库文件
2,phpmyadmin等web平台选择文件导入
3,mysqlimport -uroot -proot --local 库名 数据库文件,首先需要创建一个数据库,并且创建一个表,该表的字段名要和导入的数据的字段保持一致
导出数据
1,利用phpmyadmin等工具导出
2,mysqldump -uroot -proot 库名 > 导入文件名
mysqldump -u -p 库名 表名 > 文件名
3,select 字段 from 表名 into outfile ’文件‘;将数据库中的字段内容,导出为一个文件