数据安全学习- -数据库学习记录1--Mysql

基础知识

mysql -h local -u root -p

0、用户管理:

1、新建用户:
>CREATE USER name IDENTIFIED BY 'ssapdrow';
2、更改密码:
>SET PASSWORD FOR name=PASSWORD('fdddfd');
3、权限管理
>SHOW GRANTS FOR name;    //查看name用户权限
>GRANT SELECT ON db_name.* TO name; //给name用户db_name数据库的所有权限
>REVOKE SELECT ON db_name.* TO name; //GRANT的反操作,去除权限;

1、数据库操作:

1、查看数据库:
>SHOW DATABASES;
2、创建数据库:
>CREATE DATABASE db_name; //db_name为数据库名
3、使用数据库:
>USE db_name;
4、删除数据库:
>DROP DATABASE db_name;

二、创建表:

1、创建表:
>CREATE TABLE table_name(
>id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, //id值,无符号、非空、递增——唯一性,可做主键。
>name VARCHAR(60) NOT NULL
>score TINYINT UNSIGNED NOT NULL DEFAULT 0, //设置默认列值
>PRIMARY KEY(id)
>)ENGINE=InnoDB //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索
>DEFAULT charset=utf8; //设置默认的编码,防止数据库中文乱码
如果有条件的创建数据表还可以使用   >CREATE TABLE IF NOT EXISTS tb_name(........
2、复制表:
>CREATE TABLE tb_name2 SELECT * FROM tb_name;
或者部分复制:
>CREATE TABLE tb_name2 SELECT id,name FROM tb_name;
3、创建临时表:
>CREATE TEMPORARY TABLE tb_name(这里和创建普通表一样);
4、查看数据库中可用的表:
>SHOW TABLES;
5、查看表的结构:
>DESCRIBE tb_name;
也可以使用:
>SHOW COLUMNS in tb_name;  //from也可以
6、删除表:
>DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];
实例:
>DROP TABLE IF EXISTS tb_name;
7、表重命名:
>RENAME TABLE name_old TO name_new;
还可以使用:
>ALTER TABLE name_old RENAME name_new;

三、修改表:

1、更改表结构:
>ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...
实例:
>ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;
>ALTER TABLE tb_name DROP address;
>ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

四、插入数据:

1、插入数据:
>INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);
这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。
2、插入检索出来的数据:
>INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2;

五、更新数据:

指定更新数据:
>UPDATE tb_name SET score=189 WHERE id=2;
>UPDATE tablename SET columnName=NewValue [ WHERE condition ]

六、删除数据:

删除数据:
>DELETE FROM tb_name WHERE id=3;

练习

环境准备

我使用的是Docker创建的Mysql8的数据环境,因为机器是MacBook Pro14 M1 所以靶场暂时没有办法,我使用的自己测测试数据库。
image.png

输入docker exex -it [Container ID/Names] [命令] 就可以进入到运行的docker实例中

docker exec -it mysql8 bash
# 执行数据库连接命令
mysql -uroot -p -hlocalhost 

实操

-- 执行查询数据库实例命令
shwo databases;
-- 创建数据库 
create database 库名 default charset=utf8mb4 collate utf8mb4_unicode_ci;
-- 删除数据库 
drop database 库名;
-- 打开数据库 
use 库名;

image.png

创建了networksecurity的数据库
image.png

CREATE TABLE if not exists `NetworkSecurity`.`hosts_info`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `status` tinyint NULL COMMENT '状态',
  `ip` varchar(32) NOT NULL COMMENT 'IP地址',
  `host_name` varchar(255) NULL COMMENT '主机名称',
  `modify_time` datetime NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `os_type` varchar(16) NOT NULL COMMENT '系统类型',
  `is_del` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);


-- 修改表=结构
ALTER TABLE `NetworkSecurity`.`hosts_info` 
MODIFY COLUMN `status` tinyint NULL DEFAULT NULL COMMENT 'Machine status (0-shutdown,1-runing,2-hold ststus,3-unkonwn)' AFTER `id`,
MODIFY COLUMN `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Machine IP' AFTER `status`,
MODIFY COLUMN `host_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'Machine Name' AFTER `ip`,
MODIFY COLUMN `modify_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'Info Media Time' AFTER `host_name`,
MODIFY COLUMN `os_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Machine Os type' AFTER `modify_time`,
MODIFY COLUMN `is_del` tinyint NOT NULL DEFAULT 0 COMMENT 'Whether the record is deleted' AFTER `os_type`,
MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Create Record Date Time' AFTER `is_del`;

-- 查看完整的表结构信息
SHOW FULL COLUMNS FROM hosts_info;

注意⚠️

在MySQL中,不同类型的引号具有不同的作用:

  1. 反引号(``):
    • 反引号用于标识数据库、表名、列名等标识符。它主要用于避免与MySQL保留关键字冲突,或者在标识符中包含特殊字符时使用。
    • 例如,如果您的表名是"order",但"order"是MySQL的保留关键字,您可以使用反引号将其转义,如SELECT * FROM order``。
  2. 单引号(‘’)和双引号(“”):
    • 单引号和双引号都用于表示字符串字面值。
    • 在MySQL中,单引号和双引号可以互换使用,用于括起字符串值。
    • 例如,SELECT * FROM users WHERE name = ‘John’ 或者 SELECT * FROM users WHERE name = “John”。

需要注意的是,当使用引号表示字符串时,MySQL会将引号内的内容视为字符串,而不是标识符。因此,如果您要引用标识符(如表名、列名等),应使用反引号,而不是单引号或双引号。

image.png

增删改查的范例

SCR-20231026-tmua.jpeg

-- 查看表结构
describe hosts_info;
-- 插入数据
insert into hosts_info (ip,host_name,os_type,is_del) values("192.168.3.1","Host_1","Macbook",0);
-- 更新数据
update hosts_info set host_name="MainHost";
-- 查询数据
select * from hosts_info;
-- 删除数据
delete from hosts_info where host_name="MainHost";

批量增删改

-- 批量插入数据
INSERT INTO `hosts_info` (ip,host_name,os_type) VALUES ("192.168.3.1","Host_1","IOS"), ("192.168.3.2","Host_2","Windows"), ("192.168.3.3","Host_3","Centos"), ("192.168.3.4","Host_4","Ubuntu"), ("192.168.3.5","Host_5","Kali");
-- 批量更新
update hosts_info set os_type='Redhat' where os_type like '%Centos%';
--批量
 delete from hosts_info where ip='192.168.3.10';

插入数据
image.png
更新数据(条件)
image.png
删除数据
image.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值