- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。在 Redis 中查看特定键的值,可以使用 GET 命令。如果该键是字符串类型,GET 命令将返回与之关联的值。如果键不存在,则返回特殊值 nil。但需要注意的是,GET 只适用于字符串类型的值,如果尝试对其他类型的键(如哈希、列表、集合等)使用 GET,将会返回错误。 查看字符串类型的键值要查看 Redis 中键的值,可以使用如下命令:GET <key>例如,假设你将键 mykey 设置为 "Hello":127.0.0.1:6379> SET mykey "Hello"OK127.0.0.1:6379> GET mykey"Hello"如果键不存在,返回值将是 nil:127.0.0.1:6379> GET nonexisting(nil) 键的值不是字符串类型时如果键的值不是字符串类型(如哈希、列表、集合等),使用 GET 命令会返回错误。例如,如果你设置了一个哈希类型的键:127.0.0.1:6379> HSET myhash field1 "Hello"(integer) 1127.0.0.1:6379> GET myhashERR WRONGTYPE Operation against a key holding the wrong kind of value 其他相关命令除了 GET 命令,Redis 还提供了许多其他命令来查看不同类型的键值。KEYS:列出与指定模式匹配的所有键。KEYS <pattern> HGETALL:获取哈希键的所有字段和值。HGETALL <key> HKEYS:获取哈希键的所有字段。HKEYS <key> HGET:获取哈希键指定字段的值。HGET <key> <field> 例如,要获取名为 myhash 的哈希键的所有字段和值:127.0.0.1:6379> HGETALL myhash1) "field1"2) "Hello"查看键的数据类型如果不确定键的数据类型,可以使用 TYPE 命令来查看:TYPE <key>这会返回该键的数据类型,例如 string、hash、list、set 或 zset。蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索。
云服务器作为当下企业与开发者构建应用、存储数据的重要基础设施,其安全性至关重要。Linux系统因其开源、稳定、灵活等特性,广泛应用于云服务器之中。然而,新购置的Linux云服务器在初始状态下往往存在诸多安全隐患,若不进行细致的安全配置,极易遭受黑客攻击、数据泄露等风险。以下将从系统更新、账户管理、防火墙配置、SSH安全、数据备份等方面,详细阐述Linux云服务器到手后必做的安全配置。 以下步骤以centos7系统为例 一、后台相关设置首先,咱们先来买一台云服务器。登录蓝队云官网,挑选适合自己的云服务器配置。现在蓝队云线上是有优惠活动的,可以直接抵达活动页面,购买产品:蓝队云活动 购买完云服务器以后可进入个人中心-云服务器-云服务器管理处查看进入后我们可针对云服务器进行防火墙设置入方向:进入云服务器出方向:云服务器发出一般来说我们的云服务器不需要开启默认以外的其他端口就足以我们搭建网站。如果有特殊需求可根据自身业务需求增删端口。 二.云服务器配置(一)服务器换源更换yum源为国内源,可以显著提升云服务器的软件包下载速度,确保系统更新和软件安装过程更加顺畅。下面以更换阿里源为例:1.备份本地yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 2.获取阿里yum源配置文件wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3.更新yum缓存yum makecache 4.查看当前yum源yum repolist(二)系统更新与补丁管理1. 执行系统更新更新系统包:Linux系统中存在大量的软件包,随着时间推移,这些软件包可能会出现安全漏洞。通过执行系统更新,可以确保所有软件包都是最新版本,从而降低因已知漏洞被攻击的风险。在CentOS7中,可使用以下命令进行更新:sudo yum update该命令会同步软件包索引,并升级所有可升级的软件包。 2. 定期检查更新1)设置自动更新:为了避免因人为疏忽而遗漏系统更新,可以配置自动检查并安装更新。首先,安装 yum-cron 包:sudo yum install yum-cron然后,编辑 /etc/yum/yum-cron.conf 文件,设置自动更新的相关选项,如更新频率、是否自动安装更新等。例如,要配置 yum-cron 每天检查更新并自动安装,你可以修改配置文件中的以下选项:[commands] update_messages = yes download_updates = yes apply_updates = yes 2)使用第三方工具监控:借助第三方的安全监控工具,如 Lynis 或 OSSEC,可以定期扫描系统,检测是否存在未修复的安全漏洞,并提醒管理员及时进行更新。例如,使用 Lynis 进行系统安全审计:sudo yum install lynis sudo lynis audit system (二)账户管理与权限控制1. 创建与管理用户账户1)创建新用户:为不同的业务需求和人员创建专门的用户账户,避免使用单一的root账户进行所有操作。创建新用户时,应为其分配适当的权限,确保其只能访问和操作与其工作相关的资源。例如,创建一个名为 webadmin 的用户,并为其设置密码:sudo useradd webadmin sudo passwd webadmin在提示输入密码时,为其设置一个强密码。 2)禁用不必要的账户:对于系统中默认创建的、但实际业务中不需要使用的账户,应及时禁用。例如,假设我们有一个名为guest的用户账户,禁用 guest 账户:sudo usermod -L guest 2. 配置sudo权限1)精细化sudo权限:通过编辑 /etc/sudoers 文件,可以为用户或用户组配置具体的sudo权限。避免给予用户无限制的sudo权限,而是根据其工作需求,授予其执行特定命令的权限。例如,允许 webadmin 用户以root权限执行 systemctl 命令,但不允许执行其他命令: 使用 visudo 命令编辑 /etc/sudoers 文件:sudo visudo 在打开的 sudoers 文件中,找到合适的位置(通常是在文件的末尾或在其他用户规则之后),添加以下行:webadmin ALL=(ALL) /usr/bin/systemctl 2)记录sudo操作日志:确保sudo操作的日志记录功能正常开启,以便在发生安全事件时,能够追踪到具体的用户操作。在CentOS 7中,默认情况下,sudo操作的日志记录在 /var/log/secure 文件中。 (三)防火墙配置与网络管理1. 配置firewalld防火墙1)启用firewalld防火墙:firewalld是CentOS 7默认的防火墙管理工具,具有灵活的防火墙配置功能。首先,确保firewalld服务已启动并设置为开机自启:sudo systemctl start firewalld sudo systemctl enable firewalld 2)设置默认区域策略:将firewalld的默认区域设置为 drop 或 block,即默认拒绝所有入站和出站流量,然后根据实际需求,逐一开放必要的端口。例如,设置默认区域为 drop:sudo firewall-cmd --set-default-zone=drop 3)开放必要端口:根据云服务器的业务需求,开放相应的端口。例如,对于一个Web服务器,需要开放HTTP(80端口)和HTTPS(443端口):sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp –permanent 然后重新加载防火墙规则:sudo firewall-cmd –reload 2. 限制SSH远程访问1)更改默认端口:将SSH的默认端口(22)更改为一个不常用的端口,以减少被扫描和攻击的风险。编辑 /etc/ssh/sshd_config 文件,修改 Port 选项:Port 2222然后重启SSH服务:sudo systemctl restart sshd 注:使用蓝队云服务器时,服务器开通会自动生成一个随机的ssh端口,可以在后台查看2)禁用root远程登录:在 /etc/ssh/sshd_config 文件中,将 PermitRootLogin 选项设置为 no,禁止root用户直接远程登录:PermitRootLogin no 3)使用密钥认证:为用户生成SSH密钥对,并将公钥添加到云服务器的 ~/.ssh/authorized_keys 文件中,使用密钥认证代替密码登录,提高安全性。 (四)安全扫描与漏洞修复1. 定期进行安全扫描1)使用开源安全扫描工具:如 OpenVAS、Nessus 等,定期对云服务器进行安全扫描,检测系统漏洞、配置缺陷等安全问题。例如,使用 OpenVAS 进行扫描:sudo yum install openvas sudo openvas-setup 2)分析扫描结果:仔细分析扫描报告,确定需要修复的安全漏洞和配置问题,并制定相应的修复计划。 2. 及时修复漏洞1)修复已知漏洞:根据扫描结果和官方安全公告,及时修复已知的安全漏洞。例如,修复Linux内核漏洞:sudo yum install kernel 2)更新应用程序:对于运行在云服务器上的应用程序,定期检查其更新,修复应用程序自身的安全漏洞。例如,更新Apache Web服务器:sudo yum install httpd 三、最后说一点当我们配置完成,网站也搭建结束,记得回到蓝队云官网云服务器管理处创建一个镜像。如果遇到不可避免的问题时可以利用今天创建的镜像对云服务器进行还原以上,就是Linux云服务器开通后必做的一些安全设置。更多云服务器、网络安全相关的知识分享,可以持续关注蓝队云。欢迎一起交流探讨。
短信群发平台哪个比较好?这是很多企业在选择时都会遇到的问题,那么究竟应该怎么选择一家性价比高,服务又靠谱的短信群发平台呢?看完这篇短信群发平台的选择指南就够了。关注短信群发平台的资质是选择短信群发平台哪个比较好的第一步。短信群发平台应该具备相应的资质以确保平台的服务符合行业规范,只有平台合规才能保障用户群发的短信后续不会出现因资质问题或法律问题造成的纠纷。选择短信群发平台时大家可以参考这两个工信部颁发的资质,一个是《增值电信业务经营许可证》,其中包含“信息服务业务(不含互联网信息服务)”这一类目,表明获得了合法开展短信服务的官方许可,另一个是《电信网码号资源使用证书》,代表了服务商已经获得了使用特定电信网码号资源(如短消息类服务接入代码,如106号段)的合法授权。这两个资质应该是合规短信群发平台所具备的。在比较短信群发平台哪个比较好的时候,平台的服务质量也是一大考察标准。在技术实力上需要了解短信群发平台的通道质量以及短信的到达率,在服务支持上要观察短信群发平台是否能及时响应需求。这两点都是体现短信群发平台服务质量的关键因素。蓝队云的通道质量优质,能够处理高并发、大流量的状况,并且能自动在高并发状况下切换通道,确保群发的短信能够 及时到达用户,短信群发到达率高达99.99%,通知类短信5S必达。此外,蓝队云还有一支专业的技术团队,承诺7*24小时在线,具备高效的故障处理能力,能够帮助用户解决遇到的技术问题。对比了资质和平台的服务质量后,也不要忘记关注短信群发平台的实际服务案例。短信群发平台哪个比较好,具体还需要从客户的反馈中去观察。通常来讲,具备实力的短信群发平台应该有多个行业的服务经验,并且在服务案例中实现了短信的高到达率。蓝队云的行业服务经验丰富,为物流、教育、金融、销售、房地产等多个行业提供过短信群发服务。服务过云南本地的九机网、昆明市公租房中心、安宁税务局等多家知名政企。并且在为昆明市公租房的服务案例中做到了到达率99.99%。蓝队云短信群发平台不仅服务专业,资质齐全而且性价比还很高。正值2025开年活动,蓝队云为大家做到了短信群发低至3分/条的福利价,而且发送量越多越优惠,支持所有用户先试用再购买,助力企业用户选到真正适合自己的短信群发平台。短信群发平台哪个比较好,相信看完这篇攻略,一定能帮到很多朋友,现在有短信群发需求的朋友可以直接上蓝队云官网注册,支持新用户免费试用1000条哦!机会有限,先到先得!
Linux服务器之所以经常成为攻击目标,主要是因为它们广泛用于托管网站、应用程序和服务,且许多服务器运行着公开可访问的服务。攻击者利用安全漏洞、弱密码配置、未及时更新的软件等方式入侵系统。以下是一些提升Linux服务器安全性的技巧:「定期更新系统」:保持系统和软件包的最新状态,及时应用安全补丁和更新,以修复已知的安全漏洞。「使用强密码和多因素认证」:为所有用户账户设置复杂且独特的密码,并启用多因素认证增加额外的安全层。「配置防火墙」:使用iptables或firewalld等工具配置防火墙规则,限制不必要的入站和出站流量,只允许特定的端口和服务通信。「禁用root远程登录」:禁止root用户直接通过SSH远程登录,改为使用普通用户登录后再切换到root用户。「最小化安装和服务」:仅安装必要的软件包和服务,减少潜在的攻击面。关闭或删除未使用的服务。「使用SSH密钥认证」:禁用密码认证,改用SSH密钥对进行身份验证,提高安全性。「定期备份数据」:定期备份重要数据,并将备份存储在安全的位置,以便在遭受攻击或数据丢失时能够恢复。「监控和日志分析」:使用工具如Logwatch、Fail2Ban等监控系统日志,分析异常活动,及时发现并响应安全事件。「限制用户权限」:遵循最小权限原则,为用户和程序分配完成任务所需的最小权限。「使用安全增强工具」:部署如SELinux或AppArmor等安全增强工具,提供更细粒度的访问控制。「定期安全审计」:定期进行安全审计和漏洞扫描,检查系统配置和潜在的安全问题。「加密通信」:使用SSL/TLS加密网络通信,保护数据传输过程中的隐私和完整性。通过实施上述措施,可以显著提高Linux服务器的安全性,降低被黑客攻击的风险。然而,安全是一个持续的过程,需要不断地评估、更新和改进安全策略以应对新出现的威胁。简单总结起来,个人建议一定要定期磁盘快照备份自己的数据,然后安装Fail2Ban等放爆破工具。如果SSH端口不常用的话,直接在服务器安全组中关闭这个22端口可以大大提升安全性。
MySQL的数据目录欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。1. MySQL的主要目录结构# find / -name mysql/etc/logrotate.d/mysql/etc/selinux/targeted/active/modules/100/mysql/var/lib/mysql/var/lib/mysql/mysql/usr/bin/mysql/usr/lib64/mysql/usr/share/mysql1.1 数据库文件存放路径通过YUM安装的MySQL数据库文件的默认存放路径:/var/lib/mysqlMySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就是数据目录。MySQL把数据都存到哪个路径下呢?其实数据目录对应着一个系统变量 datadir,可以通过如下命令进行查看:mysql> show variables like 'datadir';+---------------+-----------------+| Variable_name | Value |+---------------+-----------------+| datadir | /var/lib/mysql/ |+---------------+-----------------+1 row in set (0.31 sec)从结果中可以看出,在这里的MySQL的数据目录就是 /var/lib/mysql/。1.2. 相关命令目录相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。# ll /usr/bin/mysql*-rwxr-xr-x. 1 root root 10531233 Sep 7 2021 /usr/bin/mysql-rwxr-xr-x. 1 root root 9329019 Sep 7 2021 /usr/bin/mysqladmin-rwxr-xr-x. 1 root root 11332910 Sep 7 2021 /usr/bin/mysqlbinlog-rwxr-xr-x. 1 root root 9704285 Sep 7 2021 /usr/bin/mysqlcheck-rwxr-xr-x. 1 root root 7648822 Sep 7 2021 /usr/bin/mysql_config_editor-rwxr-xr-x. 1 root root 26931 Sep 7 2021 /usr/bin/mysqld_multi-rwxr-xr-x. 1 root root 27790 Sep 7 2021 /usr/bin/mysqld_safe-rwxr-xr-x. 1 root root 9625156 Sep 7 2021 /usr/bin/mysqldump-rwxr-xr-x. 1 root root 7844 Sep 7 2021 /usr/bin/mysqldumpslow-rwxr-xr-x. 1 root root 9348792 Sep 7 2021 /usr/bin/mysqlimport-rwxr-xr-x. 1 root root 9798674 Sep 7 2021 /usr/bin/mysql_install_db-rwxr-xr-x. 1 root root 7537333 Sep 7 2021 /usr/bin/mysql_plugin-rwxr-xr-x. 1 root root 17755032 Sep 7 2021 /usr/bin/mysqlpump-rwxr-xr-x. 1 root root 9278592 Sep 7 2021 /usr/bin/mysql_secure_installation-rwxr-xr-x. 1 root root 9290525 Sep 7 2021 /usr/bin/mysqlshow-rwxr-xr-x. 1 root root 9403941 Sep 7 2021 /usr/bin/mysqlslap-rwxr-xr-x. 1 root root 7851137 Sep 7 2021 /usr/bin/mysql_ssl_rsa_setup-rwxr-xr-x. 1 root root 5160824 Sep 7 2021 /usr/bin/mysql_tzinfo_to_sql-rwxr-xr-x. 1 root root 12548409 Sep 7 2021 /usr/bin/mysql_upgrade安装目录下非常重要的bin目录,它里面存储了许多关于控制客户端程序的命令(许多可执行文件,比如mysql、mysqldump等)。而数据目录时用来存储MySQL在运行过程中产生的数据。1.3. 配置文件目录配置文件目录:ll(命令及配置文件),/etc/mysql(如my.cnf)。# ll /usr/share/mysql/total 2072drwxr-xr-x. 2 root root 24 Dec 31 14:00 bulgariandrwxr-xr-x. 2 root root 4096 Dec 31 14:00 charsetsdrwxr-xr-x. 2 root root 24 Dec 31 14:00 czechdrwxr-xr-x. 2 root root 24 Dec 31 14:00 danish-rw-r--r--. 1 root root 25575 Sep 7 2021 dictionary.txtdrwxr-xr-x. 2 root root 24 Dec 31 14:00 dutchdrwxr-xr-x. 2 root root 24 Dec 31 14:00 english-rw-r--r--. 1 root root 530464 Sep 7 2021 errmsg-utf8.txtdrwxr-xr-x. 2 root root 24 Dec 31 14:00 estonian-rw-r--r--. 1 root root 1068800 Sep 7 2021 fill_help_tables.sqldrwxr-xr-x. 2 root root 24 Dec 31 14:00 frenchdrwxr-xr-x. 2 root root 24 Dec 31 14:00 germandrwxr-xr-x. 2 root root 24 Dec 31 14:00 greekdrwxr-xr-x. 2 root root 24 Dec 31 14:00 hungarian-rw-r--r--. 1 root root 3999 Sep 7 2021 innodb_memcached_config.sql-rw-r--r--. 1 root root 2221 Sep 7 2021 install_rewriter.sqldrwxr-xr-x. 2 root root 24 Dec 31 14:00 italiandrwxr-xr-x. 2 root root 24 Dec 31 14:00 japanesedrwxr-xr-x. 2 root root 24 Dec 31 14:00 korean-rw-r--r--. 1 root root 773 Sep 7 2021 magic-rw-r--r--. 1 root root 844 Sep 7 2021 mysql-log-rotate-rw-r--r--. 1 root root 2171 Sep 7 2021 mysql_security_commands.sql-rw-r--r--. 1 root root 288342 Sep 7 2021 mysql_sys_schema.sql-rw-r--r--. 1 root root 1214 Sep 7 2021 mysql_system_tables_data.sql-rw-r--r--. 1 root root 155031 Sep 7 2021 mysql_system_tables.sql-rw-r--r--. 1 root root 10862 Sep 7 2021 mysql_test_data_timezone.sqldrwxr-xr-x. 2 root root 24 Dec 31 14:00 norwegiandrwxr-xr-x. 2 root root 24 Dec 31 14:00 norwegian-nydrwxr-xr-x. 2 root root 24 Dec 31 14:00 polishdrwxr-xr-x. 2 root root 24 Dec 31 14:00 portuguesedrwxr-xr-x. 2 root root 24 Dec 31 14:00 romaniandrwxr-xr-x. 2 root root 24 Dec 31 14:00 russiandrwxr-xr-x. 2 root root 24 Dec 31 14:00 serbiandrwxr-xr-x. 2 root root 24 Dec 31 14:00 slovakdrwxr-xr-x. 2 root root 24 Dec 31 14:00 spanishdrwxr-xr-x. 2 root root 24 Dec 31 14:00 swedishdrwxr-xr-x. 2 root root 24 Dec 31 14:00 ukrainian-rw-r--r--. 1 root root 1243 Sep 7 2021 uninstall_rewriter.sql2. 数据库和文件系统的关系像InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上的,操作系统用来管理磁盘的结构被称为文件系统,所以用专业一点的话来表述就是:像InnoDB、MyISAM这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这些存储引擎会把这些数据又写回文件系统。2.1. 查看默认数据库show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+可以看到有4个数据库是属于MySQL自带的系统数据库。mysql: MySQL系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。information_schema: MySQL 系统自带的数据库,这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为元数据。在系统数据库 information_schema 中提供了一些以 innodb_sys 开头的表,用于表示内部系统表。mysql> use information_schema;Database changedmysql> show tables like 'innodb_%';+-----------------------------------------+| Tables_in_information_schema (INNODB_%) |+-----------------------------------------+| INNODB_BUFFER_PAGE || INNODB_BUFFER_PAGE_LRU || INNODB_BUFFER_POOL_STATS || INNODB_CACHED_INDEXES || INNODB_CMP || INNODB_CMPMEM || INNODB_CMPMEM_RESET || INNODB_CMP_PER_INDEX || INNODB_CMP_PER_INDEX_RESET || INNODB_CMP_RESET || INNODB_COLUMNS || INNODB_DATAFILES || INNODB_FIELDS |......performance_schemaMySQL 系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控 MySQL 服务的各类性能指标 。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息。sysMySQL 系统自带的数据库,这个数据库主要是通过 视图 的形式把 information_schema 和 performance_schema 结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能。2.2. 数据库在文件系统中的表示使用 CREATE DATABASE 数据库名 语句创建一个数据库的时候,在文件系统上实际发生了什么呢? 其实很简单,每个数据库都对应数据目录下的一个子目录,或者说对应一个文件夹,每当新建一个数据库时,MySQL会帮我们做这两件事儿:1、在数据目录下创建一个和数据库名同名的字目录。2、在与该数据库名同名的字目录下创建一个名为db.opt的文件(仅限MySQL5.7及之前版本),这个文件中包含了该数据库的各种属性,比如该数据库的字符集和比较规则。首先看下这里的数据目录下的内容:# cd /var/lib/mysql# lltotal 122956-rw-r-----. 1 mysql mysql 56 Dec 31 14:05 auto.cnf-rw-------. 1 mysql mysql 1676 Dec 31 14:05 ca-key.pem-rw-r--r--. 1 mysql mysql 1112 Dec 31 14:05 ca.pem-rw-r--r--. 1 mysql mysql 1112 Dec 31 14:05 client-cert.pem-rw-------. 1 mysql mysql 1680 Dec 31 14:05 client-key.pemdrwxr-x---. 2 mysql mysql 54 Jan 2 14:39 dbdemo1drwxr-x---. 2 mysql mysql 56 Jan 2 15:03 dbdemo2-rw-r-----. 1 mysql mysql 562 Jan 2 14:55 ib_buffer_pool-rw-r-----. 1 mysql mysql 12582912 Jan 2 15:03 ibdata1-rw-r-----. 1 mysql mysql 50331648 Jan 2 15:03 ib_logfile0-rw-r-----. 1 mysql mysql 50331648 Dec 31 14:05 ib_logfile1-rw-r-----. 1 mysql mysql 12582912 Jan 2 14:55 ibtmp1drwxr-x---. 2 mysql mysql 4096 Dec 31 14:05 mysqlsrwxrwxrwx. 1 mysql mysql 0 Jan 2 14:55 mysql.sock-rw-------. 1 mysql mysql 6 Jan 2 14:55 mysql.sock.lockdrwxr-x---. 2 mysql mysql 8192 Dec 31 14:05 performance_schema-rw-------. 1 mysql mysql 1676 Dec 31 14:05 private_key.pem-rw-r--r--. 1 mysql mysql 452 Dec 31 14:05 public_key.pem-rw-r--r--. 1 mysql mysql 1112 Dec 31 14:05 server-cert.pem-rw-------. 1 mysql mysql 1676 Dec 31 14:05 server-key.pemdrwxr-x---. 2 mysql mysql 8192 Dec 31 14:05 sysdrwxr-x---. 2 mysql mysql 4096 Dec 31 15:21 testdb这个数据目录下的文件和子目录比较多,除了 information_schema 这个系统数据库外,其它的数据库都在数据目录下都有对应的子目录。以我的 testdb 数据库为例,在MySQL5.7中打开:# cd testdb# lltotal 1236-rw-r-----. 1 mysql mysql 8658 Dec 31 15:21 countries.frm-rw-r-----. 1 mysql mysql 114688 Dec 31 15:21 countries.ibd-rw-r-----. 1 mysql mysql 61 Dec 31 15:21 db.opt-rw-r-----. 1 mysql mysql 8716 Dec 31 15:21 departments.frm-rw-r-----. 1 mysql mysql 147456 Dec 31 15:21 departments.ibd-rw-r-----. 1 mysql mysql 3033 Dec 31 15:21 emp_details_view.frm-rw-r-----. 1 mysql mysql 8982 Dec 31 15:21 employees.frm-rw-r-----. 1 mysql mysql 180224 Dec 31 15:21 employees.ibd-rw-r-----. 1 mysql mysql 8660 Dec 31 15:21 job_grades.frm-rw-r-----. 1 mysql mysql 98304 Dec 31 15:21 job_grades.ibd-rw-r-----. 1 mysql mysql 8736 Dec 31 15:21 job_history.frm-rw-r-----. 1 mysql mysql 147456 Dec 31 15:21 job_history.ibd-rw-r-----. 1 mysql mysql 8688 Dec 31 15:21 jobs.frm-rw-r-----. 1 mysql mysql 114688 Dec 31 15:21 jobs.ibd-rw-r-----. 1 mysql mysql 8790 Dec 31 15:21 locations.frm-rw-r-----. 1 mysql mysql 131072 Dec 31 15:21 locations.ibd-rw-r-----. 1 mysql mysql 8610 Dec 31 15:21 order.frm-rw-r-----. 1 mysql mysql 98304 Dec 31 15:21 order.ibd-rw-r-----. 1 mysql mysql 8614 Dec 31 15:21 regions.frm-rw-r-----. 1 mysql mysql 114688 Dec 31 15:21 regions.ibd2.3. 表在文件系统中的表示我们的数据其实都是以记录的形式插入到表中的,每个表的信息其实可以分为两种:表结构的定义表中的数据表结构就是该表的名称,表里边有多少列,每个列的数据类型,约束条件和索引,使用的字符集和比较规则等各种信息,这些信息都体现在我们的建表语句中了。2.3.1. InnoDB存储引擎模式1.表结构为了保存表结构,InnoDB在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件,文件名是这样:表名.frm比如说我们在 testdb01 数据库下创建一个名为 test的表:mysql> use testdb01;Database changedmysql> create table test(c1 int);Query OK, 0 rows affected (0.03 sec)那在数据库 testdb01对应的子目录下就会创建一个名为 test.frm 的用于描述表结构的文件。.frm文件的格式在不同的平台上都是相同的。这个后缀为.frm是以二进制格式存储的,直接打开是乱码的。2.表中数据和索引InnoDB其实是使用页为基本单位来管理存储空间的,默认的页大小为16KB。对于InnoDB存储引擎来说,每个索引都对应一颗B+树,该B+树都每个节点都是一个数据页,数据页之间不必要是物理连续的,因为数据页之间有双向链表来维护着这些页的顺序。InnoDB的聚簇索引的叶子节点存储了完整的用户记录,也就是所谓的索引即数据,数据即索引。为了更好的管理这些页,InnoDB提出了一个表空间或者文件空间(英文名:table space或者file space)的概念,这个表空间是一个抽象的概念,它可以对应文件系统上一个或多个真实文件(不同表空间对应的文件数量可能不同)。每一个表空间可以被划分为很多个页,我么的表数据就存放在某个表空间下的某些页里。这里表空间有几种不同的类型:① 系统表空间(system tablespace)默认情况下,InnoDB会在数据目录下创建一个名为 ibdata1 、大小为 12M 的文件,这个文件就是对应的 系统表空间 在文件系统上的表示。怎么才12M?注意这个文件是 自扩展文件 ,当不够用的时候它会自己增加文件大小。当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的 ibdata1 这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,比如我们这样修改一下my.cnf 配置文件:[server]innodb_data_file_path=data1:512M;data2:512M:autoextend这样在MySQL启动之后就会创建两个512M大小的文件作为系统表空间,其中的autoextend表明这两个文件如果不够用会自动扩展data2文件的大小。需要注意一点的是,在一个MySQL服务器中,系统表空间只有一份。从MySQL5.5.7到MySQL5.6.6之间的各个版本中,我们表中的数据都会被默认存储到这个系统表空间。② 独立表空间(file-per-table tablespace)在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间 ,也就是说我们创建了多少个表,就有多少个独立表空间。使用 独立表空间 来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个 .ibd 的扩展名而已,所以完整的文件名称长这样:表名.ibd比如:我们使用了独立表空间去存储 testdb01 数据库下的 test 表的话,那么在该表所在数据库对应的 testdb01 目录下会为 test 表创建这两个文件:test.frmtest.ibd其中 test.ibd 文件就用来存储 test 表中的数据和索引。③ 系统表空间与独立表空间的设置我们可以自己指定使用 系统表空间 还是 独立表空间 来存储数据,这个功能由启动参数 innodb_file_per_table 控制,比如说我们想刻意将表数据都存储到 系统表空间 时,可以在启动 MySQL服务器的时候这样配置:[server]innodb_file_per_table=0 # 0:代表使用系统表空间; 1:代表使用独立表空间默认情况:mysql> show variables like 'innodb_file_per_table';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | ON |+-----------------------+-------+1 row in set (0.01 sec)说明:innodb_file_per_table参数到修改只对新建的表起作用,对于已经分配了表空间的表并不起作用。如果我们想把已经保存在系统表空间中的表转移到独立表空间,可以使用下面的语法:ALTER TABLE 表名 TABLESPACE [=] innodb_file_per_table;或者把已经存在独立表空间的表转移到系统表空间,可以使用下面的语法:ALTER TABLE 表名 TABLESPACE [=] innodb_system;④ 其他类型的表空间随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用 表空间(general tablespace)、临时表空间(temporary tablespace)等。3.疑问.frm在MySQL8中不存在了,那去哪里了呢?这就需要解析ibd文件,Oracle官方将frm文件的信息以及更多信息移动到叫做序列化字典信息(Serialized Dictionary Information,SDI)SDI被写在ibd文件内部。MySQL8.0属于Oracle旗下,同理。为了从IBD文件中提取SDI信息,Oracle提供了一个应用程序ibd2sdi。ibd2sdi官方文档这个工具不需要下载, MySQL8自带的有,只要你配置好环境变量就能使用。(1)查看表结构到存储ibd文件到目录下,执行下面的命令:ibd2sdi --dump-file=test.txt test.ibd说明:--dump-file参数指定输出的文件路径。如这里输出到test.txt中,输出到文件内容为json格式,查看该文件部分内容如下:图中标记部分从上到下分别表示表名列列名列的长度通过上面的测试结果可以发现,MySQL8把之前版本的frm文件合并到ibd文件中了。2.3.2. MyISAM存储引擎模式1.表结构在存储表结构方面, MyISAM 和 InnoDB 一样,也是在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件:表名.frm2.表中数据和索引在MyISAM中的索引全部都是 二级索引 ,该存储引擎的 数据和索引是分开存放 的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。假如 test 表使用MyISAM存储引擎的话,那么在它所在数据库对应的 testdb01 目录下会为 test 表创建这三个文件:test.frm 存储表结构test.MYD 存储数据(MYData)test.MYI 存储索引(MYIndex)其中test.MYD代表表的数据文件,也就是我们插入的用户记录。采用独立表存储模式,每个表对应一个MYD文件;test.MYI代表表的索引文件,我们为该表创建的索引都会放到这个文件中。举例:创建一个MyISAM表,使用ENGINE选项显著指定引擎。因为InnoDB是默认引擎。CREATE TABLE `student_myisam` ( `id` bigint NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NULL, `age` int DEFAULT NULL, `sex` varchar(2) DEFAULT NULL, PRIMARY KEY (`id`))ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3;在MySQL8版本中:(1)进入数据库目录包含三个文件:student_myisam_404.sdi -- 存储元数据student_myisam.MYD -- 存储数据student_myisam.MYI -- 存储索引对于InnoDB表,SDI与InnoDB用户表空间中的数据一起存储。对于MyISAM和其它存储引擎,它被写入数据目录中的.sdi文件。在MySQL 8.0中,MyISAM存储引擎不提供分区支持。在以前版本的 MySQL 中创建的分区 MyISAM 表不能在MySQL8.0中使用。在MySQL5.7版本中:(1)进入数据库目录包含三个文件:student_myisam.frm -- 存储元数据student_myisam.MYD -- 存储数据student_myisam.MYI -- 存储索引可以发现,在之前的数据库版本中,MyISAM引擎已存在frm文件,但是在MySQL8之后也和InnoDB引擎一样去掉了,放入了sdi文件中。蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索。
现在很多企业网站或个人网站都是选择搭建在云服务器上,虽说这些网站的安全性比起搭建在传统服务器上的网站来说是更加安全的,但平时的维护也需要我们站长多加小心,以免被恶意挂马,导致网站被惩罚。最近,换了新的云服务器,选购的是Windows Server 2008 R2的系统,很多安全设置就要重新做了,对于一些基本设置及基本安全策略,在网上搜了一下,整理大概有以下这些要点,如果有不足的设置,希望大家帮忙提出哈!首先,先说几个比较重要的部分:1、更改默认administrator用户名,复杂密码2、开启防火墙3、安装杀毒软件细节部分包含:1、新做系统一定要先打上补丁2、安装必要的杀毒软件3、删除系统默认共享4、修改本地策略——>安全选项交互式登陆:不显示最后的用户名 启用网络访问:不允许SAM 帐户和共享的匿名枚举 启用网络访问: 不允许存储网络身份验证的凭据或 .NET Passports 启用网络访问:可远程访问的注册表路径和子路径 全部删除5、禁用不必要的服务TCP/IP NetBIOS Helper、Server、 Distributed Link Tracking Client 、Print Spooler、Remote Registry、Workstation6、禁用IPV6server 2008 r2交互式登录: 不显示最后的用户名其实最重要的就是开启防火墙+服务器安全狗(安全狗自带的一些功能基本上都设置的差不多了)+mysql(sqlserver)低权限运行基本上就差不多了。3389远程登录,一定要限制ip登录。一、系统及程序1、屏幕保护与电源桌面右键--〉个性化--〉屏幕保护程序,屏幕保护程序 选择无,更改电源设置 选择高性能,选择关闭显示器的时间 关闭显示器选“从不”保存修改。2、配置IIS7组件、FTP7、php 5.5.7、mysql 5.6.15、phpMyAdmin 4.1.8、phpwind 9.0、ISAPI_Rewrite环境。在这里我给大家可以推荐下阿里云的服务器一键环境配置,全自动安装设置很不错的(具体可查看马海祥博客《云主机iis_php_mysql一键安装包》的相关介绍)。二、安全配置接下来,我们重点讲一下系统上的安全配置,旨在指导系统管理人员或安全检查人员进行Windows操作系统的安全合规性检查和配置,需要的朋友可以参考下:1、目录权限除系统所在分区之外的所有分区都赋予Administrators和SYSTEM有完全控制权,之后再对其下的子目录作单独的目录权限。2、远程连接我的电脑属性--〉远程设置--〉远程--〉只允许运行带网络超级身份验证的远程桌面的计算机连接,选择允许运行任意版本远程桌面的计算机连接(较不安全)。备注:方便多种版本Windows远程管理服务器。windows server 2008的远程桌面连接,与2003相比,引入了网络级身份验证(NLA,network level authentication),XP SP3不支持这种网络级的身份验证,vista跟win7支持。然而在XP系统中修改一下注册表,即可让XP SP3支持网络级身份验证。HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa在右窗口中双击Security Pakeages,添加一项“tspkg”。HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\SecurityProviders,在右窗口中双击SecurityProviders,添加credssp.dll;请注意,在添加这项值时,一定要在原有的值后添加逗号后,别忘了要空一格(英文状态)。然后将XP系统重启一下即可。再查看一下,即可发现XP系统已经支持网络级身份验证。3、修改远程访问服务端口更改远程连接端口方法,可用windows自带的计算器将10进制转为16进制。更改3389端口为8208,重启生效!Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\Wds\\\\rdpwd\\\\Tds\\\\tcp]"PortNumber"=dword:0002010[HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp]"PortNumber"=dword:00002010(1)、在开始--运行菜单里,输入regedit,进入注册表编辑,按下面的路径进入修改端口的地方(2)、HKEY_LOCAL_MACHINE\\\\System\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp(3)、找到右侧的 "PortNumber",用十进制方式显示,默认为3389,改为(例如)6666端口(4)、HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\Wds\\\\rdpwd\\\\Tds\\\\tcp(5)、找到右侧的 "PortNumber",用十进制方式显示,默认为3389,改为同上的端口(6)、在控制面板--Windows 防火墙--高级设置--入站规则--新建规则(7)、选择端口--协议和端口--TCP/特定本地端口:同上的端口(8)、下一步,选择允许连接(9)、下一步,选择公用(10)、下一步,名称:远程桌面-新(TCP-In),描述:用于远程桌面服务的入站规则,以允许RDP通信。[TCP 同上的端口](11)、删除远程桌面(TCP-In)规则(12)、重新启动计算机4、配置本地连接网络--〉属性--〉管理网络连接--〉本地连接,打开“本地连接”界面,选择“属性”,左键点击“Microsoft网络客户端”,再点击“卸载”,在弹出的对话框中“是”确认卸载。点击“Microsoft网络的文件和打印机共享”,再点击“卸载”,在弹出的对话框中选择“是”确认卸载。解除Netbios和TCP/IP协议的绑定139端口:打开“本地连接”界面,选择“属性”,在弹出的“属性”框中双击“Internet协议版本(TCP/IPV4)”,点击“属性”,再点击“高级”—“WINS”,选择“禁用TCP/IP上的NETBIOS”,点击“确认”并关闭本地连接属性。禁止默认共享:点击“开始”—“运行”,输入“Regedit”,打开注册表编辑器,打开注册表项“HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Services\\\\lanmanserver\\\\parameters”,在右边的窗口中新建Dword值,名称设为AutoShareServer,值设为“0”。关闭 445端口:HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Services\\\\NetBT\\\\Parameters,新建 Dword(32位)名称设为SMBDeviceEnabled 值设为“0”5、共享和发现右键“网络” 属性 网络和共享中心 共享和发现。关闭,网络共享,文件共享,公用文件共享,打印机共享,显示我正在共享的所有文件和文件夹,显示这台计算机上所有共享的网络文件夹。6、防火墙的设置控制面板→Windows防火墙设置→更改设置→例外,勾选FTP、HTTP、远程桌面服务 核心网络。HTTPS用不到可以不勾3306:Mysql1433:Mssql更多服务器安全设置的内容,可以关注蓝队云技术支持库,云服务器相关技术操作全在这里了。
Mysql运行sql报错:Invalid ON UPDATE clause for 'createTime' column 欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。 Mysql运行sql报错:Invalid ON UPDATE clause for 'createTime' column的解决办法从高版本的mysql导出SQL文件,然后运行SQL文件到低版本的mysql:如果表中存在datetime字段,如下: 运行SQL文件时,将出现如下错误:[Err] 1294 - Invalid ON UPDATE clause for 'createTime' column 解决办法:将`createTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,语句中的ON UPDATE CURRENT_TIMESTAMP去掉即可。 原因:高版本的mysql转储的sql文件中,datetime字段都如上图所示,但是低版本的mysql不认识ON UPDATE CURRENT_TIMESTAMP,所以报错。 举一反三: 1:如果低版本的mysql转储的sql文件,在高版本的mysql中运行是没有问题的。 2:承接1,高版本的mysql再转储出来的sql文件中,datetime字段也是不带ON UPDATE CURRENT_TIMESTAMP的(即在低版本的MySQL中运行是没问题的)。 3:承接1,如果在高版本的mysql中增加了datetime字段,则再转储出来的sql文件中,datetime字段是带ON UPDATE CURRENT_TIMESTAMP的(即在低版本的MySQL中运行是有问题的)。 蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索。
在现代网络通信中,HTTP协议状态码是用来指示HTTP请求的结果以及服务器对请求的处理情况的重要工具。每个HTTP状态码都代表了不同的响应信息,这些响应信息能帮助开发人员了解请求是否成功,是否需要进一步操作,或者是否发生了错误。无论是在网站开发、API调试,还是在系统运维中,状态码监测都至关重要,它能够帮助我们及时发现和解决问题,提升系统的稳定性和用户体验。HTTP协议状态码一共有5种类别,分别是1xx,2xx,3xx,4xx,5xx 用2位数字来表示不同的错误: 1XX类状态码信息表示:临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1XX响应 2XX类状态码信息表示:服务器成功的接收了客户端请求 3XX类状态码信息表示:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同页面,或者通过代理服务器重复该请求 4XX类状态码信息表示:发生错误,客户端似乎有问题。例如:客户端请求不存在的页面,客户端为提供有效的身份验证信息 5XX类状态码信息表示:服务器遇到错误而不能完成该请求常见的:100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本200——交易成功201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到,但返回信息为空205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件206——服务器已经完成了部分用户的GET请求300——请求的资源可在多处得到301——删除请求数据302——在其他地址发现了请求数据303——建议客户访问其他URL或访问方式304——客户端已经执行了GET,但文件未变化305——请求的资源必须从服务器指定的地址得到306——前一版本HTTP中使用的代码,现行版本中不再使用307——申明请求的资源临时性删除400——错误请求,如语法错误401——请求授权失败402——保留有效ChargeTo头响应403——请求不允许404——没有发现文件、查询或URl405——用户在Request-Line字段定义的方法不允许406——根据用户发送的Accept拖,请求资源不可访问407——类似401,用户必须首先在代理服务器上得到授权408——客户端没有在用户指定的饿时间内完成请求409——对当前资源状态,请求不能完成410——服务器上不再有此资源且无进一步的参考地址411——服务器拒绝用户定义的Content-Length属性请求412——一个或多个请求头字段在当前请求中错误413——请求的资源大于服务器允许的大小414——请求的资源URL长于服务器允许的长度415——请求资源不支持请求项目格式416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求500——服务器产生内部错误501——服务器不支持请求的函数502——服务器暂时不可用,有时是为了防止发生系统过载503——服务器过载或暂停维修504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长505——服务器不支持或拒绝支请求头中指定的HTTP版本1XX:信息性状态码2XX:成功状态码3XX:重定向状态码4XX:客户端错误状态码5XX:服务器端错误状态码"100":Continue"101":witchingProtocols"200":OK"201":Created"202":Accepted"203":Non-AuthoritativeInformation"204":NoContent"205":ResetContent"206":PartialContent"300":MultipleChoices"301":MovedPermanently"302":Found"303":SeeOther"304":NotModified"305":UseProxy"307":TemporaryRedirect"400":BadRequest"401":Unauthorized"402":PaymentRequired"403":Forbidden"404":NotFound"405":MethodNotAllowed"406":NotAcceptable"407":ProxyAuthenticationRequired"408":RequestTime-out"409":Conflict"410":Gone"411":LengthRequired"412":PreconditionFailed"413":RequestEntityTooLarge"414":Request-URITooLarge"415":UnsupportedMediaType"416":Requestedrangenotsatisfiable"417":ExpectationFailed"500":InternalServerError"501":NotImplemented"502":BadGateway"503":ServiceUnavailable"504":GatewayTime-out"505":HTTPVersionnotsupported一、HTTP状态码1**:请求收到,继续处理2**:操作成功收到,分析、接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请求失败二、状态码监测的作用状态码监测的主要作用是检测网络请求的状态,判断请求是否成功、服务器是否正常处理请求,以及可能出现的错误。通过状态码监测,可以及时发现和解决网络问题,提高系统的可用性和稳定性。三、状态码监测的优点快速定位问题:状态码监测可以帮助开发人员快速定位问题所在,例如出现500错误,则可以判断服务器端出现了问题。通过查看状态码,开发人员可以迅速定位到问题的类型,而不是逐一排查其他可能的原因。提升用户体验:通过状态码监测,开发人员可以及时发现请求是否成功,服务器是否正常处理请求。如果请求失败或服务器出现错误,开发人员可以迅速采取相应的措施,例如返回错误信息给用户,告知用户请求未能完成或稍后再试。这有助于提升用户体验,增强用户对系统的信任度。提高系统可用性:状态码监测可以帮助开发人员及时发现和解决系统中的问题,避免因网络问题导致系统崩溃或无法正常使用。同时,通过状态码监测,开发人员可以监控系统的运行状况,及时发现潜在的问题并进行修复,从而提高系统的可用性和稳定性。便于故障排查:状态码监测可以帮助开发人员进行故障排查,例如出现502错误,则可能是代理服务器出现问题。通过查看状态码和相关的日志信息,开发人员可以迅速定位到问题的根源,并采取相应的措施进行修复。辅助监控和预警:状态码监测可以辅助系统监控和预警的实现。通过对状态码的监控和分析,可以及时发现异常情况,例如出现大量的404错误或500错误。开发人员可以根据实际情况设置预警规则,当出现异常情况时自动触发预警通知相关人员进行处理。四、如何进行状态码监测进行状态码监测的方法有很多种,下面介绍几种常见的方法:1、使用HTTP状态码检测工具可以使用一些专门的HTTP状态码检测工具来检测状态码,例如curl、Postman等。这些工具可以发送HTTP请求并显示返回的状态码,方便开发者进行状态码监测。2、在代码中捕获异常在编写网络请求的代码时,可以通过捕获异常来检测状态码。例如,在使用Python的requests库时,可以通过try/except语句来捕获可能出现的异常,并根据异常类型判断状态码的类型和具体状态。3、使用日志记录可以在服务器端或客户端的代码中添加日志记录,记录请求的状态码和相关信息。通过查看日志文件,可以方便地了解请求的状态和可能出现的错误。五、如何处理不同类型的状态码根据不同的状态码类型,可以采取不同的处理方式:2xx状态码:主要是根据具体的业务需求进行相应的业务逻辑处理。例如,在处理POST请求时,如果返回200 OK状态码,则表示请求成功,可以根据业务需求更新数据库或执行其他相关操作。如果返回204 No Content状态码,则表示服务器成功处理了请求,但客户端不需要进一步操作,此时可以直接结束请求处理或返回空数据给客户端。需要注意的是,虽然2xx状态码表示请求已成功被处理,但在实际处理过程中可能仍然会出现一些错误或异常情况。因此,在实际应用中,还需要结合具体的业务需求和错误处理机制,对可能出现的异常情况进行捕获和处理,以确保系统的稳定性和可用性。同时,也需要对返回的状态码进行合理的判断和处理,以提供更好的用户体验和系统性能。4xx状态码:400 Bad Request:该状态码表示请求存在语法错误或无法被服务器理解。常见的原因包括请求参数格式错误、请求头信息不合法等。处理方式包括仔细检查请求参数和头部信息,确保格式正确并提供清晰的错误消息指导用户提供正确的参数。401 Unauthorized:该状态码表示请求需要身份验证,但未提供有效的凭证。处理方式包括确保正确处理和验证用户凭证,提供明确的错误消息指导用户提供有效的凭证,并使用适当的身份验证机制,如基本认证或令牌认证。403 Forbidden:该状态码表示服务器理解请求,但拒绝执行。常见的原因包括请求的权限和访问控制设置不正确、服务器配置错误等。处理方式包括检查请求的权限和访问控制设置,提供明确的错误消息指导用户了解请求被拒绝的原因,并确保服务器配置正确以避免误报403错误。404 Not Found:该状态码表示请求的资源不存在。常见的原因包括请求的URL路径不正确、资源不存在等。处理方式包括仔细检查请求的URL路径和资源是否正确,提供清晰的错误消息指导用户找到正确的资源或执行其他操作,并考虑使用自定义404页面提供更好的用户体验。在处理4xx状态码时,还需要注意以下几点:根据具体的业务需求和错误处理机制,对可能出现的异常情况进行捕获和处理,以确保系统的稳定性和可用性。在返回错误时,提供清晰的错误消息和适当的反馈,以帮助用户理解和解决问题。同时,确保错误消息符合统一的标准和规范,以提高用户体验和系统的可维护性。针对不同的错误码和问题,采取相应的措施进行修复和预防。例如,对于400 Bad Request,可以加强输入验证和数据校验;对于401 Unauthorized,可以优化身份验证机制;对于403 Forbidden,可以调整访问控制策略等。5xx状态码:500 Internal Server Error:该状态码表示服务器遇到了一个意外的情况,导致无法完成请求。处理方式包括查看服务器端的日志信息,了解详细的错误信息和原因,然后根据具体情况进行修复。常见的解决方法包括优化服务器性能、增加服务器资源、修复服务器端的代码问题等。502 Bad Gateway:该状态码表示网关错误,通常是由于服务器作为网关或代理时,接收到了无效的请求或无法处理请求。处理方式包括检查服务器的网络连接和配置,确保服务器能够正确地处理请求。此外,还需要检查上游服务器(例如代理服务器)的配置和状态,确保它们能够正常地提供请求。503 Service Unavailable:该状态码表示服务器当前无法处理请求,通常是由于服务器过载或正在进行维护。处理方式包括优化服务器性能、增加服务器资源、采取负载均衡策略分散请求到多台服务器等。此外,还可以考虑调整服务器的配置和资源分配,以更好地应对高负载的情况。504 Gateway Timeout:该状态码表示网关超时,通常是由于服务器作为网关或代理时,未能在规定的时间内完成请求。处理方式包括检查服务器的网络连接和配置,确保服务器能够及时地响应请求。此外,还需要优化服务器的性能和响应时间,以减少超时的可能性。在处理5xx状态码时,还需要注意以下几点:仔细查看服务器端的日志信息,了解详细的错误信息和原因。这有助于定位问题的根源,并采取相应的措施进行修复。根据具体的状态码和业务需求,采取适当的措施进行修复和预防。例如,对于500 Internal Server Error,可以优化服务器性能、修复代码问题等;对于502 Bad Gateway,可以检查服务器的网络连接和配置等。加强系统的监控和预警机制,及时发现和解决潜在的问题。例如,可以设置监控报警规则,当出现异常情况时自动触发报警通知相关人员进行处理。在开发和调试过程中,注重代码的规范性和可维护性,减少出现服务器端错误的概率。例如,遵守代码规范、加强输入验证和数据校验等。六、总结通过对HTTP状态码的了解和监测,开发人员能够快速定位网络请求中的问题,提升用户体验,确保系统的高可用性和稳定性。状态码不仅是网络请求的重要反馈信息,也是开发、运维过程中不可或缺的工具。不断优化状态码监测机制并做好错误处理,是保证系统稳定运行的关键。通过灵活应用状态码的监测,可以为用户提供更加流畅和高效的服务。想了解更多免费技术学习文档欢迎上蓝队云官网查询,蓝队云期待与您一起探索。
Linux,作为一种开源操作系统,因其稳定性和安全性而备受青睐。尽管如此,Linux 系统依然面临着各种安全风险,从恶意软件到网络攻击,都可能威胁到其正常运行和数据安全。今天蓝队云将总结的 12 种在 Linux 环境中使用的网络安全工具分享给大家,希望能帮助大家更好地应对挑战。介绍Linux 是一款功能强大且用途广泛的操作系统,受到开发人员和高级用户的广泛使用。尽管 Linux 以安全著称,但它并不能免受安全威胁。事实上,使用 Linux 会带来许多安全风险。幸运的是,有许多工具可以帮助您保护 Linux 系统。在本文中,我们将介绍 10 种适用于 Linux 的最佳网络安全工具。1. 防火墙防火墙是确保安全的重要工具。它可以帮助您阻止可能对系统有害的传入流量。Linux 有许多不同的防火墙,例如 iptables、firewalld 和 ufw。2. SELinuxSELinux 是 Linux 内核内置的安全功能。它提供了一种控制系统上文件和资源访问的方法。SELinux 可用于防止未经授权访问敏感文件,从而提高系统的安全性。3. AppArmorAppArmor 是 Linux 内核内置的另一项安全功能。它提供了一种控制系统上程序权限的方法。AppArmor 可用于通过阻止程序访问其不应访问的文件来提高系统的安全性。4. GnuPGGnuPG 是一款可用于加密和签名数据的工具。它可通过加密您的电子邮件和文件来保护您的隐私。GnuPG 还可用于验证已签名文档的真实性。5. SSHSSH 是一种可用于安全连接到另一台计算机的工具。它可用于远程访问系统或在计算机之间传输文件。SSH 还可用于通过网络隧道传输流量。6. VPNVPN 是一种可用于安全连接到其他网络的工具。VPN 可用于连接到专用网络或互联网。VPN 还可用于绕过防火墙或加密您的流量。一些流行的 VPN 协议包括 WireGuard、IPSec 和 OpenVPN。7. TorTor 是一款可用于匿名浏览互联网的工具。Tor 会加密您的流量并通过计算机网络路由,从而使您的活动难以追踪。8.RkhunterRkhunter 是一款可用于扫描系统中的 rootkit 的工具。Rootkit 是一种恶意软件,可用于未经授权访问系统。Rkhunter 可以帮助您检测并删除系统中的 rootkit。9.LynisLynis 是一款开源安全审计工具。它可用于扫描系统中的漏洞并报告系统的安全性。Lynis 可以帮助您强化系统并提高其安全性。10. ChkrootkitChkrootkit 是一款可用于扫描系统中是否存在 rootkit 的工具。Rootkit 是一种恶意软件,可用于未经授权访问系统。Chkrootkit 可以帮助您检测并从系统中移除 rootkit。11. TripwireTripwire 是一种可用于监视系统变化的工具。Tripwire 可用于检测文件、配置和已安装程序的变化。Tripwire 可帮助您检测和调查潜在的安全漏洞。12. OssimOssim 是一款可用于监控和管理安全数据的工具。Ossim 可用于从各种安全设备(如入侵检测系统和防火墙)收集数据。Ossim 可帮助您检测和应对安全事件。通过部署和使用这些网络安全工具,Linux 用户可以显著提升系统的安全性,减少潜在的安全漏洞和攻击面。无论是个人用户还是企业环境,定期使用这些工具进行安全审计和防护措施的更新,都是确保 Linux 系统安全稳定运行的关键。安全从来不是一蹴而就的过程,而是持续监控和优化的结果。希望我介绍的这些工具能够为大家提供有效的安全防护方案。更多技术知识可上蓝队云官网免费查询,蓝队云期待与您一起探索。
在Linux操作系统中,命令行工具提供了强大的功能,使得用户能够高效地处理各种任务。Awk命令作为其中一个重要的文本处理工具,以其简单、灵活的语法和强大的功能,成为了Linux用户日常编程和数据处理中的得力助手。无论是数据提取、格式转换,还是自动化报告生成,Awk都能提供优雅的解决方案。今天,蓝队云将带大家深入了解Awk命令的使用方式,帮助你更好地掌握这一强大工具。引言Linux作为开源操作系统的代表,其强大的命令行工具使得数据处理变得高效便捷。今天,我们将深入探讨Linux中的Awk命令,助你提升编程技能。什么是Awk命令?Awk是一种强大的文本处理工具,常用于模式扫描和处理。它能够对文本数据进行复杂的处理,如数据提取、转换和报告生成。基本语法awk 'pattern { action }' filepattern:匹配模式action:执行动作file:待处理的文件常用内置变量NR:记录数NF:字段数$0:当前记录$1, $2, ...:第1, 2, ...个字段实例解析示例1:打印特定列awk '{ print $2 }' data.txt此命令打印文件data.txt中的第二列。示例2:匹配特定模式awk '/Linux/ { print $0 }' data.txt此命令打印包含Linux的行。示例3:计算平均值awk '{ total += $2 } END { print total/NR }' data.txt此命令计算第二列的平均值。高级用法条件语句awk '$2 > 100 { print $0 }' data.txt打印第二列大于100的行。循环语句awk '{ for(i=1; i<=NF; i++) print $i }' data.txt打印所有字段。总结Awk命令不仅仅是一个文本处理工具,更是Linux中强大命令行环境的一部分。通过掌握Awk的基本语法和一些高级用法,你可以高效地处理各种数据,提升你的编程能力。希望通过本文的介绍,能让大家对Awk有一个全面的理解。想了解更多Linux命令欢迎上蓝队云官网查询,更多免费技术学习文档,蓝队云期待与您一起探索。
如今数据库管理成为了众多领域不可或缺的关键技能。MySQL 作为一款广受欢迎的开源数据库管理系统,其操作的熟练掌握尤为重要。今天蓝队云将深入探讨 MySQL 中关于数据表及数据处理的核心操作。一、MySQL创建数据表(CREATE TABLE语句)在创建数据库之后,接下来就要在数据库中创建数据表。所谓创建数据表,指的是在已经创建的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。接下来我们介绍一下创建数据表的语法形式。在 MySQL 中,可以使用 CREATE TABLE 语句创建表。其语法格式为:CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];CREATETABLE命令语法比较多,其主要是由表创建定义(create-definition)、表选项(table-options)和分区选项(partition-options)所组成的。mysql> USE test_db;Database changedmysql> CREATE TABLE tb_emp1 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec)语句执行后,便创建了一个名称为 tb_emp1 的数据表,使用 SHOW TABLES;语句查看数据表是否创建成功,如下所示。mysql> SHOW TABLES;+--------------------+| Tables_in_test_db |+--------------------+| tb_emp1 |+--------------------+1 rows in set (0.00 sec)MySQL 使用 ALTER TABLE 语句修改表。常用的修改表的操作有修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。使用 ALTER TABLE 修改表 tb_emp1 的结构,在表的第一列添加一个 int 类型的字段 col1,输入的 SQL 语句和运行结果如下所示。mysql> ALTER TABLE tb_emp1 -> ADD COLUMN col1 INT FIRST; Query OK, 0 rows affected (0.94 sec)在MySQL数据库中,对于不再需要的数据表,我们可以将其从数据库中删除。在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。使用 DROP TABLE 语句可以删除一个或多个数据表。删除数据表 tb_emp1,输入的 SQL 语句和运行结果如下所示。mysql> DROP TABLE tb_emp1;Query OK, 0 rows affected (0.22 sec)二、MySQL INSERT:插入数据(添加数据)数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。1) INSERT…VALUES语句-- INSERT VALUES 的语法格式为:INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]VALUES (值1) [… , (值n) ];语法说明如下。<表名>:指定被操作的表名。<列名>:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。VALUES 或 VALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。2) INSERT…SET语句-- 语法格式为:INSERT INTO <表名>SET <列名1> = <值1>,<列名2> = <值2>在 tb_courses 表中插入一条新记录,course_id 值为 1,course_name 值为“Network”,course_grade 值为 3,info 值为“Computer Network”。mysql> INSERT INTO tb_courses -> (course_id,course_name,course_grade,course_info) -> VALUES(1,'Network',3,'Computer Network'); Query OK, 1 rows affected (0.08 sec)三、MySQL DELETE:删除数据在 MySQL 中,可以使用 DELETE 语句来删除表的一行或者多行数据。使用 DELETE 语句从单个表中删除数据,语法格式为:DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]语法说明如下:<表名>:指定要删除数据的表名。ORDER BY 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。LIMIT 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。注意:在不使用 WHERE 条件的时候,将删除所有数据。在 tb_courses_new 表中,删除 course_id 为 4 的记录,输入的 SQL 语句和执行结果如下所示。mysql> DELETE FROM tb_courses -> WHERE course_id=4; Query OK, 1 row affected (0.00 sec)四、MySQL UPDATE:修改数据(更新数据)在 MySQL 中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。使用 UPDATE 语句修改单个表,语法格式为:UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ][ORDER BY 子句] [LIMIT 子句]语法说明如下:<表名>:用于指定要更新的表名称。SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。ORDER BY 子句:可选项。用于限定表中的行被修改的次序。LIMIT 子句:可选项。用于限定被修改的行数。注意:修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。在 tb_courses_new 表中,更新所有行的 course_grade 字段值为 4,输入的 SQL 语句和执行结果如下所示。mysql> UPDATE tb_courses_new -> SET course_grade=4; Query OK, 3 rows affected (0.11 sec) Rows matched: 4 Changed: 3 Warnings: 0五、MySQL SELECT:数据表查询语句MySQL表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段、查询指定字段、查询指定记录、查询空值、多条件的查询、对查询结果进行排序等。从数据表中查询数据的基本语句为 SELECT 语句,基本格式如下:SELECT{* | <字段列名>}[FROM <表 1>, <表 2>…[WHERE <表达式>[GROUP BY <group by definition>[HAVING <expression> [{<operator> <expression>}…]][ORDER BY <order by definition>][LIMIT[<offset>,] <row count>]]查询 tb_students_info 表中的所有数据,输入的 SQL 语句和执行结果如下所示。mysql> SELECT id,name,dept_id,age,sex,height,login_date -> FROM tb_students_info;以上,就是关于Mysql对于表创建和其增删改查的基本操作,但是在实际工作中,其实大多数的操作都是在进行查询,比如大家常听的SQL boy、SQL gril等,主要工作就是写SQL查询语句进行数据提数和分析。下面,我们重点对查询,结合关键字和实际用途做一个更详细的总结。数据库和表的查询--显示所有数据库:SHOW DATABASES;--显示所有的表:SHOW TABLES;--查看表结构DESC 表名;-- 查看表的创建语句SHOW CREATE TABLE 表名;查询表--查询表中的姓名和年龄SELECT 姓名,年龄 FROM 表名 ;--查询表中id乘50和姓名的结果SELECT id*50,姓名 FROM 表名;--给乘50的列名加个注释:as "字符串",可以把as去掉也能显示注释名SELECT id*50 as "乘50",姓名 FROM 表名;查询去重 DISTINCTdistinct:作用范围是后面所有字段的组合(可以有多个字段)-- 查询时去除重复项(表名表中列名,内容去重)SELECT DISTINCT 列名,列名 FROM 表名;查询排序 ORDER BYSELECT DISTINCT 年龄,姓名 FROM 表名 ORDER BY 年龄;--按年龄排序,展示年龄姓名两列数据SELECT DISTINCT 年龄,姓名 FROM 表名 ORDER BY 年龄,姓名;--展示年龄和姓名的前提下,按年龄理相同,姓名不同的排序(默认从低到高)SELECT DISTINCT 年龄,姓名 FROM 表名 ORDER BY 年龄,姓名 DESC;--展示年龄和姓名的前提下,按年龄理相同,姓名不同的排序(DESC是倒叙)SELECT DISTINCT 年龄,姓名 FROM 表名 ORDER BY 年龄,姓名 ASC;--排列顺序从低到高(默认)`(ASC是正序,默认就是正序,一般不用)`查询限定 WHERE(<= , >=) / LIKESELECT 年龄,姓名 FROM 表名 WHERE 年龄>20;-- 查出所有年龄超过20岁的人SELECT 年龄,姓名 FROM 表名 WHERE 年龄>20 AND 姓名="张三";--查出某个国家所有年龄超过20且叫张三的人(注意:后边是汉字的要加双引号)SELECT 年龄,姓名 FROM 表名 WHERE 年龄=21 OR 年龄=67;--查出年龄为21或者67的人模糊查询 like:--查询表中叫王某的人有谁SELECT 姓名 FROM 表名 WHERE 姓名 LIKE "王%";-- WHERE 子句中可以使用等号 = 来设定获取数据的条件, country=中国’但是有时候我们需要获取含有某个字符的所有记录,这时我们就需要在 WHERE 子句中使用 LIKE 子句SELECT 年龄,姓名 FROM 表名 WHERE age>20 AND 姓名 LIKE ‘王%';SELECT 年龄,姓名 FROM 表名 WHERE age>20 AND 姓名 LIKE ‘%四';-- SQL LIKE 子句中使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的分页查询在查询时可以只检索前几条或者中间某几行数据(数据量很大时)SELECT * FROM t_user LIMIT 0,3; --(从第一行开始,查询3条数据)limit 后面的第一个数字设置从哪里开始检索(从0开始)limit 后面的第二个数字是设置每页显示多少条(3,4代表从第四行查询三条数据)聚合函数统计总数 count()为了快速得到统计数据(多条数据的统计结果),提供了5个聚合函数count():查询表中某项数据一共包含多少条(统计总数)--查询表中共包含多少条数据(会检索所有列)SELECT COUNT(*) FROM 表名;--查询表中一共有多少个人且年龄大于20的(只会检索一列)SELECT COUNT(年龄) FROM renshi WHERE 年龄>20;推荐使用第二种写法,可以提高效率。统计一般计算的值--`max(列)`:求此列的最大值SELECT MAX(age) FROM 表名 ;--`min(列)`:求此列的最小值SELECT MIN(age) FROM 表名 ;--`sum(列)`:求此列的和SELECT SUM(age) FROM 表名 ;--`avg(列)`:求此列的平均值SELECT AVG(age) FROM 表名 ;--查出总人数、最大年龄、最小年龄、年龄的总和、平均年龄SELECT COUNT(姓名),MAX(年龄),MIN(年龄),SUM(年龄),AVG(年龄) FROM 表名 ;分组:group by将表中数据分成若干小组,例如分为男人和女人,不同国籍等等。-- 查看每个国家有多少人SELECT COUNT(*) FROM 表名 GROUP BY 国家;--(先根据group by查询国家,再查询有多少人)--查看每个国家的平均年龄SELECT AVG(年龄) FROM 表名 GROUP BY 国家;--查看每个国家的总人数,年龄总和,平均年龄,最高年龄,最低年龄SELECT country,COUNT(uname),SUM(age),AVG(age),MAX(age),MIN(age) FROM t_user GROUP BY country;--查看每个国家的总人数,年龄总和,平均年龄,最高年龄,最低年龄,但是排除某个国家SELECT 国家,COUNT(姓名),SUM(age),AVG(age),MAX(age),MIN(age) FROM表名 WHERE country!='吴国' GROUP BY country;--列出每个国家小于20岁的人SELECT 国家,名字 FROM 表名 WHERE age<20 GROUP BY 国家;过滤:havingSELECT 列名 FROM 表名 WHERE 过滤条件。使用where,可以用来过滤单行,如果想要过滤分组之后的数据,要加having。-- 显示每个国家的平均年龄,但是仅显示那些总年龄超过100的国家,having在聚合后对组记录进行筛选SELECT country,AVG(age) FROM 表名 GROUP BY country HAVING SUM(age)>100;--注意顺序:having放在分组之后,因为作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组分组查询和过滤:having 和 where:WHERE 在分组和聚合计算之前进行选取(它控制哪些行进入聚合计算),因此,WHERE 子句不能包含聚合函数。HAVING 在分组和聚合之后选取分组的行,而且HAVING 子句总是包含聚集函数。(严格来讲,你可以写不使用聚集的 HAVING 子句, 但同样的条件用WHERE更有效)综上所述:having要跟在group by(分组)之后,对分组查询的结果进行过滤(过滤分组),where要出现在group by(分组)之前,执行表中所有数据来进行过滤(过滤行),另外,having可以用聚合函数,并支持所有where子句操作符。where子句操作符:<,>,=,!=,>=,<=,and,not,or,like其中 <,>,=,!=,>=,<=属于比较运算符,and,not,or属于逻辑运算符。--查询年龄大于十岁小于三十的人名SELECT 姓名 FROM 表名 WHERE 年龄>10 AND 年龄<30;空值检测:IS NULL--返回id不为空的行,`IS NULL` 为空值判断SELECT * FROM 表名 WHERE id IS NOT NULL子查询最后再说一个平时用的比较多的查询语句,大家可以当作练习。先建表:CREATE TABLE stu( --先建立一个stu的表stuID INT, --添加id为int类型sname VARCHAR(32), --名字是varchar类型score INT, --分数是int类型PRIMARY KEY(stuID) --把id设置为主键);添加几条数据:INSERT INTO stu VALUES (1,‘xiaoming’,60), (2,‘xiaoli’,70);如何查询所有比小明成绩高的学生名字,先查询名字是xiaoming这个人的成绩,然后,再根据stu表的其他人的分数去做对比:SELECT sname FROM stu WHERE score > (SELECT score FROM stu WHERE sname = 'xiaoming');查询成绩高于平均成绩的学生姓名和成绩:SELECT sname,score FROM stu WHERE score > (SELECT AVG(score) FROM stu);好了,以上就是本文的所以内容,SQL其实不难,接下来要多练习,熟能生巧。想了解更多内容欢迎上蓝队云官网查询,也可以直接咨询专业客服。
尽管在互联网时代涌现了多样的营销方式,但短信群发凭借高到达率和低成本的优势仍旧是很多企业营销的核心手段。尤其在如今手机几乎人手一部的时代,短信群发营销更是受到了广大商家和企业的青睐。很多朋友可能还不知道短信群发平台哪里有,今天蓝队云就不得不自荐一下,作为专业的短信群发平台,蓝队云提供专业的群发业务支持,致力于帮助各大企业和商家提供高效、安全、稳定的短信群发服务,能够根据用户不同的需求提供灵活的短信群发解决方案。为什么在大家不知道短信群发平台哪里有的时候,推荐你们选择蓝队云。因为短信群发平台的通道质量是考虑的关键。通道质量直接关乎着短信的到达率,短信群发平台只有具备优质的通道才能直连三大运营商,发送三网的短信,实现群发短信的高触达率。作为一家专业的云计算服务商,蓝队云具有优质的短信群发通道,能够处理大流量、高并发的业务需求,并且能够根据发送的实际情况实时切换通道,短信群发到达率高达99.99%,通知类短信5S必达。在选择短信群发平台时,数据安全也是首要考虑的因素之一。这点也是强烈推荐大家选择蓝队云短信群发平台的原因。蓝队云短信群发平台通过了等保三级,并采用多项安全技术全方位保障用户的数据安全,包括,防火墙、多层加密技术、DDoS防御等。能够减少大家在使用短信群发平台时遇到的安全问题,保障业务的发展。短信群发平台价格透明度绝对是需要重点考虑的。在不知道短信群发平台哪里有时,一定要警惕陷入低价的陷阱。短信群发的成本通常由通道租用和运维的成本构成,硬性的成本加起来,价格几乎不可能突破下线。正常来讲,市面上短信群发平台的价格都在3-6分之间。打着1分2分幌子的短信群发平台可能会存在虚假扣量的状况。推荐蓝队云短信群发平台,群发价格低至3分/条,量多更优惠,按照发送成功计费,支持企业用户免费试用1000条,先免费测试再购买,价格公开透明,承诺绝不虚假扣量。有短信群发需求的朋友不用再究竟短信群发平台哪里有了,蓝队云就能够满足您的业务需求。不仅具备《增值电信经营许可证》和《电信网码号资源使用证书》两项资质,支持发送验证类、通知类、营销类三种短信,还提供专业的技术团队,7*24小时运维在线,快速解决用户遇到的问题,保障业务不停机。现在上官网注册,企业用户可以免费试用1000条短信,致力于让大家选到合适称心的短信群发平台,链接就放在文末了,有需要的朋友欢迎前来蓝队云官网体验试用!登录官网注册企业用户可免费试用1000条短信
IT运维指的是IT部门在组织内管理和维护的许多流程和服务。传统的IT运维包括一系列硬件和软件系统以及相关功能。这些可能包括数据网络、物理安全和网络安全、事件响应和灾难恢复(DR)、审计支持、项目管理、合规性和环境管理等。运维团队通常负责管理整体IT环境、质量保证以及系统和网络基础设施。随着云计算和软件定义网络等新技术的采用以及广泛的远程工作带来的变化,IT环境变得更加复杂,对IT运维的需求也在增长。每个使用计算机和网络技术的组织都有某种形式的IT运维。运维团队的工作通常与IT应用程序开发和系统管理分开,尽管它可能会支持这些团队。例如软件开发团队中的IT运维可能包括所有传统的IT职能,此外还为软件开发和管理提供技术和规划支持。不同的组织以不同的方式定义IT运维。该术语也用于描述管理IT运维的部门,以及该部门的服务、流程和标准化程序的集合。 IT运维涵盖哪些领域?IT运维涵盖了几个关键领域,每个领域都对组织IT环境的顺利运行至关重要。以下是主要组成部分:(1)基础设施管理:涉及IT环境的物理和虚拟组件的管理,包括服务器、存储和数据中心。它确保基础设施稳健、可扩展,并能够支持业务应用程序。(2)网络管理:网络管理包括监督组织的网络,以确保可靠和安全的连接。涉及管理路由器、交换机、防火墙,并确保网络免受外部和内部威胁。(3)系统管理:系统管理侧重于计算机系统的维护、配置和可靠运行。管理员处理用户帐户、系统更新、备份,并对系统问题进行故障排除,以保持正常运行时间和性能。(4)安全管理:安全管理对于保护IT系统免受数据泄露和丢失至关重要。包括实施防火墙、防病毒软件、入侵检测系统,并确保遵守安全政策和法规。(5)帮助台和支持:帮助台服务为最终用户提供技术支持,解决IT问题,并确保员工能够不间断地履行职责。该组件对于保持生产力和用户满意度至关重要。(6)企业服务管理:企业服务管理(ESM)将IT服务管理原则从IT扩展到人力资源、设施和财务等其他领域。这种整体方法通过将ITSM实践应用于所有服务领域,提高了整个组织的效率和服务交付。 IT运维的重要性欠缺的IT运维流程会对IT服务和其他业务流程的质量产生负面影响,并破坏组织的竞争力和声誉。因此,IT运维必须专注于改进和优化业务流程、确保运维稳定性。此外,强大的IT运维有助于公司完善其业务流程,使其能够快速适应不断变化的客户需求和竞争活动。良好的IT运维能为组织带来以下好处:(1)改进网络支持:IT运维部门负责定义组织如何管理软件和硬件。该部门提供其他IT支持,如网络管理、设备管理、移动合同和帮助台服务。(2)降低复杂性:改造大型环境可能成本高昂且复杂,但会带来长期效益,包括降低复杂性,这对管理和维护IT基础设施至关重要。(3)优化性能效率:IT运维团队努力最大限度地提高IT应用程序和系统的功能和效率,确保它们满足用户需求。性能优化措施通常包括硬件和软件配置、监控性能指标和排除性能问题。(4)增强可见性:IT运维通过监控工具、警报、仪表板、报告、容量规划、合规措施和事件管理系统增强了整个基础设施的IT可见性。(5)效率最大化:通过利用IT运维,组织可以采取先发制人的即时纠正措施,将风险降至最低。这为组织带来了最大的效率和生产力。(6)采用最新技术:IT运维部门协助公司采用先进技术,促进快速适应不断变化的客户需求。数字化转型、云服务、人工智能(AI)、软件自动化、云基础设施和高级网络安全等技术趋势都有助于实现IT运维的现代化。采用这些现代技术可以降低运维成本,提高IT的敏捷性和效率。(7)提高安全性:IT运维在维护IT系统和数据的安全方面发挥着至关重要的作用。这需要使用入侵检测系统、防火墙和防病毒软件程序等安全措施,并确保组织遵循行业标准和最佳实践。(8)有效成本管理:IT运维部门负责有效管理IT资源,以降低成本,同时满足组织的业务需求。这包括预算、寻找降低成本的方法和优化资源使用。(9)业务连续性:IT运维部门通过执行备份和灾难恢复策略来确保业务连续性。这可能包括定期备份数据、测试灾难恢复计划,并确保在发生灾难时能够快速恢复关键系统。(10)运维管理分析:IT运维管理和IT运维分析是IT运维中的重要角色,帮助组织改进IT处理服务配置、系统部署、网络和数据存储以及所有资源的维护和支持等任务的方式。IT运维管理和IT运维分析专业人员帮助确保服务的一致性、可靠性和质量。 IT运维涉及哪些岗位?职责有哪些?IT运维涵盖了广泛的岗位,包括:运维工程师、数据库管理员 (DBA)、网络运维工程师、应用运维工程师、虚拟化运维工程师、存储运维工程师、监控系统运维工程师、IT服务台支持专员、系统集成运维工程师、云计算运维工程师、自动化运维工程师、系统架构师、IT项目经理、IT基础设施运维顾问、安全运维工程师等。IT运维人员的职责包括:IT运维人员监督组织IT部门的日常活动,并确保其使用的系统是最新且高效地运行。有抱负的IT运维人员应具备IT领域的核心经验,并可以获得一些运维证书。而在这个领域首要推荐证书的是ITSS人员认证或ITIL认证。除此之外,IT运维人员必须在一定程度上了解或掌握以下内容:最新IT技术趋势、行业法规、安全威胁和问题、网络设计、系统性能和监控、软件安装和升级、与供应商合作、监督和指导IT员工等。IT运维人员通常负责以下工作:运维团队管理:IT运维管理人员通常领导着一个由IT专业人员组成的团队,其中包括系统管理员、网络工程师和支持人员。他们还雇佣、培训、分配任务,并为团队成员提供指导和支持。供应商管理:IT运维人员负责监督与第三方供应商的关系,包括合同谈判、绩效跟踪和问题解决。他们还确保供应商满足公司的要求,并在项目时间表和预算范围内交付成果。确保系统安全:IT运维人员负责执行网络安全最佳实践,如实施防火墙、防病毒软件和访问控制。他们还对员工和利益相关者进行安全政策和程序培训,监控系统活动以发现潜在问题,并随时了解安全威胁。监控客户互动:IT运维人员负责监督和分析IT运维团队与客户之间的互动,包括电话、电子邮件和聊天,以评估服务质量并确定在规定时间内需要改进的领域。他们与客户服务代表和支持技术人员合作,确保准确记录和跟踪所有通信。硬件设施管理:IT运维人员维护和管理容纳IT硬件的物理环境,确保数据中心和服务器机房的适当通风和冷却,以防止过热。他们还建立了备用系统,以在停电期间维持服务。最后,也跟大家分享下我们蓝队云的产品,我们蓝队云是成立15年的云计算和网络安全服务商,在行业内也算是做的很不错的,服务用户超过10W+了,如果大家有域名注册、云服务器、虚拟主机、渗透测试、漏洞扫描、安全运维等各种各样的云计算及网络安全需求,那么可以找我们,绝对给你一个极具性价比的价格和良好的服务。蓝队云 - 专业的云服务器、服务器租用托管、云安全服务、域名注册提供商
关于运维技术含量低的讨论从来没有停止过。在我看来,给IT运维这个岗位贴上“技术含量最低”的标签,是对运维工作复杂性和重要性的误解。大家要知道,运维和运维是不一样的。负载一个SASS系统的运维工作,和负责一个公有云计算平台的运维工作是天差地别的。前者什么都是第三方提供的,系统很成熟,连服务器都不用管;后者,整个平台庞大的用户体量、架构的稳定性、数据的安全性、应急策略、各种技术负责的复杂性都是前者比不了的。蓝队云作为公有云计算服务商,整个平台的稳定运行离不开运维团队的保证,实在一点说,运维团队是蓝队云核心技术团队,掌握着蓝队云的生死一线。今天,从我们的角度来聊聊运维这个工作,从运维工作实际经验与现实角度出发,对运维技术含量进行的深入分析。IT运维的工作范畴首先,我们先来明确一下,运维的定义和范畴。运维是负责IT系统运营和维护的工作。它不仅包括服务器的日常维护、软件部署、故障排查,还涉及网络管理、数据库优化、安全加固、性能监控、自动化运维等多个方面。随着云计算、大数据、人工智能等技术的兴起,运维的边界也在不断拓展,涵盖了容器化、微服务架构、DevOps文化等新兴领域。运维的技术深度运维这个岗位,谁都能做,但不是谁都能做到总监的位置,也就是一个公司的技术老大。运维工程师需要深入理解操作系统、网络协议、数据库原理、存储技术、安全机制等底层技术。云计算平台运维中,技术深度尤为关键。例如,当云计算平台上的某个应用出现响应缓慢的情况时,运维工程师需要深入探究。首先从操作系统层面,详细分析 CPU 的使用率,查看是否存在某个进程长时间占用大量 CPU 资源,导致其他进程无法正常运行。从内存层面,要检查是否存在内存泄漏问题。还需要检查磁盘 I/O ,若云计算平台上的数据库频繁读写磁盘,可能会出现磁盘 I/O 瓶颈。比如电商平台在促销活动期间,大量订单数据需要写入数据库,若磁盘 I/O 性能不足,就会导致订单处理缓慢。运维工程师必须具备深入分析和解决问题的能力,这就要求运维工程师具备扎实的计算机基础知识和丰富的实战经验。运维的技术广度运维工作还涉及多种技术的综合运用。从传统的物理服务器管理到虚拟化、云计算平台,从传统的网络配置到SDN(软件定义网络)、NFV(网络功能虚拟化),从关系型数据库到NoSQL数据库、大数据处理平台,运维工程师需要不断学习新知识,掌握新技术,以适应快速变化的IT环境。云计算平台的运维岗,最能够体现技术的广度。就以蓝队云为例,首先蓝队云是公有云计算平台,但我们也为客户提供私有云建设、混合云架构等服务,这就要求运维工程师具备管理不同类型云环境的能力。还要熟悉VMware 或 KVM等虚拟化技术。在网络方面,运维要能够利用SDN 技术,通过软件定义的方式,灵活配置网络拓扑、路由规则和安全策略。在数据库方面,最基本的需要熟悉各类型数据库的管理和优化技能,比如,在 MySQL 中,通过优化索引、调整数据库参数来提高查询性能;在 MongoDB 中,根据数据的读写模式,合理规划分片和副本集,确保数据的高可用性和读写效率。运维极具复杂性和挑战性除了上面提到的技术深度和广度之外,运维工作强度大,复杂性也更强。复杂性方面:随着企业规模的扩大和业务的发展,IT系统的复杂度也在不断增加。运维工程师需要管理成百上千的服务器、网络设备、存储设备等硬件资源,以及运行在这些硬件之上的各种软件和服务。这些系统和服务的相互依赖关系复杂,任何一个小小的变更都可能引发连锁反应,导致系统崩溃或服务中断。因此,运维工程师需要具备高度的系统思维能力和问题解决能力。很多使用云服务器的用户,都是因为云服务器灵活扩展的特性而用云的,可以随着企业业务变换,实时调整云服务器资源。当用户申请扩展云资源,看似简单的一个操作,需要运维工程师全面评估整个业务流程。避免升级过程中出现程序不兼容、网络断链等等问题。业务连续性方面:对于大多数企业而言,IT系统的稳定运行是业务连续性的关键保障。运维工程师需要制定完善的应急预案和恢复计划,确保在系统出现故障时能够迅速响应、快速恢复。同时,还需要通过日常巡检、性能监控等手段,提前发现并解决潜在问题,降低系统故障的风险。保障业务的连续性,对于一家云计算服务商来说,是最基本的。蓝队云的运维工程师通过实时监控系统,对服务器的性能、网络流量、数据库负载等指标进行 24 小时不间断监控,来确保服务的可用性。同时,一旦出现服务不可用的情况,要保障用户业务能快速切换到其他节点上,保障业务的连续性。这里,还涉及到多种技术手段就不一一说明了,毕竟蓝队云承诺的99.99%的可用性,不是轻易就能够做到的。网络信息安全方面:随着网络安全威胁的日益严峻和数据保护法规的不断完善,运维工程师还需要承担安全合规的重任。最基本的需要了解并遵守相关的安全标准和法规要求,制定并实施安全策略、安全加固措施和应急响应计划。同时,还需要密切关注安全漏洞和攻击手段的变化趋势,及时更新安全补丁和防护措施,确保系统免受安全威胁。当然,有一定规模的公司,会有网络安全工程师这样的岗位,把这部分工作分担出去。在云计算平台的运维中,网络安全和数据安全是非常重要的,需要通过各种技术手段来保障用户的安全。比如在网络层面,部署防火墙、入侵检测系统(IDS)和入侵防御系统(IPS),防止外部恶意攻击。在数据安全方面,对用户数据进行加密存储,确保即使数据被窃取,黑客也无法读取其中的内容。基于上面提到的内容,大家应该也有了结论。运维在IT行业中并非技术含量最低的工作领域。恰恰与之相反,运维工程师不管是技术深度还是技术广度都是很深厚的。运维工程师具备深厚的计算机基础知识、广泛的技术视野、高度的系统思维能力和问题解决能力。同时,随着技术的不断发展和业务需求的不断变化,运维工程师还需要不断学习和掌握新技术、新方法以适应新的挑战和机遇。在我看来,行业鄙视链这个东西都是糟粕,早该丢了。都是做一行爱一行,深耕技术都会有个不错的结果。这里说个题外话,像我们公司很多运维工程师,累积了深厚的技术和丰富的经验之后,后面换工作都有了很好的去处,毕竟应该没有什么公司的运维岗能够像云计算企业这样,需要具备各种综合能力。最后,也跟大家分享下我们蓝队云的产品,我们蓝队云是成立15年的云计算和网络安全服务商,在行业内也算是做的很不错的,服务用户超过10W+了,如果大家有域名注册、云服务器、虚拟主机、渗透测试、漏洞扫描、安全运维等各种各样的云计算及网络安全需求,那么可以找我们,绝对给你一个极具性价比的价格和良好的服务。蓝队云 - 专业的云服务器、服务器租用托管、云安全服务、域名注册提供商
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,广泛应用于数据库、缓存和消息代理等场景。在使用 Redis 时,数据的删除是一个常见的操作,特别是在大规模数据存储和高并发访问的环境中。本文将结合多种删除策略,详细讲解 Redis 中的几种常见删除方法,并分析它们的特点、应用场景以及优缺点。 一、删除单个键1.1 工作原理:使用 DEL 命令可以删除 Redis 中的某个特定键及其关联的值。Redis 会立即从内存中移除该键值对,并释放相应的内存空间。1.2 适用场景:当某个特定键的数据不再需要时。需要释放特定键占用的内存空间时。1.3 优缺点:优点:精确控制:只删除指定的键,不影响其他数据。立即生效:删除操作立即执行,内存空间会立即释放。缺点:性能影响:如果频繁删除大量键,可能会对 Redis 性能产生影响。数据丢失风险:误删键可能导致数据丢失。1.4 示例代码:DEL mykey 二、删除所有键2.1 工作原理:使用 FLUSHDB 命令可以删除当前数据库中的所有键。使用 FLUSHALL 命令可以删除所有数据库中的所有键。这些操作会立即生效,且不可恢复,一旦执行,所有的数据都会被删除。2.2 适用场景:需要清空整个数据库或所有数据库的内容时。在测试环境中重置数据库状态时。2.3 优缺点:优点:简单易行:操作简便,一键清空数据库。彻底清理:确保数据库中不存在任何旧数据。缺点:数据丢失风险:所有数据都会被删除,无法恢复。性能影响:如果数据库中包含大量数据,该操作可能会消耗较多时间和资源,影响 Redis 的性能。2.4 示例代码:FLUSHDB # 清空当前数据库中的所有键# 或者FLUSHALL # 清空所有数据库中的所有键 三、删除指定列表中的键3.1 工作原理:Redis 并未直接提供删除指定列表中所有键的命令,但可以通过 Lua 脚本或事务来批量删除键。可以遍历一个键列表,通过 DEL 命令逐个删除。3.2 适用场景:当需要批量删除多个特定的键时。在一些清理任务中,需要删除一组相关的键。3.3 优缺点:优点:灵活性高:可以根据需求自定义要删除的键列表。原子性:使用事务或 Lua 脚本时,可以确保操作的原子性。缺点:性能影响:如果键列表很大,批量删除可能会对 Redis 性能产生较大影响。复杂性:需要编写额外的脚本或代码来实现批量删除。3.4 示例 Lua 脚本:local keysToDelete = {"key1", "key2", "key3"} -- 这里替换为你要删除的键列表for _, key in ipairs(keysToDelete) do redis.call('DEL', key)endreturn nil执行 Lua 脚本:EVAL "$(cat script.lua)" 0 -- script.lua 是包含上述 Lua 脚本的文件 四、过期键的删除策略Redis 提供了两种方式来删除过期键:被动删除和主动删除。4.1 被动删除(Passive Expiration)工作原理:当客户端访问一个过期的键时,Redis 会主动删除该键。优点:简单高效。缺点:如果过期的键没有被访问,它会一直占用内存。4.2 主动删除(Active Expiration)工作原理:Redis 会周期性扫描数据库并删除过期的键。优点:能够及时清理过期键,减少内存占用。缺点:可能对 Redis 性能产生影响,特别是当数据库中有大量过期键时。配置:可以在 Redis 配置文件中配置过期键的清理策略,例如,设置主动删除扫描频率等。 五、内存淘汰策略当 Redis 达到最大内存限制时,它需要决定哪些数据应该被删除。以下是 Redis 提供的内存淘汰策略:5.1 noeviction:不淘汰任何数据,超过最大内存时返回错误。5.2 allkeys-lru:基于 LRU 算法淘汰最不常用的键。5.3 volatile-lru:基于 LRU 算法淘汰过期的键。5.4 allkeys-random:随机删除键。5.5 volatile-random:随机删除过期键。5.6 volatile-ttl:删除即将过期的键。这些策略可以通过 maxmemory-policy 配置选项设置。蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索。
服务热线:
4006-75-4006(7*24小时在线)
总机直拨:
0871-63886388(工作日9:00-18:00)
售前咨询
售后咨询
备案咨询
电话
二维码
TOP