以普通权限运行MySQL的操作说明
- 格式:doc
- 大小:563.00 KB
- 文档页数:21
Mysql是怎样运⾏起来的⼀、初识mysql1、mysql数据库实例:运⾏mysql服务器程序的进程2、启动mysql客户端程序,参数-h 计算机的ip地址,-u⽤户名,-p密码3、客户端和服务器连接过程,客户端进程向服务器进程发送请求并得到响应的过程本质上是进程之间的通信 3.1TCP/IP mysql服务器在启动时会默认申请3306端⼝号,可以通过启动服务器进程的命令⾏添加-P参数来指定端⼝号3.2 命名管道启动服务器命令⾏加上--enable-named-pipe 在客户端加上--protocol=pipe 3.3 共享内存启动服务器命令⾏加上--shared-memory 在客户端加上--protocol==memory4、服务器处理客户端请求(客户端向服务器发送⽂本mysql语句,服务器向客户端返回结果) 4.1 连接管理:当有⼀个客户端进程连接到服务器时,服务器都会创建⼀个线程与它打交道,当该客户端退出时,服务器并不会⽴即将线程销毁,⽽是将它缓存起来,当有新的客户端时,就把缓存分配给它,节省了开销, 4.2 解析和优化 4.2.1 查询缓存:服务器会把刚刚处理的查询请求和结果缓存起来,如果有相同的请求直接从缓存中取。
查询缓存会在不同的客户端之间共享,只要修改了表,与 表相关的缓存都会被删除 4.2.2 语法解析:如果换粗没有命中,mysql服务器对⽂本进⾏分析,判断语法是否正确。
4.2.3 查询优化 4.3 存储引擎:物理上怎么表⽰记录,怎么从表中读取数据,怎么把数据写在物理存储器上 常见操作: (1)服务器⽀持的引擎: show engines (2)创建表时设置存储引擎 create table 表名() engine=InnoDB (3)修改表存储引擎 alter table 表明 engine=MyISAM⼆、mysql启动选项和系统变量1、在命令⾏使⽤选项 1)--skip--networking 禁⽌使⽤TCP/IP⽹络进⾏通信 2)--default-storage-engine=MyISAM2、配置⽂件中使⽤选项 windows配置⽂件路径:BASEDIR\my.ini 可以通过--default-extra-file指定额外的配置⽂件路径 配置⽂件以[ ]为⼀个组例如 [server] option1 option2=value23、系统变量 查看系统变量 show variables like 通过启动选项设置系统变量 --max-connection 服务器程序运⾏过程中设置 global:影响服务器的整体操作 session:影响某个客户端连接的操作 set [global|session] 系统变量名=值4、状态变量 查看状态变量语句show status like三、字符集和⽐较规则1、字符集:描述某个字符范围的编码规则2、常⽤的字符集 1)ASCII 1个字节 2)gbk 2个字节 3)utf8 3个字节 4)utf8mb3 4个字节默认的3、字符集的级别和⽐较规则 1)服务器级别:可以在配置⽂件[server]中修改 character_set_server:服务器级别的字符集 collation_server:服务器级别的⽐较规则 2)数据库级别:create database [character set 字符集名称][collate ⽐较规则名称] character_set_database:数据库的字符集 collation_database:数据库的⽐较规则 3)表级别:create table [character set 字符集名称][collate ⽐较规则名称] 4) 列级别:create table 表名(列名字符串类型 [character set 字符集名称][collate ⽐较规则名称]) alter table 表名 modify 列名字符串类型 [character set 字符集名称][collate ⽐较规则名称]4、各字符集和⽐较规则 如果创建或修改列时没有显式指定字符集和⽐较规则,则列默认使⽤表的字符集和⽐较规则 如果创建或修改表时没有显式指定字符集和⽐较规则,则列默认使⽤数据库的字符集和⽐较规则 如果创建或修改数据库时没有显式指定字符集和⽐较规则,则列默认使⽤服务器的字符集和⽐较规则5、客户端和服务器通信过程中使⽤的字符集 1)客户端发送的请求字节序列是采⽤哪种字符集进⾏编码的。
如何使用MySQL进行客户端连接与使用在当前信息时代,数据库已成为了企业级应用和网站开发中不可或缺的一部分。
而MySQL作为一款开源的关系型数据库管理系统,被广泛运用于各个领域。
本文将探讨如何使用MySQL进行客户端连接与使用,并介绍一些常用的操作技巧。
1. 客户端连接MySQL服务器在使用MySQL之前,首先需要从官方网站下载并安装MySQL。
安装完成后,可以通过命令行窗口或者使用图形化工具进行连接。
命令行窗口是一种常用的连接方式。
在Windows系统中,可以通过"开始-运行-cmd"打开命令行窗口,然后输入以下命令连接到MySQL服务器:```mysql -h 主机名 -P 端口号 -u 用户名 -p```其中,主机名指的是MySQL服务器所在的主机名称或者IP地址,端口号默认为3306,用户名是连接到MySQL服务器的用户名,-p选项表示需要输入密码。
在Linux系统中,可以使用相应的命令行工具(如mysql)进行连接。
除了命令行窗口,还可以使用一些图形化工具来连接MySQL服务器,例如MySQL Workbench、Navicat等。
这些工具提供了更直观、方便的界面,能够轻松管理和操作数据库。
2. 数据库的创建和删除连接到MySQL服务器后,可以进行数据库的创建和删除操作。
创建数据库使用CREATE DATABASE语句,语法如下:```CREATE DATABASE 数据库名;```例如,创建名为"mydb"的数据库:```CREATE DATABASE mydb;```删除数据库使用DROP DATABASE语句,语法如下:```DROP DATABASE 数据库名;```例如,删除名为"mydb"的数据库:```DROP DATABASE mydb;```3. 数据表的创建和删除数据库中的数据以表的形式组织,因此在进行数据操作前,需要创建相应的数据表。
mysql普通用户创建数据库的方法在MySQL数据库管理系统中,为了确保数据的安全性和管理的便捷性,通常会为不同的用户分配不同的权限。
本文将详细介绍如何以普通用户的身份创建数据库。
### MySQL普通用户创建数据库的方法在MySQL中,普通用户默认是没有权限创建数据库的。
要实现这一操作,必须先由拥有足够权限的管理员(如root用户)进行相应的授权。
以下步骤将指导你如何为普通用户授权创建数据库:#### 1.登录MySQL服务器首先,以root用户或具有足够权限的用户身份登录MySQL服务器。
```bashmysql -u root -p```输入密码后,你将进入MySQL命令行。
#### 2.创建普通用户如果还没有普通用户,你可以创建一个。
```sqlCREATE USER "username"@"localhost" IDENTIFIED BY "password";```将`"username"`和`"password"`替换成你希望设定的用户名和密码。
如果你想允许用户从任何远程主机连接,可以将`"localhost"`替换为`"%"`。
#### 3.授权用户接下来,给这个用户授权创建数据库的权限。
```sqlGRANT CREATE ON *.* TO "username"@"localhost";```此命令允许用户在MySQL服务器上创建数据库。
`*.*`表示对所有的数据库和表进行授权。
#### 4.刷新权限使权限立即生效,需要执行以下命令:```sqlFLUSH PRIVILEGES;```#### 5.使用普通用户登录并创建数据库完成以上步骤后,就可以用刚刚创建的普通用户登录MySQL,并尝试创建数据库。
mysql绿色版使用技巧MySQL绿色版是MySQL数据库的一种轻量级版本,不需要进行安装,可以直接解压使用。
下面是一些MySQL绿色版的使用技巧。
1. 下载和解压MySQL绿色版:首先在官方网站上下载MySQL绿色版压缩包,然后将其解压到自己想要安装的目录下。
2. 配置环境变量:在解压后的MySQL绿色版目录下,找到bin文件夹,将该路径添加到系统的环境变量中。
这样可以在任意路径下直接使用MySQL命令。
3. 初始化数据库:在使用MySQL之前,需要初始化数据库。
在bin文件夹下打开命令提示符窗口,执行命令`mysql_install_db`进行数据库的初始化。
4. 启动MySQL服务器:在bin文件夹下打开命令提示符窗口,执行命令`mysqld`来启动MySQL服务器。
如果一切顺利,可以看到服务器成功启动的提示信息。
5. 连接到MySQL服务器:在bin文件夹下打开命令提示符窗口,执行命令`mysql -u 用户名 -p`来连接到MySQL服务器。
输入密码后就可以进入MySQL的命令行界面。
6. 创建数据库和表:在MySQL的命令行界面中,可以执行各种SQL语句来创建数据库和表。
例如,执行`CREATEDATABASE database_name;`来创建一个新的数据库,执行`CREATE TABLE table_name (column_name1 data_type, column_name2 data_type, ...);`来创建一个新的表。
7. 插入数据:在MySQL的命令行界面中,可以执行`INSERT INTO table_name (column_name1, column_name2, ...) VALUES (value1, value2, ...);`来插入数据到表中。
8. 查询数据:在MySQL的命令行界面中,可以执行`SELECT column_name1, column_name2, ... FROM table_name;`来查询表中的数据。
MySQL是怎样运行的从根儿上理解MySQL楔子——阅读前必看 1•1章装作自己是个小白——初识MySQL 3•1.1 MySQL的客户端/服务器架构3•1.2 MySQL的安装3•1.3 启动MySQL服务器程序5•1.3.1 在类UNIX系统中启动服务器程序5•1.3.2 在Windows系统中启动服务器程序6•1.4 启动MySQL客户端程序7•1.5 客户端与服务器连接的过程10•1.5.1 TCP/IP 10•1.5.2 命名管道和共享内存10•1.5.3 UNIX域套接字11•1.6 服务器处理客户端请求11•1.6.1 连接管理12•1.6.2 解析与优化12•1.6.3 存储引擎14•1.7 常用存储引擎14•1.8 关于存储引擎的一些操作16•1.8.2 设置表的存储引擎16•1.9 总结17•2.1 启动选项和配置文件19•2.1.1 在命令行上使用选项19•2.1.2 配置文件中使用选项21•2.2 系统变量27•2.2.1 系统变量简介27•2.2.2 查看系统变量27•2.2.3 设置系统变量28•2.3 状态变量32•2.4 总结32•字符集和比较规则34•3.1 字符集和比较规则简介34•3.1.1 字符集简介34•3.1.2 比较规则简介34•3.1.3 一些重要的字符集35•3.2 MySQL中支持的字符集和比较规则36•3.2.1 MySQL中的utf8和utf8mb4 36•3.2.2 字符集的查看36•3.2.3 比较规则的查看38•3.3 字符集和比较规则的应用39•3.3.1 各级别的字符集和比较规则39•3.3.3 比较规则的应用52•3.4 总结53•4.1 准备工作55•4.2 InnoDB页简介55•4.3 InnoDB行格式56•4.3.1 指定行格式的语法56•4.3.2 COMPACT行格式56•4.3.3 REDUNDANT行格式64•4.3.4 溢出列68•4.3.5 DYNAMIC行格式和COMPRESSED行格式70•4.4 总结71•5.1 不同类型的页简介72•5.2 数据页结构快览72•5.3 记录在页中的存储73•5.4 Page Directory(页目录)80•5.5 Page Header(页面头部)85•5.6 (文件头部)86•5.7 (文件尾部)88•5.8 总结88•快速查询的秘籍——B+树索引90•6.1 没有索引时进行查找90•6.1.1 在一个页中查找90•6.1.2 在很多页中查找91•6.2 索引91•6.2.1 一个简单的索引方案92•6.2.2 InnoDB中的索引方案94•6.2.3 InnoDB中B+树索引的注意事项102•6.2.4 MyISAM中的索引方案简介104•6.2.5 MySQL中创建和删除索引的语句105•6.3 总结106•B+树索引的使用107•7.1 B+树索引示意图的简化107•7.2 索引的代价109•7.3 应用B+树索引110•7.3.1 扫描区间和边界条件110•7.3.2 索引用于排序122•7.3.3 索引用于分组125•7.4 回表的代价126•7.5 更好地创建和使用索引127•7.5.2 考虑索引列中不重复值的个数127•7.5.3 索引列的类型尽量小127•7.5.4 为列前缀建立索引128•7.5.5 覆盖索引129•7.5.8 冗余和重复索引130•7.6 总结131•数据的家——MySQL的数据目录132•8.1 数据库和文件系统的关系132•8.2 MySQL数据目录132•8.2.1 数据目录和安装目录的区别132•8.2.2 如何确定MySQL中的数据目录132•8.3 数据目录的结构133•8.3.1 数据库在文件系统中的表示133•8.3.2 表在文件系统中的表示134•8.3.3 其他的文件137•8.4 文件系统对数据库的影响137•8.5 MySQL系统数据库简介138•8.6 总结138•9.1 回忆一些旧知识140•9.1.1 页面类型140•9.1.2 页面通用部分141•9.2 独立表空间结构142•9.2.1 区的概念142•9.2.2 段的概念144•9.2.3 区的分类145•9.2.4 段的结构149•9.2.5 各类型页面详细情况150•9.2.6 Segment Header结构的运用156•9.2.7 真实表空间对应的文件大小157•9.3 系统表空间158•9.4 总结164•10.1 访问方法的概念167•10.2 const 167•10.3 ref 168•10.4 ref_or_null 170•10.5 range 171•10.6 index 171•10.7 all 172•10.8 注意事项172•10.8.1 重温二级索引+回表172•10.8.2 索引合并173•10.9 总结177•11.1 连接简介178•11.1.1 连接的本质178•11.1.2 连接过程简介180•11.1.3 内连接和外连接181•11.2 连接的原理185•11.2.1 嵌套循环连接186•11.2.2 使用索引加快连接速度187•11.2.3 基于块的嵌套循环连接188•11.3 总结189•12.1 什么是成本190•12.2 单表查询的成本190•12.2.1 准备工作190•12.2.2 基于成本的优化步骤191•12.2.3 基于索引统计数据的成本计算198•12.3 连接查询的成本201•12.3.1 准备工作201•12.3.2 条件过滤(Condition Filtering)201•12.3.3 两表连接的成本分析203•12.3.4 多表连接的成本分析205•12.4 调节成本常数206•12.4.1 mysql.server_cost表206•12.4.2 mysql.engine_cost表208•12.5 总结209•13.1 统计数据的存储方式210•13.2 基于磁盘的永久性统计数据211•13.2.1 innodb_table_stats 211•13.2.2 innodb_index_stats 214•13.2.3 定期更新统计数据215•13.3 基于内存的非永久性统计数据217•13.4 innodb_stats_method的使用217•13.5 总结219•14.1 条件化简220•14.1.1 移除不必要的括号220•14.1.2 常量传递220•14.1.3 移除没用的条件221•14.1.4 表达式计算221•14.1.5 HAVING子句和WHERE子句的合并221•14.1.6 常量表检测221•14.2 外连接消除222•14.3 子查询优化224•14.3.1 子查询语法225•14.3.2 子查询在MySQL中是怎么执行的230•14.4 总结244•15.1 执行计划输出中各列详解246•15.1.1 table 246•15.1.2 id 247•15.1.3 select_type 249•15.1.4 partitions 252•15.1.5 type 252•15.1.6 possible_keys和key 255•15.1.7 key_len 256•15.1.8 ref 258•15.1.9 rows 258•15.1.10 filtered 259•15.1.11 Extra 260•15.2 JSON格式的执行计划266•15.3 Extented EXPLAIN 268•15.4 总结269•16.1 optimizer trace简介270•17.1 缓存的重要性278•17.2 InnoDB的Buffer Pool 278•17.2.1 啥是Buffer Pool 278•17.2.2 Buffer Pool内部组成278•17.2.3 free链表的管理279•17.2.4 缓冲页的哈希处理280•17.2.5 flush链表的管理281•17.2.6 LRU链表的管理282•17.2.7 其他的一些链表286•17.2.8 刷新脏页到磁盘287•17.2.9 多个Buffer Pool实例287•17.2.10 innodb_buffer_pool_chunk_size 288•17.2.11 配置Buffer Pool时的注意事项289•17.2.12 查看Buffer Pool的状态信息291•17.3 总结293•18章从猫爷借钱说起——事务简介294•18.1 事务的起源294•18.1.1 原子性(Atomicity)295•18.1.2 隔离性(Isolation)295•18.1.3 一致性(Consistency)296•18.1.4 持久性(Durability)298•18.2 事务的概念298•18.3 MySQL中事务的语法300•18.3.1 开启事务300•18.3.2 提交事务301•18.3.3 手动中止事务302•18.3.4 支持事务的存储引擎302•18.3.5 自动提交303•18.3.6 隐式提交304•18.3.7 保存点305•18.4 总结307•19.1 事先说明308•19.2 redo日志是啥308•19.3 redo日志格式309•19.3.1 简单的redo日志类型309•19.3.2 复杂一些的redo日志类型311•19.3.3 redo日志格式小结314•19.4 Mini-Transaction 315•19.4.1 以组的形式写入redo日志315•19.4.2 Mini-Transaction的概念319•19.5 redo日志的写入过程319•19.5.1 redo log block 319•19.5.2 redo日志缓冲区320•19.5.3 redo日志写入log buffer 321•19.6 redo日志文件323•19.6.1 redo日志刷盘时机323•19.6.2 redo日志文件组323•19.6.3 redo日志文件格式324•19.7 log sequence number 327•19.7.1 flushed_to_disk_lsn 328•19.7.3 flush链表中的lsn 330•19.8 checkpoint 332•19.10 查看系统中的各种lsn值335•19.11 innodb_flush_log_at_trx_mit的用法336•19.12 崩溃恢复336•19.12.1 确定恢复的起点337•19.12.2 确定恢复的终点337•19.12.3 怎么恢复337•19.14 总结340•20章后悔了怎么办——undo日志342•20.1 事务回滚的需求342•20.2 事务id 343•20.2.1 分配事务id的时机343•20.2.2 事务id是怎么生成的343•20.2.3 trx_id隐藏列344•20.3 undo日志的格式344•20.3.1 INSERT操作对应的undo日志345•20.3.2 DELETE操作对应的undo日志347•20.3.3 UPDATE操作对应的undo日志353•20.3.4 增删改操作对二级索引的影响357•20.4 通用链表结构357•20.5 FIL_PAGE_UNDO_LOG页面359•20.6 Undo页面链表361•20.6.1 单个事务中的Undo页面链表361•20.6.2 多个事务中的Undo页面链表362•20.7 undo日志具体写入过程363•20.7.1 段的概念363•20.7.2 Undo Log Segment Header 364•20.7.3 Undo Log Header 365•20.7.4 小结367•20.8 重用Undo页面368•20.9 回滚段369•20.9.1 回滚段的概念369•20.9.2 从回滚段中申请Undo页面链表371•20.9.3 多个回滚段372•20.9.4 回滚段的分类374•20.9.5 roll_pointer的组成374•20.10 回滚段相关配置376•20.10.1 配置回滚段数量376•20.10.2 配置undo表空间376•20.11 undo日志在崩溃恢复时的作用377•20.12 总结377•21.1 事前准备379•21.2 事务隔离级别379•21.2.2 SQL标准中的4种隔离级别385•21.2.3 MySQL中支持的4种隔离级别386•21.3 MVCC原理388•21.3.1 版本链388•21.3.2 ReadView 390•21.3.3 二级索引与MVCC 397•21.3.4 MVCC小结397•21.4 关于purge 398•21.5 总结399•22章工作面试老大难——锁401•22.1.1 写-写情况401•22.1.2 读-写或写-读情况403•22.1.3 一致性读404•22.1.4 锁定读404•22.1.5 写操作405•22.2 多粒度锁406•22.3 MySQL中的行锁和表锁408•22.3.1 其他存储引擎中的锁408•22.3.2 InnoDB存储引擎中的锁409•22.3.3 InnoDB锁的内存结构417•22.4 语句加锁分析423•22.4.1 普通的SELECT语句423•22.4.2 锁定读的语句424•22.4.3 半一致性读的语句441•22.4.4 INSERT语句442•22.5 查看事务加锁情况444•22.6 死锁450•22.7 总结454•参考资料455。
MySQL中的角色和权限管理导语:MySQL是一款非常流行的关系型数据库管理系统,它提供了丰富的角色和权限管理功能,帮助管理员灵活地管理数据库的访问和操作权限。
本文将深入探讨MySQL中的角色和权限管理,介绍其使用方法和注意事项。
一、角色和权限的基本概念1. 角色: 在MySQL中,角色是用来管理和分配权限的抽象概念。
通过创建角色,可以将一组权限集中到一个角色中,便于权限的管理和控制。
2. 权限: 权限是指数据库用户对数据库对象(如表、视图、存储过程等)进行操作的许可。
MySQL中的权限通常包括SELECT、INSERT、UPDATE、DELETE 等。
二、角色和权限的创建和分配1. 创建角色: 在MySQL中,可以通过CREATE ROLE语句创建一个角色。
```CREATE ROLE 'role_name' IDENTIFIED BY 'password';```其中,role_name是角色的名称,password是角色的密码(可选)。
2. 分配权限: 创建角色后,可以使用GRANT语句将权限分配给角色。
```GRANT permission_1, permission_2, ... TO 'role_name';```例如,将SELECT和INSERT权限分配给角色test_role:```GRANT SELECT, INSERT ON database_name.* TO 'test_role';```三、用户和角色的关联1. 创建用户: 在MySQL中,用户是用来登录和访问数据库的实体。
可以使用CREATE USER语句创建一个用户。
```CREATE USER 'username' IDENTIFIED BY 'password';```其中,username是用户的名称,password是用户的密码。
mysql shell使用方法MySQL Shell 是一种命令行工具,用于连接和管理 MySQL 数据库。
下面是一些 MySQL Shell 的使用方法:1. 启动 MySQL Shell:可以在命令行中输入“mysqlsh”命令,然后按回车键启动MySQL Shell。
2. 连接到 MySQL 数据库:在 MySQL Shell 中,连接到 MySQL 数据库可以使用以下命令:```\connect username@hostname:port```其中,username 表示数据库用户名,hostname 表示数据库服务器主机名,port 表示数据库服务器端口号。
如果连接的是本地数据库,可以省略 username、hostname 和 port。
3. 提交 SQL 查询:连接到MySQL 数据库后,可以使用SQL 查询来操作数据库。
例如,执行 SELECT 查询:```SELECT * FROM table_name;```其中,table_name 是要查询的表名。
4. 退出 MySQL Shell:在 MySQL Shell 中,可以使用以下命令退出:```\q```5. 使用 JavaScript 脚本:MySQL Shell 还支持使用 JavaScript 脚本来操作数据库。
可以在 MySQL Shell 中编写 JavaScript 脚本,并通过以下命令执行脚本:```\source /path/to/script.js```其中,/path/to/script.js 是脚本文件的路径。
除了上述的基本使用方法外,MySQL Shell 还提供了许多其他功能,如事务管理、用户管理等。
可以使用 help 命令查看更多的命令和用法信息。
MySQL Shell 除了命令行工具外,还提供了一种交互式界面,可以通过“\sql”命令进入 SQL Shell 模式,或者通过“\js”命令进入 JavaScript Shell 模式。
2022年全国职业院校技能大赛(中职组)网络安全竞赛试题(5)(总分100分)赛题说明一、竞赛项目简介“网络安全”竞赛共分A.基础设施设置与安全加固;B.网络安全事件响应、数字取证调查和应用安全;C.CTF夺旗-攻击;D.CTF夺旗-防御等四个模块。
根据比赛实际情况,竞赛赛场实际使用赛题参数、表述及环境可能有适当修改,具体情况以实际比赛发放赛题为准。
竞赛时间安排和分值权重见表1。
表1 竞赛时间安排与分值权重二、竞赛注意事项1.比赛期间禁止携带和使用移动存储设备、计算器、通信工具及参考资料。
2.请根据大赛所提供的比赛环境,检查所列的硬件设备、软件清单、材料清单是否齐全,计算机设备是否能正常使用。
3.在进行任何操作之前,请阅读每个部分的所有任务。
各任务之间可能存在一定关联。
4.操作过程中需要及时按照答题要求保存相关结果。
比赛结束后,所有设备保持运行状态,评判以最后提交的成果为最终依据。
5.比赛完成后,比赛设备、软件和赛题请保留在座位上,禁止将比赛所用的所有物品(包括试卷等)带离赛场。
6.禁止在提交资料上填写与竞赛无关的标记,如违反规定,可视为0分。
竞赛内容模块A 基础设施设置与安全加固(本模块20分)一、项目和任务描述:假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用用户安全管理和密码策略、本地安全策略、日志安全审计、数据库安全策略、Web安全加固、防火墙策略等多种安全策略来提升服务器系统的网络安全防御能力。
本模块要求根据竞赛现场提供的A模块答题模板对具体任务的操作进行截图并加以相应的文字说明,以word文档的形式书写,以PDF格式保存,以“赛位号+模块A”作为文件名,PDF格式文档为此模块评分唯一依据。
二、服务器环境说明Windows 用户名:administrator,密码:123456Linux 用户名:root,密码:123456三、具体任务(每个任务得分以电子答题卡为准)A-1任务一登录安全加固(Windows)1.密码策略a.密码策略必须同时满足大小写字母、数字、特殊字符;b.强制密码历史为5个密码;c.密码最长存留期为45天;d.最小密码长度不少于8个字符。
MySQL赋予⽤户权限命令本⽂实例,运⾏于 MySQL 5.0 及以上版本。
MySQL 赋予⽤户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to ⽤户⼀、grant 普通数据⽤户,查询、插⼊、更新、删除数据库中所有表数据的权利。
1.grant select on testdb.* to common_user@'%'2.grant insert on testdb.* to common_user@'%'3.grant update on testdb.* to common_user@'%'4.grant delete on testdb.* to common_user@'%'或者,⽤⼀条 MySQL 命令来替代:grant select, insert, update, delete on testdb.* to common_user@'%'⼆、grant 数据库开发⼈员,创建表、索引、视图、存储过程、函数。
等权限。
grant 创建、修改、删除 MySQL 数据表结构权限。
1.grant create on testdb.* to developer@'192.168.0.%';2.grant alter on testdb.* to developer@'192.168.0.%';3.grant drop on testdb.* to developer@'192.168.0.%';grant 操作 MySQL 外键权限。
grant references on testdb.* to developer@'192.168.0.%';grant 操作 MySQL 临时表权限。
grant create temporary tables on testdb.* to developer@'192.168.0.%';grant 操作 MySQL 索引权限。
MySQL基本使⽤教程⼀、结构类操作1.1 连接数据库1.1.1 命令连接数据库# 基础格式mysql [OPTIONS] [database_name]# 常⽤参数格式mysql [-h<ip>] [-u<username>] [-p<password>] [-P<port>] [-e<command>] [database_name]说明:选项及其参数间可以有空格也可以没空格;-p可直接接密码也可以后边要求输⼊时再输⼊;密码有$等元字符时要⽤单引号括起来防⽌被解析掉;-e后的的命令⼀般都有空格所以⼀般都⽤引号括起来。
1.1.2 断开数据库连接-- ⽅式⼀exit-- ⽅式⼆quit1.1.3 常⽤图形界⾯客户端:暂时见到最好⽤的mysql客户端;。
:MySQL官⽅客户端,各⽅⾯都还可以;最⼤的糟点⼤概是界⾯有点丑。
:暂时见到的开源免费还算能⽤的mysql客户端;最让⼈难受的是数据库列表和打开后的数据库属两个窗⼝。
:web形式的客户端⽐较受欢迎,但php写的也有就语⾔局限性。
1.2 库操作1.2.1 创建数据库-- 基础⽤法create database<database_name>;-- 指定utf8编码格式create database<database_name>character set utf8 collate utf8_general_ci;1.2.2 删除数据库drop database <database_name>;1.2.3 修改数据库应该来讲,修改数据库我们最希望的是修改数据库名,但mysql并没有提供直接的修改数据库名的操作(现在的修改本质上都是新建⼀个数据库然后把表导过去),只能改改默认编码之类的。
alter database<database_name>character set='utf8' ;1.2.4 查看现有数据库-- 查看所有数据库show databases;-- 查看当前使⽤的数据库select database();-- 查看数据库创建信息show create database database_name;1.2.5 使⽤数据库use <database_name>;1.3 表操作1.3.1 创建数据表-- 基础创建格式create table table_name(column_1_name_1 column_1_type, column_2_name_2 column_1_type)-- 创建⽰例;习惯在每个字段后回车换⾏create table if not exists test_table(id int unsigned auto_increment,username varchar(100) not null,password varchar(100) not null,primary key(id))default charset=utf8;1.3.2 删除数据表drop table<table_name>;1.3.3 修改数据表-- 重命令数据表rename table<old_table_name>to<new_table_name>;1.3.4 查看数据表show tables [ from database_name ];1.4 字段操作1.4.1 增加字段alter table<table_name>add[column]<column_name><column_type>[first | after ready_column];1.4.2 删除字段alter table<table_name>drop[column]<column_name>;1.4.3 修改字段-- 修改字段名alter table<table_name> rename column<old_column_name>to<new_column_name>;-- 修改字段类型alter table<table_name> modify [column]<column_name><new_column_type>[first | after ready_column];-- 同时修改字段名和字段类型alter table<table_name> change [column]<old_column_name><new_column_name><new_column_type>[first | after ready_column];1.4.4 查看字段show columns from<table_name>;desc<table_name>;1.5 记录操作1.5.1 插⼊记录insert[into]<table_name>[column_name_1,column_name_2]values (value_10,value_20) [,(value_11,value_21)];1.5.2 删除记录-- 删除指定记录delete from<table_name>[ where column_name = 'value' ];-- 删除所有记录-- delete是DDL(Data Manipulation Language),truncate是DML(Data Definition Language)。
以普通权限运行MySQL的操作说明
特别说明:
此模式为手动设置 mysql 的运行权限,操作步骤比较多,且比较复杂。
请先在做测试,然后再在服务器里进行操作。
后续我们会发布一个“mysql权限设置.exe ”的程序,帮助您“一键设置”Mysql的运行权限,敬请关注我们的官方网站
本文介绍的是 mysql 设置方法。
其他程序的降权运行,比如 ms sql 2000 和Serv-U 的方法,我们会在后面发布。
1、打开服务器里任务管理器,看看当前MySQL用户运行时权限
如果是 system 用户在运行 MySQL ,这个是非常危险的,一旦Mysql 出现漏洞,或被其他模式提权,直接就是 system 权限。
2、对 MySQL进行降权,用普通权限运行
假设
(1)mysql安装在 d:\mysql 目录
(2)运行时用户名为 mysqluser
3、建立一个新用户,假设为“mysqluser”
填写用户名,
选择“用户不能更改密码”和“密码永不过期”,其他2个√取消掉
找到刚才建立的用户,点鼠标右键属性,修改用户的属性
新建立用户后,会默认加到 users 组件,把这里组删除,不加入任何组。
把组清除,不加入任何组,点确定。
4、假设 MySQL数据库安装在 d:\mysql ,对此目录进行 NTFS 权限设置(1)Administrators 完全控制
(2)System 完全控制
(3)MysqlUser 完全控制
如果有其他权限,把其他权限都删除,操作步骤如下
修改 d:\mysql 的 NTFS 权限
此时权限可能是继续的,可能无法删除,点“高级”
取消权限继承
选择复制,从上级目录复制继承的权限
取消权限继承后,就可以删除权限了
删除后,只保留 administrators 和 system ,同时加入 mysqluser 用户
选择新加入的 mysqluser ,点完全控制
此时,此目录,只有3个用户可以完全控制 d:\mysql 目录,其他用户都删除了
5、对 D: 盘分配 mysqluser “读取权限”的权限,不是“读取数据”的权限
特别注意:
如果 mysql 安装在其他盘,则修改其他盘,这里假设 mysql 安装到 d:\mysql
点“高级”
我们这里只有 administrats和 system 2个用户。
这里可能有其他用户的权限,比如 ms sql 2000 的用户权限,Serv-U的用户权限等。
如果有,请保留,不要删除,否则其他程序可能无法运行。
点添加
这里选择
(1)“只有该文件及”
(2)“读取权限”的权限,不是“读取数据”的权限以上2个,一定不能选错。
设置完全后,相比设置前
d: 多了一个 mysqluser 的权限, mysqluser 只有特别权限里的“读取权限”的权限。
6、打开服务管理程序,修改 mysql 的服务。
如果mysql服务在运行,先停止mysql服务
修改运行用户,点“此账户”,填写 mysqluser 和密码,然后点确定
这里会自动为mysqluser加入启动服务程序的权限,可以不用手动加入了
然后启动mysql
这个时候,我们打开 Windows 任务管理器,就可以看到 mysql 的运行用户,已经变成我们新建立的 mysqluser 权限用户了。
这个权限非常低,即使 mysql出现漏洞,或出现新的攻击方法,攻击者最多也只能得到 mysqluser 的权限。
7、测试 mysql数据库运行情况
我们运行 Discuz 和 Phpwind 等 php论坛和 shopex 、以及其他一些CMS ,此方法降权运行mysql对论坛、CMS 等程序无任何影响,完全可以正常工作。
8、如果启用了 Windows 的磁盘配额限制,请取消限制 mysqluser 用户的限制,否则mysql如果获取更多硬盘空间,会导致 mysql无法启动,或崩溃。