首页
我能做的
老李是谁
推荐
老李网盘
2345导航
Search
1
x99鸡血BIOS教程(附工具和华南X99-QD3鸡血BIOS下载)
894 阅读
2
关于PUBG游戏提示未授权硬件的常见解决办法
732 阅读
3
主板BIOS开启CSM方法(华硕、微星、技嘉)
680 阅读
4
推荐一些E5装机玩游戏的CPU
571 阅读
5
【下载】猫影视PC版 V1.1.3
537 阅读
老李原创
技术笔记
系统固件包
经营心得
知识库
软件工具
无盘万能包
登录
Search
标签搜索
记录
无盘
问题解决
虚拟化
源码
心得
ARM
游戏
开源项目
硬件
linux
网管老李 VX:lizhi0710
累计撰写
173
篇文章
累计收到
0
条评论
首页
栏目
老李原创
技术笔记
系统固件包
经营心得
知识库
软件工具
无盘万能包
页面
我能做的
老李是谁
推荐
老李网盘
2345导航
搜索到
124
篇与
的结果
2024-05-07
盖伦下载器常见问题
官方使用说明:首次安装盖伦下载器:1、使用管理员运行GoodGame.exe2、在系统设置栏选择默认下载路径、下载限速和下载任务数量3、若需要下载后同步无盘数据库,请勾选"下载完成后同步至网维大师、云更新、易乐游覆盖安装盖伦下载器:1、保留原下载器目录中goodgamestore.dll,其余文件全部覆盖2、使用管理员运行GoodGame.exe3、点击修复数据库选项,在在系统设置栏选择默认下载路径、下载限速和下载任务数量4、若需要下载后同步无盘数据库,请勾选"下载完成后同步至网维大师、云更新、易乐游官方的相关问题说明:1、Q:盖伦下载器本地游戏列表是哪个文件?A:goodgamestore.dll,重新安装下载器前需要备份此文件 2、Q:steam游戏中战地、apex等EA游戏启动为什么还要安装橘子平台?A:战地、apex等游戏本身均为橘子平台游戏,steam启动后会调用橘子平台,只需启动steam前启动一次orgin就能完成平台关联。 3、Q:上述平台不能做自动关联吗?A:由于origin平台中也有此类重复游戏,此类游戏现在属于双平台,如果做了自动关联,会出现关联冲突,造成平台启动无法找到游戏的现象,同时育碧平台也有类似问题,并且测试时发现有一定概率引起无盘蓝屏,因此目前没有做自动关联。 4、Q:为什么游戏老是出现更新,但盖伦这里回复没有更新?A:这可能是steam账号中的创意工坊内容,此类内容盖伦暂时是不做更新的,涉及到的账号太多,内容混乱,同时过于占用盖伦更新服务器的空间和带宽,你能接受一个500G的方舟吗? 5、Q:下载器游戏下完后会自动重复下载?(1)下载的游戏不完整或者文件损坏了,下载器会间隔一段使时间校验一次游戏种子(索引GameIndex.txt),如果检验失败就会再 次请求下载更新; (2)先前更新的一个版本中盖伦优化了下载机制,然而并没有按照盖伦的想法实现,游戏种子(索引GameIndex.txt)版本没有迭代,导致下载器校验时误以为本地下载的游戏还是老版本,导致了重复下载的现象。可以检查下载器goodgame.dll的修改时间,最新版本位21年2月26日,非此版本的goodgame.dll均有此问题,盖伦后面做了一次下载器升级,如果你的下载器没有升级成功,请自行去官网下载最新版本。 6、Q:我的无盘游戏同步出现了问题,同步后的文件大小和源文件不一致?A:作为10多年网维从业者,盖伦对于主副服务器的方案存在质疑,此方案无论从投资成本还是维护难度上都有众多问题,并且出现类似软硬件问题不好排查,无论云更新、顺网、易乐游的无盘同步都存在一些风险; 此类同步问题,初步可以检查游戏种子(索引GameIndex.txt)的修改时间,如果修改时间不一致,那就是没有触发同步,可以手动触发同步,也可以将下载器的游戏本地修复一次,有些非常大的游戏,比如方舟,那么你的文件计算时间会非常长,同时会长时间占用IO。如果同步还是出现问题,需要联系无盘厂商排查解决。 7、Q:支持多平台自动导入?A:由于盖伦一个人技术有限,此类功能盖伦需要慢慢开发,如果支持了平台自动导入会第一时间更新迭代。 未尽事项、游戏更新、报错咨询可以联系盖伦邮箱:{callout color="#f0ad4e"}Galen201704@hotmail.com{/callout}
2024年05月07日
223 阅读
0 评论
0 点赞
2024-05-07
浪潮服务器调节风扇转速方法
最近买了给两浪潮服务器,在后台只能最低20%转速,找了很多办法才解决下面是教程:使用火狐浏览器打开设置的BMC网址192.168..,点击风扇转速控制,按F12打开开发者模式,依次点击网络-XHR,点击FAN_2的低速20%,下方中间位置出现5数字处,点击右键-编辑并重发,在左侧拖到最下面,把20修改成10,点击发送,风扇转速明显下降,依次设置其它风扇速度
2024年05月07日
23 阅读
0 评论
0 点赞
2024-05-07
MySQL数据库常用命令
可以使用 “Ctel+F”快速定位MySQL数据库常用命令创建数据库:create database 数据库名 [charset] [字符编码] [collate] [校验规则];查看创建结果:show create database 数据库名;查看所有数据库:show databases;查看当前使用的数据库:select database();命令行方式连接数据库:mysql -u 数据库用户名 -p 数据库密码打开指定的数据库:use 数据库名;命令行方式连接数据库:mysql -u数据库用户名 -p数据库密码命令行方式备份数据库:mysqldump -u 数据库用户名 -p 目标数据库名 > 备份文件名.sql;命令行方式恢复数据库::mysql -u 数据库用户名 -p 目标数据库名 < 备份文件名.sql;修改数据库:alter database [数据库名] [default] character set <字符集名> [default] collate <校对规则名>;SQL语句方式删除数据库:drop database 数据库名;在命令提示窗口中删除数据库:mysqladmin -u root -p drop 数据库名设置主键:create table 数据表名(主键字段名 数据类型 unsigned PRIMARY KEY auto_increment, ...); create table 数据表名(字段名 数据类型, ...,primary key (主键字段名)); 添加主键: alter table 数据表名 add primary key(主键字段名);删除主键:alter table 数据表名 drop primary key;在创建数据库时设置外键:create table 数据表名(constraint 外键名 foreign key(自己的字段) references 主表(主表字段));指定外键:alter table 表名 add constraint 外键名 foreign key(自己的字段) references 主表(主表字段);删除外键:alter table 表名 drop foreign key 外键名称;创建表:create table 表名(字段名 类型 约束, 字段名 类型 约束 ...) 引擎;查看创建的表:show create table 表名;创表语句:判断表是否存在,存在时先删除再创建DROP TABLE IF EXISTS 表名;CREATE TABLE 表名(字段名1 类型 约束, 字段名2 类型 约束, ...) ENGINE=INNODB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;CREATE TABLE 表名(字段名1 类型 约束, 字段名2 类型 约束, ...) ENGINE=INNODB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;unsigned:无符号(正负符号,无符号即为正);auto_increment:自增长;设置自增长起始值:auto_increment=起始值查看所有表:show tables;查看表信息:show create table 表名;查看表结构(字段):desc 表名;修改数据库字符集:alter database 数据库名 character set 字符集名 collate 校对规则;修改表的字符集:alter table 表名 convert to character set 字符集名 collate 校对规则;修改表的存储引擎: alter table 表名 engine=引擎名;复制表:复制表结构:create table 新表名 like 旧表名;同时复制结构和数据:create table 新表名 as (select * from 旧表名);*前者会复制旧表完整结构,包括约束条件,但不复制数据;后者只复制基本结构和数据,但不复制约束条件。删除数据表格式一:drop table 表名;删除数据表格式二:drop table if exists 表名;修改表名:alter table 原表名 rename 新表名;修改字段数据类型:alter table 表名 modify 字段名 数据类型;修改ENUM字段: alter table 表名 modify 字段名 enum("值1","值2",...,"值n");修改SET字段: alter table 表名 modify 字段名 set("值1","值2",...,"值n");修改表的字段为唯一性约束:alter table 表名 modify 字段名 数据类型 unique; 或者:alter table 表名 change 原字段名 新字段名 数据类型 unique; 删除表的字段唯一性约束:alter table 表名 drop index 唯一性字段索引; 或者:drop index 唯一性字段索引 on 表名; 修改字段顺序:alter table 表名 modify 字段名 数据类型 first; alter table 表名 modify 字段名1 数据类型 after 字段名2; 修改字段名称:alter table 表名 change 原字段名 新字段名 数据类型;添加字段:alter table 表名 add 字段名 数据类型;在表的第一列添加字段:alter table 表名 add 字段名 数据类型 first;在表的指定列之后添加字段:alter table 表名 add 字段名 数据类型 after 字段名;删除字段:alter table 表名 drop 字段名;添加数据格式一:所有字段设置值,值的顺序与表中字段的顺序对应说明:主键列是自动增长,插入时需要占位,通常使用0或者default或者null来占位,后以实际数据为准。语法格式:insert into 表名 values(...)添加数据格式二:部分字段设置值,值的顺序与给出的字段顺序对应语法格式:insert into 表名(字段1, ...) values(值1, ...)添加多行数据:写一条 insert 语句,设置多条数据,数据之间用英文逗号隔开格式一:insert into 表名 values(...), (...) ...;格式二:insert into 表名(列1, ...) values(值1, ...), (值2, ...) ...;替换已存在主键值的记录数据:replace into 表名(列1, ...) values(值1, ...), (值2, ...) ...;*如果表中已经存在主键值,需要插入一个同键值数据,因为违反唯一性规则是不允许的,但是可能用另一记录替换这一记录的。修改数据:update 表名 set 列1=值1, 列2=值2 ... where 条件;删除数据格式一:delete from 表名 where 条件; * 注意:where不能省略,否则会删除全部数据删除数据格式二:truncate table 表名; (删除表的所有数据,保留表结构)删除数据格式三:drop table 表名; (删除表,所有数据和表结构都删掉)查询所有字段:select * from 表名;查询部分字段:select 字段1, 字段2, ... from 表名;查询时为了书写简单,给起别名:select 别名.字段1, 别名.字段2, ... from 表名 [as] 别名;查询结果为了显示为与字段不同的名称,给字段取别名:select 字段1 as 别名1, 字段2 as 别名2, ... from 表名;查询去重,只取唯一值:select distinct 字段1, ... from 表名;复杂查询:定义:在基础查询基础上,根据需求描述关系进行查询;实际应用中往往是多种复合查询的组合使用分类:条件查询、聚合函数、排序查询、分组查询、分页查询、连接查询、自关联查询、子查询等条件查询:select 字段1, 字段2 ... from 表名 where 条件;说明:where后面支持多种运算符,进行条件的处理比较运算符:=、>、<、>=、<=、!=或<>逻辑运算符:and(与)、or(或)、not(非)模糊查询:like "%、_等通配符组合" (%表示任意多个任意字符,_表示一个任意字符)(举如:name like '孙%'; name like '孙_';)范围查询:in:表示在一个非连续的范围内 格式:in(..., ...) 例如:where hometown in('北京', '上海', '深圳');between ... and ... :表示在一个连续的范围内 例如:age between 18 and 20;空判断:判空:is null 例如:card is null;判非空:is not null 例如:card is not null;注意:在MySQL中,只有现实为NULL的才为空! 空格/制表符/换行符等是空白符号,用' '表示; NULL与' '是不同的。 聚合函数:常用聚合函数:count()、max()、min()、sum()、avg()*聚合函数不能在where子句中使用。count():查询总记录数 格式:count(字段名),count(* )表示计算总行数注意:统计数据总数,建议使用*,如果使用某一特定字段,可能会造成数据总数错误!max():查询最大值 格式:max(字段名)min():查询最小值 格式:min(字段名)sum():求和 格式:sum(字段名)avg():求平均值 格式:avg(字段名)排序查询:select * from 表名 order by 列1 asc/desc, 列2 asc/desc, ...;注意:默认升序,asc可省略;desc降序。分组查询: select 字段1, 字段2, 聚合函数 ... from 表名 group by 字段1, 字段2...例1:查询各种性别的人数:select sex, count(* ) from students group by sex;例2:查询每个班级中各种性别的人数:select class, sex, count(* ) from students group by class, sex;分组后的数据筛选:select 字段1, 字段2, 聚合 ... from 表名 group by 字段1, 字段2, 字段3 ... having 字段1, ... 聚合函数 ...注意:1)group by后面增加过滤条件时,需要使用having关键字;group by和having一般情况下需要配合使用2)group by后边不推荐使用where进行条件过滤,推荐使用having进行条件过滤3)having关键字后面可以使用的内容与where完全一致(比较运算符/逻辑运算符/模糊查询/判断空)4)having关键字后面允许使用聚合函数,where后面不允许使用聚合函数举例:select sex, count(* ) from students group by sex having sex='男'; select sex, count(* ) from students group by sex having count(*)>=7; where 与 having 的区别:1)where是对from后面指定的表进行数据筛选,属于对原始数据的筛选;2)having是对group by的结果进行筛选;3)having后面的条件可以用聚合函数where后面不可以。例:查询班级平均年龄大于22岁的班级有哪些:select class from students group by class having avg(age)>22;分页查询:select * from 表名 limit start, count;分行格式(查 m ~ n 行的数据):select * from 表名 limit m-1, n-m+1;注意:1)limit start, count;start:起始行号;count:显示数据行数(增加的行数)。2)计算机的计数是从0开始,因此start默认的第一条数据应该为0。3)start索引从0开始,如果默认从第一条数据开始获取,则0可以省略即显示前5条记录有以下两种写法:select from 表名 limit 0, 5; 或者select from 表名 limit 5;查询分页后某页的数据:select from 表名 limit (n-1) m, m;说明:m为每页显示数据条数,n为需显示的页码例每页显示10条数据,需要查询第6页的数据select * from 表名 limit 50,10;查询语句子句书写顺序:select-from-where-group by-having-order by-limit连接查询:内连接:inner join ... on ...(旧式写法:select * from 表1, 表2 where 表1.列=表2.列;)左连接:left join ... on ...右连接:right join ... on ...语法格式:select * from 表1 inner join 表2 on 表1.列=表2.列; select * from 表1 left join 表2 on 表1.列=表2.列; select * from 表1 right join 表2 on 表1.列=表2.列; 自关联查询:自关联:将同一表通过起别名的方式,自己和自己关联。是给表起别名和连接查询的联合使用。语法格式:select * from 表 as 表1 inner join 表 as 表2 on 表1.列=表2.列; select * from 表 as 表1 left join 表 as 表2 on 表1.列=表2.列; select * from 表 as 表1 right join 表 as 表2 on 表1.列=表2.列; 组合查询:MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。组合查询两种基本情况:在单个查询中从不同的表返回类似结构的数据;对单个表执行多个查询,按单个查询返回数据。创建和使用组合查询:关键字:UNION创建UNION:SELECT语句 UNION SELECT语句 UNION ...UNION规则:1)UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。2)UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。3)列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。包含或取消重复的行:UNION的默认从查询结果集中自动去除了重复的行(即 它与单条SELECT语句中使用多个WHERE子句条件一样)。MySQL使用UNION ALL来显示全部行,包括重复的行。UNION ALL为UNION的一种形式,它完成WHERE子句完成不了的工作。如果确实需要每个条件的匹配行全部出现(包括重复行),则必须使用UNION ALL而不是WHERE。举例:SELECT vend_id, prod_id, prod_price FROM products WHERE prod_price <= 5 UNION ALL SELECT vend_id, prod_id, prode_price FROM products WHERE vend_id IN (1001, 1002);对组合查询结果排序:在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。举例:举例:SELECT vend_id, prod_id, prod_priceFROM productsWHERE prod_price <= 5UNIONSELECT vend_id, prod_id, prode_priceFROM productsWHERE vend_id IN (1001, 1002)ORDER BY vend_id, prod_price;UNION 和 多条WHERE子句:使用UNION可极大地简化复杂的WHERE子句,简化从多个表中检索数据的工作。对于更复杂的过滤条件,或者从多个表(而不是单个表)中检索数据的情形,使用UNION可能会使处理更简单。使用UNION的组合查询还可以应用不同的表。举例:举例:SELECT vend_id, prod_id, prod_priceFROM productsWHERE prod_price <= 5UNIONSELECT vend_id, prod_id, prode_price FROM productsWHERE vend_id IN (1001, 1002);SELECT vend_id, prod_id, prod_priceFROM productsWHERE prod_price <= 5OR vend_id IN (1001, 1002);子查询:定义:在一个查询套入另一个查询的过程(充当条件或者数据源)说明:查询语句中包含另一个查询语句,分为主查询和子查询,充当子查询的语句需要使用括号括起来(运算优先级括号最高!)主查询:外层的?select?语句称之为主查询语句子查询:在一个?select?语句中,嵌入了另外一个?select?语句,那么嵌入的?select?语句称之为子查询语句主查询和子查询的关系:1)子查询是嵌入到主查询中的2)子查询是可以独立使用的语句,是一条完整的?select?语句3)子查询是辅助主查询的,要么充当条件,要么充当数据源子查询语句充当条件:需求:查询价格高于平均价的商品信息语句:select * from goodswhere price > (select avg(price) from goods);子查询语句充当数据源:需求:?查询所有来自并夕夕的商品信息,包含商品分类语句:SELECT * FROM (SELECT * FROM goods go LEFT JOIN category ca ON go.typeId=ca.typeId) new WHERE new.company='并夕夕';问题:连接查询的结果中,表和表之间的字段名不能出现重复,否则无法直接使用解决:将重复字段使用别名加以区分(表.*?:表示当前表的所有字段):举例:SELECT * FROM(SELECT go.* , ca.id cid, ca.typeId ctid, ca.cateName FROM goods go LEFT JOIN category ca ON go.typeId=ca.typeId) new WHERE new.company='并夕夕';三、数据库进阶1、索引定义:快速查找特定值的记录作用:提高查询排序的速度,即 可以大幅度提高查询语句的执行效率个数:一个表主键只能有一个设置索引:语法格式:CREATE INDEX 索引名称 ON 表名(字段名称(长度));注意:1)表已存在的时候创建索引2)如果大量增加索引设置,会严重影响除数据查询操作以外的其他操作(增/删/改)的操作效率,不方便过多添加。举例:CREATE INDEX name_index ON create_index(name(10));删除索引:语法格式:DROP INDEX 索引名称 ON 表名;举例:DROP INDEX name_index ON create_index;扩展:验证索引效果案例实现步骤1)开启运行时间监测:set profiling=1;2)查找第一万条数据10000:select * from test_index where num='10000';3)查看执行时间:show profiles;4)为表 test_index 的 num 列创建索引:create index test_index on test_index(num);5)执行查询语句:select * from test_index where num='10000';6)再次查看执行时间:show profiles;2、视图定义:视图是虚拟的表。其包含的不是数据而是根据需要检索数据的查询。视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。注意:1)MySQL 5添加了对视图的支持。本文内容适用于MySQL 5及以后的版本。2)视图仅仅是用来查看存储在别处的数据的一种设施。其本身不包含任何列和数据,它包含的是一个SQL查询,其返回的数据是从其他表中检索出来的。另外,在添加或更改这些表中的数据时,视图将返回改变过的数据。3)视图的使用与表基本相同,如:可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据,但添加和更新数据会存在某些限制。4)性能问题:在使用视图时,都必须处理查询执行时所需的任一个检索。如果要用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会发现性能下降得很厉害。因此,在部署使用了大量视图的应用前,应该进行测试。作用:1)重用SQL语句。2)简化复杂的SQL操作。视图可以方便地被重用,而不必知道其查询细节。3)保护数据。视图使用的是表的组成部分而不是整个表,因此可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。4)更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。创建视图:关键字:CREATE VIEW语法格式:CREATE VIEW 视图名 AS SELECT语句;注意:1)创建视图必须具有足够的访问权限2)创建的视图数目没有限制3)视图名字必须唯一命名,不能与别的视图或表有相同的名字4)视图可以嵌套使用,即可以利用从其他视图中检索数据的查询来构造一个视图5)视图可以和表一起使用。如,编写一条联结表和视图的SELECT语句6)视图中的ORDER BY和其检索数据的SELECT语句中同时含有ORDER BY时,那么该视图中的ORDER BY将被覆盖。7)视图不能索引,也不能有关联的触发器或默认值。查看视图:关键字:SHOW语法格式:SHOW CREATE VIEW 视图名;修改视图:方法一:先用DROP再用CREATE。DROP CREATE VIEW 视图名;CREATE VIEW 视图名 AS SELECT语句;方法二:CREATE OR REPLACE VIEW 视图名 AS SELECT语句;如果要更新的视图不存在,则会创建一个视图;如果要更新的视图存在,则会替换原有视图。更新视图“数据”:更新视图“数据”的本质:视图本身没有数据,所以对视图增加或删除行,实际上是对其基表增加或删除行。更新视图的限制:通常视图是可更新的(即,视图可以使用INSERT、UPDATE和DELETE),但并非所有视图都是可更新的,如果MySQL不能正确地确定被更新的基数据,则不允许更新(包括插入和删除)。视图定义中有分组(使用GROUP BY和HAVING)、联结、子查询、?并(and)、?聚集函数(Min()、Count()、Sum()等)、DISTINCT、?导出(计算)列等的操作时,视图不能进行更新。更新视图虽然有这么多限制,但请记住视图主要还是用于数据查询,如果要更新数据,可以到基表中进行更新。删除视图:关键字:DROP语法格式:DROP CREATE VIEW 视图名;应用场景:1)利用视图简化复杂的联结:视图的最常见的应用之一是隐藏复杂的SQL,这通常都会涉及联结。举例:编写基础SQL,创建视图:CREATE VIEW productcustomers AS SELECT cust_name, cust_contact, prod_idFROM customers, orders, orderitemsWHERE customers.cust_id = orders.cust_idAND orderitems.order_num = orders.order_num;使用视图查询订购了产品TNT2的客户:SELECT * FROM productcustomersWHERE prod_id = 'TNT2';2)用视图重新格式化检索出的数据:视图的另一常见用途是重新格式化检索出的数据。举例:编写基础SQL,创建视图:CREATE VIEW vendorlocationsAS SELECT Concat(RTrim(vend_name), '(', RTrim(vend_country), ')' AS vend_title FROM venders ORDER BY vend_name; 使用视图查询出以创建所有邮件标签的数据(基础SQL:在单个组合计算列中返回供应商名和位置):SELECT * FROM vendorlocations;3)用视图过滤不想要的数据:视图对于应用普通的WHERE子句也很有用。举例:编写基础SQL,创建视图:CREATE VIEW customeremaillistAS SELECT cust_id,cust_name, cust_email FROM customersWHERE cust_email IS NOT NULL;使用视图,查询出有邮件地址的客户数据:SELECT * FROM customeremaillist;4)使用视图与计算字段:视图对于简化计算字段的使用特别有用。举例:编写基础SQL,创建视图:CREATE VIEW orderitemsexpanded AS SELECT order_num, prod_id, quantity, item_price, quantity* item_price AS expanded_price FROM orderitems; 使用视图,查询订单20005的详细内容包括每种物品的总价格的数据:SELECT * FROM orderitemsexpandedWHERE order_num = 20005;注意:?视图中的WHERE子句与基础SQL语句中的WHERE子句同时出现时,二者将自动组合。3、存储过程定义:简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。优点简单:把处理封装在容易使用的单元中,简化复杂的操作,简化对变动的管理。如果表名、列名或业务逻辑(或别的内容)有变化,只需要更改存储过程的代码。安全:由于不要求反复建立一系列处理步骤,且所有开发人员和应用程序都是用同一存储过程,这保证了数据的完整性和一致性。另外,通过存储过程限制对基础数据的访问减少了数据讹误的机会,保证了数据安全性。高性能:提高性能。因为使用存储过程比使用单独的SQL语句要快。存储过程可以使用只能用在单个请求中的MySQL元素和特性来编写功能更强更灵活的代码。缺点存储过程的编写比基本SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。创建存储过程需要数据库的安全访问权限。许多数据库管理员限制存储过程的创建权限,允许用户使用存储过程,但不允许他们创建存储过程。创建存储过程关键字:CREATE、PROCEDURE语法格式:CREATE PROCEDURE 存储过程名(参数1, 参数2, ... ) COMMENT '描述文字'BEGINSELECT语句; END;分隔符:?MySQL命令行客户机的分隔符为:';',而MySQL语句分隔符也是:';',所以如果使用MySQL命令行实用程序创建或执行存储过程,则需要临时更改MySQL命令行实用程序的语句分隔符,来保证存储过程中的SQL语句作为其成分而且不出现句法错误。具体步骤如下:1)临时修改命令行实用程序的语句分隔符:DELIMITER //2)同时,标志存储过程结束的END定义为END //而不是END ;3)存储过程执行完成后,恢复命令行实用程序的语句分隔符:DELIMITER ;?。注意:除\符号外,任何字符都可以用作语句分隔符。完整代码:DELIMITER //CREATE PROCEDURE 存储过程名(参数1, 参数2, ... ) COMMENT '描述文字'BEGINSELECT语句; END //DELIMITER ;举例:创建存储过程:DELIMITER //CREATE PROCEDURE productpricing()BEGINSELECT Avg(prod_price) AS priceaverage FROM products; END //DELIMITER ;执行存储过程:CALL productpricing();参数类型:每个参数必须具有指定的类型MySQL支持的参数类型:IN(传递给存储过程)OUT(从存储过程传出,关键字OUT指出相应的参数用来从存储过程传出一个值(返回给调用者)INOUT(对存储过程传入和传出)参数定义格式:基本格式:IN/OUT/INOUT 变量名 变量的数据类型变量(variable)内存中一个特定的位置,用来临时存储数据。所有MySQL变量都必须以@开始。参数变量也需要指定其数据类型。参数变量的数据类型:存储过程的参数允许的数据类型与表中使用的数据类型相同。常用数据类型:INT、DECIMAL、DOUBLE、FLOAT、BOOLEAN、CHAR、VARCHAR、TEXT、DATE、TIME、DATETIME、YEAR多个参数用英文逗号,分隔,最后一个参数后不需要逗号参数使用:?存储过程的代码位于BEGIN和END语句内,它们是一系列SELECT语句,用来检索值,一般存储过程并不显示结果,而是把结果保存到相应的变量(通过指定INTO关键字),然后再通过SELECT @参数变量名;?来显示结果数据或者将其用于其他处理程序中。执行有参数的存储过程:在创建存储过程时指定了n个参数,则在调用此存储过程时就必须传递n个参数,不能多也不能少。在执行时并不会显示任何数据。它通过SELECT @参数变量名;?来显示变量的值或者用在其他处理程序中。例1:'''创建存储过程:此存储过程接受3个参数:pl存储产品最低价格,ph存储产品最高价格,pa存储产品平均价格。每个参数必须具有指定的类型,这里使用十进制值。关键字OUT指出相应的参数用来从存储过程传出一个值(返回给调用者)。'''CREATE PROCEDURE productpricing(OUT pl DECIMAL(8, 2), OUT ph DECIMAL(8, 2), OUT pa DECIMAL(8, 2))BEGINSELECT Min(prod_price) INTO pl FROM products; SELECT Max(prod_price) INTO ph FROM products; SELECT Avg(prod_price) INTO pa FROM products; END;执行存储过程(这条语句并不显示任何数据):CALL productpricing(@pricelow, @pricehigh, @priceaverage);显示检索出的产品平均价:*SELECT @priceaverage;显示检索出的产品最低价、最高价和平均价:SELECT @pricelow, @pricehigh, @priceaverage;例2:'''创建存储过程:此存储过程使用IN和OUT参数。ordertotal接受订单号并返回该订单的合计。onumber定义为IN,因为订单号被传入存储过程。ototal定义为OUT,因为要从存储过程返回合计。SELECT语句使用这两个参数,WHERE子句使用onumber选择正确的行,INTO使用ototal存储计算出来的合计:'''CREATE PROCEDURE ordertotal(IN onumber INT, OUT ototal DECIMAL(8, 2))BEGINSELECT Sum(item_price* quantity) FROM orderitems WHERE order_num = onumber INTO ototal; END;执行存储过程(调用这个新存储过程):必须给ordertotal传递两个参数;第一个参数为订单号,第二个参数为包含计算出来的合计的变量名:CALL ordertotal(20005, @total);显示此合计(@total已由ordertotal的CALL语句填写,SELECT显示它包含的值):SELECT @total;显示另一个订单的合计:再次调用存储过程,然后重新显示变量:CALL ordertotal(20009, @total);SELECT @total;执行存储过程:关键字:CALL语法格式:CALL 存储过程名(@参数1, @参数2, ... )注意:因为存储过程实际上是一种函数,所以存储过程名后需要有()符号(即使不传递参数也需要)。举例:创建ordertotal存储过程:CREATE PROCEDURE ordertotal()BEGINSELECT语句; END;执行ordertotal存储过程:CALL ordertotal();删除存储过程:关键字:DROP、PROCEDURE语法格式一:DROP PROCEDURE 存储过程名;语法格式二:DROP PROCEDURE IF EXISTS 存储过程名;仅当存在时删除,当过程存在则删除,如果过程不存在也不产生错误。举例:创建ordertotal存储过程:CREATE PROCEDURE ordertotal()BEGINSELECT语句; END;删除ordertotal存储过程:DROP PROCEDURE ordertotal;DROP PROCEDURE IF EXISTS ordertotal;检查存储过程:关键字:SHOW语法格式一:SHOW CREATE PROCEDURE 存储过程名;显示用来创建一个存储过程的CREATE语句语法格式二:SHOW CREATE PROCEDURE STATUS;显示包括何时、由谁创建等详细信息的存储过程列表语法格式三:SHOW CREATE PROCEDURE STATUS LIKE '存储过程名';显示某个存储过程的详细信息举例:创建ordertotal存储过程:CREATE PROCEDURE ordertotal()BEGINSELECT语句; END;检查存储过程:SHOW CREATE PROCEDURE ordertotal;SHOW CREATE PROCEDURE STATUS LIKE 'ordertotal';建立智能存储过程:?存储过程内包含业务规则和智能处理应用场景:你需要获得与以前一样的订单合计,但需要对合计增加营业税,不过只针对某些顾客(或许是你所在州中那些顾客)。那么,你需要做下面几件事情:获得合计(与以前一样);把营业税有条件地添加到合计;返回合计(带或不带税)。存储过程的完整工作:创建存储过程:Name: ordertotalParameters: onumber = order number taxable=0 if not taxable, 1 if taxable ototal=order total variable CREATE PROCEDURE ordertotal(IN onumber INT, IN taxable BOOLEAN, OUT ototal DECIMAL(8,2)) COMMENT 'Obtain order total, optionally adding tax'BEGIN# Declare variable for total DECLARE total DECIMAL(8,2); # Declare tax percentage DECLARE taxrate INT DEFULT 6; # Get the order total SELECT Sum(item_price* quantity) FROM orderitems WHERE order_num = onumber INTO total; # Is this taxable? IF taxable THEN # Yes, so add taxrate to the total SELECT total+(total/100* taxrate) INTO total;` END IF; # And finally, save to out variable SELECT total INTO ototal; END;执行次存储过程,并显示数据结果:CALL ordertotal(20005, 0, @total);SELECT @total;解析:1)首先,增加了注释(前面放置--)。在存储过程复杂性增加时,这样做特别重要。2)添加了另外一个参数taxable,它是一个布尔值(如果要增加税则为真,否则为假)。3)在存储过程体中,用DECLARE语句定义了两个局部变量。DECLARE要求指定变量名和数据类型,它也支持可选的默认值(这个例子中的taxrate的默认被设置为6%)。4)SELECT语句已经改变,因此其结果存储到total(局部变量)而不是ototal。5)IF语句检查taxable是否为真,如果为真,则用另一SELECT语句增加营业税到局部变量total。6)最后,用另一SELECT语句将total(它增加或许不增加营业税)保存到ototal。7)COMMENT关键字:本例子中的存储过程在CREATE PROCEDURE语句中包含了一个COMMENT值。它不是必需的,但如果给出,将在SHOW PROCEDURE STATUS的结果中显示。举例:使用SQL快速插入100000条数据使用DELIMITER关键字临时声明修改SQL语句的结束符为//DELIMITER //创建存储过程create procedure test()Begin声明一个默认值为0的局部变量ideclare i int default 0; # 开始循环 while i<100000 do # books是表名, name是字段名 test是字段值 insert into books(name)value("test"); # 使用set为参数赋值 set i=i+1; end while; end //将结束符重新定义回结束符为";"DELIMITER ;调用函数call test();4、游标定义:游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。注意:MySQL游标只能用于存储过程(和函数)。存储过程处理完成后,游标就消失(因为它局限于存储过程)。创建游标:关键字:DECLARE语法格式:DECLARE 游标名 CURSOR FOR SELECT语句;DECLARE语句的次序:DECLARE语句的发布存在特定的次序。用DECLARE语句定义的局部变量必须在定义任意游标或句柄之前定义,而句柄必须在游标之后定义。不遵守此顺序将产生错误消息。即:DECLARE 局部变量,DECLARE 游标,DECLARE 句柄举例:CREATE PROCEDURE processorders()BEGINDECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; END;打开/关闭游标:打开游标:OPEN 游标名;关闭游标:CLOSE 游标名;隐含关闭:MySQL将会在到达END语句时自动关闭它。注意:在处理OPEN语句时执行查询,存储检索出的数据以供浏览和滚动。CLOSE释放游标使用的所有内部内存和资源,因此在每个游标不再需要时都应该关闭。在一个游标关闭后,再次使用游标需要再用OPEN语句打开它,但使用声明过的游标不需要再次声明。举例:CREATE PROCEDURE processorders()BEGIN# Declare the cursor DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; # Open the cursor OPEN ordernumbers; # Close the cursor CLOSE ordernumbers; END;解析:?这个存储过程只是声明、打开和关闭一个游标,并未对检索出的数据做其他操作。使用游标数据:关键字:FETCHFETCH指定检索什么数据(所需的列),检索出来的数据存储在什么地方。它还向前移动游标中的内部行指针,使下一条FETCH语句检索下一行(不重复读取同一行)。步骤:1)在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。在声明游标后,可根据需要频繁地打开和关闭游标。2)一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。在游标打开后,可根据需要频繁地执行取操作。3)对于填有数据的游标,根据需要取出(检索)各行。4)在结束游标使用时,必须关闭游标。例1:从游标中检索单个行(第一行)CREATE PROCEDURE processorders()BEGIN# Declare local variables DECLARE o INT; # Declare the cursor DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; # Open the cursor OPEN ordernumbers; # Get order number FETCH ordernumbers INTO o; # Close the cursor CLOSE ordernumbers; END;解析:FETCH用来检索当前行的order_num列(将自动从第一行开始)到一个名为o的局部声明的变量中。对检索出的数据不做任何处理。例2:循环检索数据,从第一行到最后一行CREATE PROCEDURE processorders()BEGIN# Declare local variables DECLARE done BOOLEAN DEFAULT 0; DECLARE o INT; # Declare the cursor DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; # Declare continue handler DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; # Open the cursor OPEN ordernumbers; # Loop through all rows REPEAT # Get order number FETCH ordernumbers INTO o; # End of loop UNTIL done END REPEAT; # Get order number FETCH ordernumbers INTO o; # Close the cursor CLOSE ordernumbers; END;解析:1)用一个DEFAULT 0(假,不结束)定义变量done(DECLARE done BOOLEAN DEFAULT 0;)。2)定义一个CONTINUE HANDLER(DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;),它是在条件出现时被执行的代码。这里,它指出当SQLSTATE '02000’出现时,SET done=1。SQLSTATE'02000’是一个未找到条件,当REPEAT由于没有更多的行供循环而不能继续时,出现这个条件。出现这个未找到的条件后就将done设置为真。3)在REPEAT内,反复执行FETCH检索当前order_num到声明的名为o的变量中,直到done为真(由UNTIL done END REPEAR;?规定)。4)如果调用这个存储过程,它将定义几个变量和一个CONTINUE HANDLER,定义并打开一个游标,重复读取所有行,然后关闭游标。如果一切正常,你可以在循环内放入任意需要的处理(在FETCH语句之后,循环结束之前)。5)MySQL还支持循环语句,它可用来重复执行代码,直到使用LEAVE语句手动退出为止。通常REPEAT语句的语法使它更适合于对游标进行循环。例3:对循环取出的数据进行某种实际的处理CREATE PROCEDURE processorders()BEGIN# Declare local variables DECLARE done BOOLEAN DEFAULT 0; DECLARE o INT; DECLARE t DECIMAL(8,2); # Declare the cursor DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; # Declare continue handler DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; # Create a table to store the results CREATE TABLE IF NOT EXISTS ordertotals( order_num INT, total DECIMAL(8, 2)); # Open the cursor OPEN ordernumbers; # Loop through all rows REPEAT # Get order number FETCH ordernumbers INTO o; # Get the total for this order CALL ordertotal(o, 1, t); # Insert order and total into ordertotals INSERT INTO ordertotals(order_num, total) VALUES(o, t); # End of loop UNTIL done END REPEAT; # Close the cursor CLOSE ordernumbers; END;解析:1)增加了另一个名为t的变量(存储每个订单的合计)2)此存储过程还在运行中创建了一个新表(如果它不存在的话),名为ordertotals。这个表将保存存储过程生成的结果。3)FETCH像以前一样取每个order_num,然后用CALL执行另一个存储过程ordertotal(在介绍存储过程的内容中创建)来计算每个订单的带税的合计(结果存储到t)。4)最后,用INSERT保存每个订单的订单号和合计。5)此存储过程不返回数据,但它能够创建和填充另一个表,可以用一条简单的SELECT语句查看该表:SELECT * FROM ordertotals;6)这是一个集存储过程、游标、逐行处理以及存储过程调用其他存储过程的一个完整的工作样例。5、触发器定义:触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):DELETE、INSERT、UPDATE;其他MySQL语句不支持触发器。创建触发器:基本信息:唯一的触发器名。为了保持每个数据库的触发器名唯一,在MySQL 5中,最好是在数据库范围内使用唯一的触发器名。虽然触发器名在每个数据库中可以不唯一但最好命名时保证每个数据库范围内的触发器名唯一。触发器关联的表;触发器应该响应的活动(DELETE、INSERT或UPDATE);触发器何时执行(处理之前或之后)。关键字:CREATE、TRIGGER语法格式:CREATE TRIGGER 触发器名 BEFORE/AFTER DELETE/INSERT/UPDATE ON 表名 FOR EACH ROW ... ;INSERT触发器:?INSERT触发器在INSERT语句执行之前或之后执行。注意:在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行;在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值);对于AUTO_INCREMENT列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值。举例:CREATE TRIGGER neworder AFTER INSERT ON orders FOR EACH ROW SELECT NEW.order_num;解析:?此代码创建一个名为neworder的触发器,它按照AFTER INSERT ON orders执行。此触发器必须按照AFTER INSERT执行,因为在BEFORE INSERT语句执行之前,新order_num还没有生成。对于orders的每次插入使用这个触发器将总是返回新的订单号。在插入一个新订单到orders表时,MySQL生成一个新订单号并保存到order_num中。触发器从NEW.order_num取得这个值并返回它。测试此触发器:INSERT INTO orders(order_date, cust_id) VALUES(Now(), 10001);解析:orders包含3个列。order_date和cust_id必须给出,order_num由MySQL自动生成,而现在order_num还自动被返回。注意:BEFORE或AFTER,BEFORE多用于数据验证和净化(目的是保证插入表中的数据确实是需要的数据)。DELETE触发器:?DELETE触发器在DELETE语句执行之前或之后执行。在DELETE触发器代码内,你可以引用一个名为OLD的虚拟表,访问被删除的行;OLD中的值全都是只读的,不能更新。举例:CREATE TRIGGER deleteorderBEFORE DELETE ON orders FOR EACH RAWBEGININSERT INTO archive_orders( order_num, order_date, cust_id) VALUES( OLD.order_num, OLD.order_date, OLD.cust_id); END;解析:在任意订单被删除前将执行此触发器。它使用一条INSERT语句将OLD中的值(要被删除的订单)保存到一个名为archive_orders的存档表中(为实际使用这个例子,你需要用与orders相同的列创建一个名为archive_orders的表)。使用BEFORE DELETE触发器的优点(相对于AFTER DELETE触发器来说)为,如果由于某种原因,订单不能存档,DELETE本身将被放弃。多语句触发器:触发器deleteorder使用BEGIN和END语句标记触发器体。使用BEGIN END块的好处是触发器能容纳多条SQL语句(在BEGIN END块中一条挨着一条)。UPDATE触发器:?UPDATE触发器在UPDATE语句执行之前或之后执行。在UPDATE触发器代码中,你可以引用一个名为OLD的虚拟表访问以前(UPDATE语句前)的值,引用一个名为NEW的虚拟表访问新更新的值;在BEFORE UPDATE触发器中,NEW中的值可能也被更新(允许更改将要用于UPDATE语句中的值);OLD中的值全都是只读的,不能更新。举例:CREATE TRIGGER updatevendorBEFORE UPDATE vendorsFOR EACH ROW SET NEW.vend_state = Upper(NEW.vend_state);解析:?任何数据净化都需要在UPDATE语句之前进行,就像这个例子中一样。每次更新一个行时,NEW.vend_state中的值(将用来更新表行的值)都用Upper(NEW.vend_state)替换。删除触发器:关键字:DROP语法格式:DROP TRIGGER 触发器名;举例:DROP TRIGGER newproduct;注意:触发器不能更新或覆盖。为了修改一个触发器,必须先删除它,然后再重新创建。应用场景:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写;每当订购一个产品时,都从库存数量中减去订购的数量;无论何时删除一行,都在某个存档表中保留一个副本。以上三个共同之处在于需要在某个表发生更改时自动处理。注意:与其他DBMS相比,MySQL 5中支持的触发器相当初级。创建触发器可能需要特殊的安全访问权限,但是,触发器的执行是自动的。如果INSERT、UPDATE或DELETE语句能够执行,则相关的触发器也能执行。应该用触发器来保证数据的一致性(大小写、格式等)。在触发器中执行这种类型的处理的优点是它总是进行这种处理,而且是透明地进行,与客户机应用无关。触发器的一种非常有意义的使用是创建审计跟踪。使用触发器,把更改(如果需要,甚至还有之前和之后的状态)记录到另一个表非常容易。MySQL触发器中不支持CALL语句。这表示不能从触发器内调用存储过程。所需的存储过程代码需要复制到触发器内。6、事务处理MySQL支持几种基本的数据库引擎。MyISAM和InnoDB是两种最常使用的引擎。InnoDB引擎支持明确的事务处理管理,而MyISAM引擎不支持。事务处理(transaction processing)是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错误发生,整组语句提交给(写到)数据库表。如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态。它保证成批的MySQL操作要么完全执行,要么完全不执行,以此来维护数据库的完整性。关键词汇:事务(transaction)指一组SQL语句;回退(rollback)指撤销指定SQL语句的过程;提交(commit)指将未存储的SQL语句结果写入数据库表;保留点(savepoint)指事务处理中设置的临时占位符(place-holder),你可以对它发布回退(与回退整个事务处理不同)。步骤:1、开启事务start transaction;2、查询事务的隔离级别select @@transaction_isolation ;MySQL下默认的隔离方式为?repeatable-read隔离性有隔离级别(4个)读未提交:read uncommitted读已提交:read committed可重复读:repeatable read串行化:serializable3、设置隔离级别set session transaction isolation level read committed;set session|global transaction isolation level 隔离级别;4、操作回滚rollback5、提交事务commit;控制事务处理:事务开始语句:START TRANSACTION使用ROLLBACK:MySQL的ROLLBACK命令用来回退(撤销)MySQL语句举例:SELECT * FROM ordertotals;START TRANSACTION;DELETE FROM ordertotals;SELECT * FROM ordertotals;ROLLBACK;SELECT * FROM ordertotals;解析:首先执行一条SELECT以显示该表不为空。然后开始一个事务处理,用一条DELETE语句删除ordertotals中的所有行。另一条SELECT语句验证ordertotals确实为空。这时用一条ROLLBACK语句回退START TRANSACTION之后的所有语句。ROLLBACK只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)。最后一条SELECT语句显示该表不为空。注意:事务处理用来管理INSERT、UPDATE和DELETE语句。但不能回退SELECT语句、不能回退CREATE或DROP操作。使用COMMIT:一般的MySQL语句都是直接针对数据库表执行和编写的。这就是所谓的隐含提交(implicit commit),即提交(写或保存)操作是自动进行的。 但在事务处理块中,提交不会隐含地进行。为进行明确的提交,使用COMMIT语句:COMMIT;举例:START TRANSACTION;DELETE FROM orderitems WHERE order_num = 20010;DELETE FROM orders WHERE order_num = 20010;COMMIT;解析:例子中,从系统中完全删除订单20010。因为涉及更新两个数据库表orders和orderitems,所以使用事务处理块来保证订单不被部分删除。最后的COMMIT语句仅在不出错时写出更改。如果第一条DELETE起作用,但第二条失败,则DELETE不会提交(实际上,它是被自动撤销的)。隐含事务关闭:当COMMIT或ROLLBACK语句执行后,事务会自动关闭(将来的更改会隐含提交)。更改默认的提交行为:?默认的MySQL行为是自动提交所有更改。修改MySQL不自动提交更改语句:SET autocommit=0;不管有没有COMMIT语句,autocommit标志决定是否自动提交更改,且autocommit标志是针对每个连接而不是服务器的。设置autocommit为0(假)指示MySQL不自动提交更改(直到autocommit被设置为真为止)。使用保留点:保留点:为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符。创建保留点语句:SAVEPOINT 保留点名;注意:每个保留点都取标识它的唯一名字,以便在回退时,MySQL知道要回退到何处。例如:SAVEPOINT delete1;回退到保留点语句:ROLLBACK TO 保留点名;例如:ROLLBACK TO delete1;保留点越多越好:可以在MySQL代码中设置任意多的保留点,越多越好。因为保留点越多,你就越能按自己的意愿灵活地进行回退。释放保留点:保留点在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。自MySQL 5以来,也可以用RELEASE SAVEPOINT明确地释放保留点。7、权限管理1)创建用户create user ‘用户名’ @ ‘localhost’ idenified by ‘密码’;create user 'HHXF'@'localhost' identified by '123456';注意:需要在管理员root权限进行创建2)授予权限用户授权指令:grantgrant all privileges on . to 'Alascanfu'@'%' identified by '123456' with grant option;参数说明:all privileges: 表示将所有权限授予给指定用户。也可指定具体的权限,如:SELECT、CREATE、DROP等on:表示授予的权限对于哪些数据库中的数据表有效。to:表示的是授予给哪个指定用户以及可以登录的ip地址 格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。identified by:指定用户的登录密码with grant option:表示允许用户将自己的权限授权给其它用户刷新当前权限:flush privileges取消指定用户的权限:revoke all on . from 'Alascanfu'@'localhost';删除指定用户:drop user'Alascanfu'@'%';
2024年05月07日
54 阅读
0 评论
0 点赞
2024-05-07
软路由硬件性能及推荐网卡芯片
软路由系统带机数量,是基于CPU本身性能,来判断的单线程CPU-代表型号 P4可以带 50-150台左右双线程CPU-代表型号 E6500可以带100-250台左右4线程CPU-代表型号 intel i3 530可以带300-600台左右8线程CPU-代表志强E3-1230和intel_I7可以带700-1500台左右注意:D525工控机是双核四线程能带250左右;但是1037u的工控机也是双核心的CPU,带机数量的话,就比D525高些以上带机数量是基于一般环境的判断,比如:10M-200M带宽的,当大带宽,大连接数的时候就需要适当减少带机量的注意:CPU的本身性能,当CPU的性能越好,带机数量就会越多网卡芯片:对INTEL平台的硬件支持比较好,在这里推荐几款主流的供大家挑选百兆:8139、8169千兆:82583V、82546EB、82574L 、I350-t4(光口)、82580(光口)pro/10009404pt万兆:82599ES(光口)注意:一些软路由采用的七层流控技术,比传统流控更加精准,精准的识别也会对CPU要求更高一点。以上的服务器推荐配置,请按照您的实际环境灵活参考,建议不要使用配置太差的机器,以免无法体验以后增加的创新功能
2024年05月07日
207 阅读
0 评论
0 点赞
2024-05-07
Proxmox VE 磁盘直通性能测试
这里使用同一张NVME硬盘进行测试,首先通过安装Windows,在Windows直接进行nvme测试,随后在pve上进行硬盘直通测试,再进行硬盘的RDM裸设备映射方式测试,最后在磁盘上创建一个虚拟磁盘,再进行测试。参考上表直观的可以看出来,在物理机上直接使用磁盘,性能是最好的。对于4K性能,最好的是物理机>直通>RDM>虚拟磁盘 。从图上的数据,看得出来后3者性能差距不大,我这里测试的固态性能低,如果换成一个好点的固态,差距应该会拉大。从理论上的数据来说,性能就应该是物理机>直通>RDM>虚拟磁盘从数据上来看,直通和RDM方式的测试数据差距不大,那么这就给需要单盘直通的用户带来福音,例如使用TrueNAS这种需要单盘的场景。机器没有多余的磁盘控制器,无法通过直通方式获取最佳性能。可以通过qm set --scsX /dev/disk/by-id/xxxxx 的方式给VM创建RDM硬盘。获得接近直通的性能体验。当然建议大家使用virtio-scsi-single的磁盘控制器,以获得最佳性能。
2024年05月07日
39 阅读
0 评论
0 点赞
2024-05-07
各厂商服务器存储默认登录信息
1、华为服务器:管理默认IP:192.168.2.100/24默认用户名密码:V3机器:root/Huawei12#$V5机器:Administrator/Admin@90002、IBM X系列:管理默认IP:192.168.70.125/24默认用户名密码:USERID/PASSW0RD (0是数字0);IBM RD系列:管理默认IP:192.168.70.125/24默认用户名密码:USERID/PASSW0RD (0是数字0) 或者lenovo/len0v0 (0是数字0);3、IBM P小型机:管理默认IP:192.168.2.147/3.147默认用户名密码:admin/admin;4、联想ThinkServer RQ940:管理默认IP:192.168.0.120默认用户名密码:admin/admin;5、联想RD350:管理默认IP:192.168.70.125默认用户名密码:USERID/PASSW0RD (0是数字0);6、联想SR550:管理默认IP:192.168.70.125/24默认用户名密码:USERID/PASSW0RD (0是数字0);7、H3C服务器:管理默认IP:192.168.1.2/24默认用户名密码:admin/Password@_;8、HP管理ILO:管理默认IP:无默认用户名密码:Administrator/password;9、DELL服务器IDRAC:管理默认IP:192.168.0.120默认用户名密码: root/calvin;10、HDS 2100存储:默认用户名密码:system/manager;0控:绿色区192.168.0.16(此口地址也是默认地址,用户没有修改)黄色区10.61.59.10 (此口上面有一个透明塑料盖子封上了,此口的ip地址不能更改);1控:绿色区192.168.0.17(此口地址也是默认地址,用户没有修改)黄色区10.0.0.17 (此口上面有一个透明塑料盖子封上了,此口的ip地址不能更改);网页登录:http://127.0.0.1:23015/StorageNavigatorModular/或者:http://<x.x.x.x>:23015/StorageNavigatorModular/Login11、EMC vnx5300:管理默认IP:SPA:1.1.1.1SPB:1.1.1.2维护默认IP:SPA:128.221.1.250SPB:128.221.1.251255.255.255.248默认用户名密码:admin/password12、EMC VNX5700:管理默认IP:1.1.1.1/1.1.1.2默认用户名密码:sysadmin/sysadmin13、宏杉存储MS系列:管理默认IP:192.168.0.210/220默认用户名密码:admin/admin14、HP3PARManagementConsole:管理默认IP:Ip:192.168.100.100User:3paradmPassword:3pardata3paradm/3parInServ15、IBM V5030 T口:管理默认IP:192.168.0.1superuser/passw0rd16、IBM V7000:管理默认IP:192.168.128.101/24192.168.128.102/24superuser/passw0rd (0是数字0)17、DS4700管理默认IP:port1 A控:192.168.128.101/24port1 B控:192.168.128.102/24port2 A控:192.168.129.101/24port2 B控:192.168.129.101/2418、IBM DS5020存储:管理默认IP:192.168.128.101/102账号shellUsr密码wy3oo&w4微码为07.70以下清密码命令;clearSYMbolPassword或者symbolPwdReset微码为7.70及以上:spriMenuPwdReset对于微码在07.10以上的DS4000/DS5000,用户名是“shellUsr”,密码是“wy3oo&w4”(大小写敏感,密码实际上是在键盘上用户名字符左上角的字符)19、浪潮管理口:IPMI默认 IP 为: 192.168.1.1默认用户/密码:admin/admin浪潮AS5300/5500管理软件登录用户名默认,密码为root浏览器登录用户名默认,密码为空20、浪潮AS5600默认 IP 为 :192.168.1.1浏览器登录默认用户名:superuser 密码:passw0rd (0是数字0)21、dell 管理口 idrac:默认IP:192.168.0.120默认用户与密码:root/calvin22、爱数一体机vx1210em1网卡默认IP为:192.168.0.253管理口默认IP:192.168.2.100默认用户与密码:root/Huawei12#$23、brocade 博科交换机默认IP:10.77.77.77通过telnet方式登录255.255.255.0默认用户与密码:admin/password最高权限 root/fibranne(恢复出厂密码)串口登录,恢复出厂密码命令:passwddefault (root用户下)24、常见服务器存储默认信息(作为补充):
2024年05月07日
264 阅读
0 评论
0 点赞
2024-05-07
苹果CMS系统V10API接口说明
api接口仅供提供数据,可以直接在苹果CMS后台联盟采集中加入-并提供给他人采集。视频接口同时支持老板xml格式的数据,增加参数 &at=xml即可。{callout color="#f0ad4e"}1,视频列表地址http://域名/api.php/provide/vod/?ac=list2,视频详情地址http://域名/api.php/provide/vod/?ac=detail3,文章列表地址http://域名/api.php/provide/art/?ac=list4,文章详情地址http://域名/api.php/provide/art/?ac=detail{/callout}列表数据格式:{callout color="#f0ad4e"}{"code":1,"msg":"数据列表","page":1,"pagecount":1,"limit":"20","total":15,"list":[{"vod_id":21,"vod_name":"情剑","type_id":6,"type_name":"动作片","vod_en":"qingjian","vod_time":"2018-03-29 20:50:19","vod_remarks":"超清","vod_play_from":"youku"},{"vod_id":20,"vod_name":"暴力街区","type_id":6,"type_name":"动作片","vod_en":"baolijiequ","vod_time":"2018-03-27 21:17:52","vod_remarks":"超清","vod_play_from":"youku"},{"vod_id":19,"vod_name":"超凡蜘蛛侠2","type_id":6,"type_name":"动作片","vod_en":"chaofanzhizhuxia2","vod_time":"2018-03-27 21:17:51","vod_remarks":"高清","vod_play_from":"youku"},{"vod_id":18,"vod_name":"木星上行","type_id":6,"type_name":"动作片","vod_en":"muxingshangxing","vod_time":"2018-03-27 21:17:37","vod_remarks":"高清","vod_play_from":"youku"},{"vod_id":15,"vod_name":"英雄本色2018","type_id":6,"type_name":"动作片","vod_en":"yingxiongbense2018","vod_time":"2018-03-22 16:09:17","vod_remarks":"高清","vod_play_from":"qiyi,sinahd"},{"vod_id":13,"vod_name":"飘香剑雨","type_id":8,"type_name":"爱情片","vod_en":"piaoxiangjianyu","vod_time":"2018-03-21 20:37:52","vod_remarks":"全36集","vod_play_from":"youku,qiyi"},{"vod_id":14,"vod_name":"怪谈之魅影惊魂","type_id":8,"type_name":"爱情片","vod_en":"guaitanzhimeiyingjinghun","vod_time":"2018-03-20 21:32:27","vod_remarks":"高清","vod_play_from":"qiyi"},{"vod_id":12,"vod_name":"桃李劫","type_id":8,"type_name":"爱情片","vod_en":"taolijie","vod_time":"2018-03-20 21:32:26","vod_remarks":"高清","vod_play_from":"mgtv,pptv"},{"vod_id":9,"vod_name":"胡杨的夏天","type_id":7,"type_name":"喜剧片","vod_en":"huyangdexiatian","vod_time":"2018-03-20 21:32:00","vod_remarks":"高清","vod_play_from":"27pan,mgtv,qiyi,qq,youku"},{"vod_id":10,"vod_name":"宝贝特攻","type_id":7,"type_name":"喜剧片","vod_en":"baobeitegong","vod_time":"2018-03-20 21:32:00","vod_remarks":"高清","vod_play_from":"mgtv,qiyi,qq,youku"},{"vod_id":11,"vod_name":"午夜劫案","type_id":7,"type_name":"喜剧片","vod_en":"wuyejiean","vod_time":"2018-03-20 21:32:00","vod_remarks":"高清","vod_play_from":"qiyi"},{"vod_id":6,"vod_name":"密战","type_id":6,"type_name":"动作片","vod_en":"mizhan","vod_time":"2018-03-20 21:31:41","vod_remarks":"全30集","vod_play_from":"mgtv,youku,27pan,qiyi,qq,pptv"},{"vod_id":7,"vod_name":"黑道老师","type_id":6,"type_name":"动作片","vod_en":"heidaolaoshi","vod_time":"2018-03-20 21:31:41","vod_remarks":"高清","vod_play_from":"sohu,pptv"},{"vod_id":8,"vod_name":"跃影江湖之森罗万象","type_id":6,"type_name":"动作片","vod_en":"yueyingjianghuzhisenluowanxiang","vod_time":"2018-03-20 21:31:41","vod_remarks":"高清","vod_play_from":"qq"},{"vod_id":4,"vod_name":"我的青春遇见你","type_id":13,"type_name":"国产剧","vod_en":"wodeqingchunyujianni","vod_time":"2018-03-20 19:26:54","vod_remarks":"56集全","vod_play_from":"youku,xigua"}],"class":[{"type_id":1,"type_name":"电影"},{"type_id":2,"type_name":"连续剧"},{"type_id":3,"type_name":"综艺"},{"type_id":4,"type_name":"动漫"},{"type_id":5,"type_name":"资讯"},{"type_id":6,"type_name":"动作片"},{"type_id":7,"type_name":"喜剧片"},{"type_id":8,"type_name":"爱情片"},{"type_id":9,"type_name":"科幻片"},{"type_id":10,"type_name":"恐怖片"},{"type_id":11,"type_name":"剧情片"},{"type_id":12,"type_name":"战争片"},{"type_id":13,"type_name":"国产剧"},{"type_id":14,"type_name":"港台剧"},{"type_id":15,"type_name":"日韩剧"},{"type_id":16,"type_name":"欧美剧"},{"type_id":17,"type_name":"公告"},{"type_id":18,"type_name":"头条"}]}{/callout}列表接收参数:{callout color="#f0ad4e"}ac=listt=类别IDpg=页码wd=搜索关键字h=几小时内的数据{/callout}例如: http://域名/api.php/provide/vod/?ac=list&t=1&pg=5 分类ID为1的列表数据第5页内容数据格式:{callout color="#f0ad4e"}{"code":1,"msg":"数据列表","page":1,"pagecount":1,"limit":"20","total":1,"list":[{"vod_id":21,"vod_name":"情剑","type_id":6,"type_name":"动作片","vod_en":"qingjian","vod_time":"2018-03-29 20:50:19","vod_remarks":"超清","vod_play_from":"youku","vod_pic":"https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2259384068.jpg","vod_area":"大陆","vod_lang":"国语","vod_year":"2018","vod_serial":"0","vod_actor":"谢霆锋,钟欣潼,乔振宇,伊能静,谭耀文,赵鸿飞,周莉","vod_director":"陈咏歌","vod_content":"一位手执名剑“长光”的年轻剑客(谢霆锋 饰)只为完成师父生前的遗愿——找到古代中原留下的九大旷世名剑,从北方蓬莱来到中原。而此前早已归顺朝廷的山东武林盟主、青萍剑客白三空(计春华 饰)利用与年轻剑客的比武诈死,成为朝廷埋藏在武林中的黑手。白三空的外孙方宝玉(乔振宇 饰)从小被外公禁止接触武功,然而为了替外公报仇,为了武林的正义,跟随“天下第一剑”紫衣候(谭耀文 饰)学武,誓要杀死蓬莱剑客。生命攸关的时刻,蓬莱剑客结识了黄河狂侠王巅之女珠儿(钟欣潼 饰),并且渐生情愫,方宝玉与紫衣候养女奔月(杨蕊 饰)两人也爱得难舍难分。青木堡少堡主木郎神君(赵鸿飞 饰)的朝廷锦衣卫身份终于暴露,朝廷意欲借武林中人控制武林,寻找罗雅古城宝藏的目的彻底呈现出来。 </p> 一场武林浩劫正在上演,每一个人的立场都真相大白。在纷争中发现对方竟是同母异父亲兄亲的蓬莱剑客和宝玉决定联手对付木郎神君,然而木郎神君已经炼成了混元神功,就在那千钧一发时刻,木郎神君死在了心爱的女人——脱尘郡主(伊能静 饰)的剑下,纷争也随之结束……</p> </p>","vod_play_url":"正片$http://v.youku.com/v_show/id_XMTM0NTczNDExMg==.html"}]}{/callout}内容接收参数:{callout color="#f0ad4e"}参数 ids=数据ID,多个ID逗号分割。t=类型IDpg=页码h=几小时内的数据{/callout}例如:http://域名/api.php/provide/vod/?ac=detail&ids=123,567获取ID为123和567的数据信息:http://域名/api.php/provide/vod/?ac=detail&h=24**24小时内更新数据信息
2024年05月07日
78 阅读
0 评论
0 点赞
2024-05-07
碧海威路由-解决蘑菇下载导致 ADSL 掉线
背景:经常有用户反馈(这种现象其实持续一两年了)自己的 ADSL 线路总是重拨,而且是被踢下线,没有规律,其实这种情况有一个共性,就是都在用蘑菇下载时候发生。导致碧海背锅。原因:蘑菇下载的某些行为或端口导致触发运营商踢用户下网。解决:建立一条虚拟链路(假线路),物理接口选一个 up 的网口,理论上 ip/子网任意,不懂的就照抄吧。链路探测一定要设置成关闭,否则系统会检测到这个线路不通。应用路由增加一条策略,将更新机 IP (子网是 32 代表就这一台,或者你用 IP 分组定义也可以)部分端口指向新增加的假线路上。注意不要抄错了,仔细点。将增加的这个应用路由规则置顶。原理:将不合法的端口或数据包扔掉(这个不就是扔到空线路上去吗?)
2024年05月07日
44 阅读
0 评论
0 点赞
2024-05-07
群晖命令行方式拉去Docker项目教程
教程开始:A:开启SSH登录 :打开群晖系统,进入“控制面板”→终端机和SNMP→打勾SSH,设置端口号,默认为22;这里我设置成B:新建SSH会话 :打开Xshell软件,新建会话属性,点击“连接”,输入主机(即群晖局域网ip:192.168.1.XXX)、端口号,点击“用户身份验证”,输入群晖管理员登录账号和密码;登录群晖终端环境 :点击会话下方“连接”按钮进入命令窗口,也可以点击“确认”保存到左侧,下次双击直接登录;登陆后提示提示如下Connecting to 192.168.1.XXX:端口号... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. admin@DiskStation:~$C:获取高级权限 :命令窗口中输入> sudo -iD:再次输入群晖管理员密码,> Password:E:输入的密码不会显示出来,输完直接回车,输错了也直接回车,再输入“sudo -i”重新输入一遍;查看已有镜像: 这里介绍几个要用到的命令docker images # 查看docker本地的镜像 docker search mysql # 搜索一个镜像,这里以搜索mysql为例 time docker pull nginx # 测试下载速度 docker pull mysql:5.7 # 下载mysql:5.7镜像 docker rmi XXXX # 删除镜像XXXX,这里XXX为镜像ID,输入docker images可查看已下载的镜像和对应的ID docker rmi $(docker images -q) # 删除全部镜像 synoservice --restart pkgctl-Docker # 重启docker这里对于某些镜像选择lastet版本还是其他版本我暂时还不知道怎么弄,有知道的小伙伴可以在下方给我留言哦。F:下载镜像 :这里以下载docker注册表中的oldiy/docker-webssh2为例root@DiskStation:~# docker pull oldiy/docker-webssh2 Using default tag: latest latest: Pulling from oldiy/docker-webssh2 88286f41530e: Pull complete d0e8a23136b3: Pull complete 5ad5b12a980e: Pull complete 81a43fd8c11b: Pull complete Digest: sha256:f14e68f727fd9942f4fdbc02832c1910ee179ba20a99fc132a28e86583cc0e36 Status: Downloaded newer image for oldiy/docker-webssh2:latest会有四个进度条同时下载,下载结束后会出现Digest: sha256:f14e68f727fd9942f4fdbc02832c1910ee179ba20a99fc132a28e86583cc0e36 Status: Downloaded newer image for oldiy/docker-webssh2:latest查看下载镜像 这样就下载完成了,再在命令行中输入docker images root@DiskStation:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE oldiy/docker-webssh2 latest fd4b4b08d165 12 months ago 127MB然后在网页中查看群晖docker中的镜像,通过ssh下载好的镜像这里就出现啦,大家就可以继续后续的操作了。
2024年05月07日
53 阅读
0 评论
0 点赞
2024-05-07
技嘉 ga-6pxsvt 主板接线
暂无简介
2024年05月07日
75 阅读
0 评论
0 点赞
2024-05-07
碧海威路由配置案例教程解析
网吧环境一、联通 100M 2条 + 电信 10M 1条 + 移动 100M 1条配置方案:应用路由:联通带宽较大,以双线联通做主要线路,电信 10M 只跑基本的游戏类流量, 移动以移动路由表分流外加 P2P 下载流量。流控部分:简单一键流控即可(对模板配置不满意的同学自行微调策略){dotted startColor="#ff6c6c" endColor="#1989fa"/}网吧环境二、联通 100M 1条 + 电信 30M 1条配置方案:应用路由:联通做主线路,联通承担大部分流量,电信的游戏及聊天和浏览走电信出口。流控部分:简单一键流控即可(对模板配置不满意的同学自行微调策略)分流协议部分,可以自行根据实际环境进行增减,比如可以对 WEB 视频不分流到联通。{dotted startColor="#ff6c6c" endColor="#1989fa"/}网吧环境三、重庆带有电信专网(走视频)和联通线路的混合接入配置方案:应用路由:电信主光纤做主线路,电信专网根据电信提供的路由表去做分流,联通流量根据联通的路由表出口策略。核心:将电信给定的专网 IP 分流至移动专网线路流控部分:简单一键流控即可(对模板配置不满意的同学自行微调策略)分流协议部分,可以自行根据实际环境进行增减,比如可以对 WEB 视频不分流到联通{dotted startColor="#ff6c6c" endColor="#1989fa"/}网吧环境四、联通 100M 4条 ADSL(上行 4M)配置方案:应用路由:四条 ADSL 直接做负载均衡。流控部分:全部线路一键键流控即可(对模板配置不满意的同学自行微调策略)
2024年05月07日
20 阅读
0 评论
0 点赞
2024-05-07
Windows 开机自启 VMware 虚拟机
由于进行 Linux 下软件开发,需要频繁使用 VMware 虚拟机,为提高效率找到一种开机启动启动 VMware 虚拟机的方法,可以大大提升效率。第一步,编写脚本首先编写 自启 脚本 vm_start.bat ,内容如下:"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "E:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位.vmx" nogui其中前面部分替换为自己 VMware 安装目录下的 vmrun.exe 文件所在路径,后部分替换为自己虚拟机的 *.vmx 文件路径。不要丢掉了双引号。如果像我一样路径里面包含中文,记得将编码转化为 ANSI 编码即可正常使用,否则运行会乱码。如果需要关机自动关闭脚本 vm_stop.bat ,内容如下:"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" stop "E:\Virtual Machines\CentOS 7 64 位\CentOS 7 64 位.vmx" soft第二步,加入启动策略这里有两种方法:将脚本加入开机启动策略将脚本拷入 启动 文件夹第一种,运行 gpedit.msc > 用户配置 > windows 设置 > 脚本 (登录 / 注销) > 添加第二种比较简单,将脚本拷入启动文件夹:X:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp(注:X为Win10系统盘盘符) 比如,我的启动文件夹就是 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
2024年05月07日
43 阅读
0 评论
0 点赞
2024-05-07
PVE下三种磁盘IO模式(No cache,Write through,Write back)选择与优化指南
开启缓存的前提条件:1,PVE系统盘为固态且SWAP分区在固态2,虚拟机在另外的机械盘中这样才能实现有效加速,否则在机械盘系统中直接开启缓存模式,同盘读写反而会加大机械盘的读写负载,造成IO延时暴涨!最近在用网心云跑PCDN业务,由于是架在PVE环境上的,因此如何对磁盘IO进行优化就成了最大的问题...1,开启虚拟机IO thread,有效降低CPU负载2,强制CPU全核睿频到最大3,磁盘IO缓存类型选择:PVE默认无缓存模式(No Cache)磁盘IO性能(原盘速度),适合读写基本均衡,比较重视数据安全的使用场景透写模式(Write Through)磁盘IO,适合追求读取速度,同时需要数据安全的场景,请注意为了提升读取速度,该模式下大大牺牲了写入速度,需根据实际负载类型权衡决定回写模式(Write Back)磁盘IO,读写速度都得到了很大的提升,但代价是对于数据的安全性没有保证,慎选!对于前期大量部署缓存阶段,建议使用No cache方案避免影响写入;后期磁盘基本写满进入上行期,可以将磁盘调整为Write Through以提升读取效能如图为进入大缓存时期的磁盘IO情况,写入量:读取量约为1:10
2024年05月07日
28 阅读
0 评论
0 点赞
2024-05-07
碧海威路由封锁指定外网IP的新方法
(适用版本:所有路由版)修订:2014-05-21案例: 如果我们不允许内网的全部或部分IP禁止访问外网指定IP 或IP段:可以在流控盒子里进行配置,方法如下:第一步:进入菜单 流控盒子---流控对象---IP分组,定义内网IP和外网IP段(说明:IP分组用于定义内网IP或外网IP或IP段的集合,利用分组来管控更加简单和方便)A:用户中定义一个IP地址 的方法:B:用户中定义一个子网网段的方法:C:用户中定义一段IP的方法:D:定义一个用户分组:E:定义的多个用户加入到一个用户分组:第二步 : 流控盒子--整体流控里设置内网与外网流量的阻断(封锁指定外网IP)第三步:至关重要!! 将此设置行,移到所有策略配置行顶端,方能生效!
2024年05月07日
41 阅读
0 评论
0 点赞
2024-05-07
SQL 2008 R2 Express(MSSQL SQL Server)开启远程访问的详细方法
Microsoft SQL 2008 R2 Express(MSSQL SQL Server) 默认只能在本机访问,远程要访问的话需要做如下:1、启用TCP/IP和Named Pipes:进入Sql Server配置管理器,在网络配置->SqlExpress的协议中启用SQL SERVER启用协议2、设置TCP/IP的协议端口号为1433,默认是空的。开启SQL SERVER端口3、将SQL Server Browser service 启用,默认是禁止的,具体原因参见SQL Server : Browser服务是干什么的。启用SQL Server Browser service 服务4、登陆改为混合模式:以windows方式连接并进入数据库,右键点击你的数据服务器->属性->安全性>选中Sql server 和windows 验证方式。改为SQL登录为混合模式5、打开远程连接功能SQL SERVER打开远程连接6、重启服务后就可以通过远程访问了。
2024年05月07日
33 阅读
0 评论
0 点赞
1
2
3
4
...
9