整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

重蔚的php学习第二天之HTML篇

.昨日回顾

服务器软件:Apache、IIS

浏览器是一个翻译官,是一个解释器。浏览器可以翻译有HTML、CSS、JavaScript。

服务器端脚本程序:PHP、 .net、JSP、c#等

.php文件要由PHP脚本引擎来进行处理。

网站前台(客户端) 网站后台(服务器端) 数据库

HTML(结构) PHP MySQL

CSS JSP Oracle

JavaScript .net SqlServer

HTML结构:主要来说明,哪个地方是标题,哪个地方是段落,哪个地方是表格,哪个地方是表单。

CSS表现(格式):主要功能是,给相对应的HTML标记定义各种各样的格式。

JavaScript行为:主要用于与计算机网页进行交互(交流)。

块元素和行内元素

块元素:宽度单独占一个通栏宽,块元素的前台的其它元素,都要另起一行来排。

比如:<p> <pre> <hr> <h1>……<h6> <ul> <ol> <li>

DIV和SPAN就是一个容器,容器中可以存放任何可以存放在<body>中的内容或标记。

行内元素:行内元素没有宽度和高度的概念,也就是说通过CSS无法给行内元素增加宽和高。多个行内元素会放在同一行,不会另起一行来排版。

2.<marquee></marquee>滚动字幕标记:块元素

Direction:滚动的方向,取值:left、right、up、down

Behavior:滚动的方式,取值:scroll(滚动)、 alternate(弹动)、 slide(滚动一次)

Width:滚动的区域宽度,取值:px或%

Height;滚动的区域高度

bgColor:背景颜色,如:bgcolor=“#FF0000” bgcolor=“rgb(255,0,0)”

scrollAmount:滚动步长值,一步走多远,值越大,走的越快

scrollDelay:两次滚动的间隔时间,以毫秒为单位 1秒=1000毫秒

3.计算机进制

进制,就是一种进位方法。

10进制:有10个基本数,0、1、2、3、4、5、6、7、8、9,运算规则是:逢十进一

例如:9 10 19 20 29 30

2进制:有2个基本数,0、 1,运算规则是:逢二进一。比如:(10)2 11 100 101 110

8进制:有8个基本数,0、1、2、3、4、5、6、7,运算规则是:逢八进一。比如:(17)8 20 21 26 27 30

因为二进制太长,不方便记忆,因此小型机引入了八进制,八进制可以很好的反应二进制。

因此,一个八进制数,用3位二进制数来表示。

基R=2^3

16进制:有16个基本数,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则是:逢16进一

比如:EF F0 F1 F2 FE FF (100)16

16进制的一位对应4位二进制。基R=2^4

10进制12345678910111213141516171819
2进制1101110010111011110001001101010111100
8进制1234567101112131415161720
16进制123456789ABCDEF10111213

十进制转成二进制

分为整数部分和小数部分,分别转换。比如:将(10.125)10转成二进制? 1010.001

(1)整数部分转成二进制:2取余法。每次将整数除以2,取余数,一直除下去,直到整数部分(商)为0。最后读数时,从下往上读取。

N整数10余数
第1次10/250
第2次5/221
第3次2/210
第4次1/201最后结果为:1010

(2)小数部分转成二进制:2除整法。每次将小数部分乘以2,取整数,一直乘下去,直到小数部分为0。最后读数时,从上往下读取。

N小数0.125整数
第1次0.125*20.250
第2次0.25*20.50
第3次0.5*21.01
最后结果为:001

二进制转成十进制

不分整数部分和小数部分,按权相加法。换句话说:二进制上的每一位,乘以所在位权(也就是2的几次方),最后将各个位的乘相加,就能得到十进制。

1010.001 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 + 0*2^-1 + 0*2^-2 + 1*2^-3 = 8+2+ 1/8 = 10+0.125 = 10.125

4.计算机编码介绍(字符集)

计算机只能二进制,比如:a-z、A-Z、0-9、标点符号,计算机都不能直接识别。每个人都可以来约定一套字符编码(比如:a用二进制100表示,b用二进制101表示,c用二进制的110表示等)

计算机是由美国人发明的,美国标准化局同样制定了一套统一的编码,叫ASCII码。

ASCII

ASCII编码用7位或8位(1个字节)二进制来表示,共可以表示128或256个字符。包括:大小写字母、数字、标点符号、图形符号等。

5.ANSI编码

每个国家都想让计算机能显示或处理本国的语言,都对ASCII码进行了扩展。

在中国(简体字),ANSI编码是指GB2312或GBK。

在台湾(繁体字),ANSI编码是指BIG5

在日本,ANSI编码是指JIS。

……

注意:ANSI编码是跟随操作一齐安装的,也就是,安装了中文操作系统后,它的默认编码就是GB2312。

6.GB2312编码

GB2312是中国标准化局,在1980年制定的一套显示简体中文的编码。

GB2312是用2个字节来显示。共可以表示2^16=256*256=65536个字符。

GB2312共保存了6763个常用汉字,一级汉字3700个。

GBK编码

对GB2312进行了扩充,可以显示人名、古汉语中的一些罕见字等。

GBK也是用2个字节来表示。共存储了2.3万个左右的中文字符。

GBK的范围,要比GB2312大的多。

BIG5编码

BIG5用于台湾、香港、澳门地区的繁体中文编码。

Unicode编码

用4个字节表示字符,共可以表示42个亿个字符。

Unicode编码可以显示世界上所有国家的语言。

缺点:文件庞大,效率不高,不利于推广。

UTF-8统一格式转换

它会自动根据不同的字符,来选择不同编码长度。

7.<meta>标记

<meta>标记是设置一些网页文件头方面的信息。主要包括:网页编码或字符集设置、网页关键字、网页描述、网页刷新跳转等。相当于一封信的信封,信封有地址、邮编等重要。

<head>标记中的内容在浏览器中,是不可见的。

主要用两个常用的属性:

http-equiv:主要设置一些控制信息,属性值是固定的。比如:content-type

name:一般用于设置网页描述信息,像关键字、网页描述、网页版权、作者等,属性值是固定的。比如:keywords

content:是具体的参数或内容,与http-equiv和name属性进行对应。

(1)设置网页的字符集或编码

<meta http-equiv=“content-type” content=“text/html;charset=GBK”>

(2)设置网页刷新或跳转

<meta http-equiv=“refresh” content=“5”> 表示每隔5秒钟,刷新网页

<meta http-equiv=“refresh” content=“5;url=http://www.baidu.com”> 表示5秒钟后,跳转到百度网

注意:刷新功能相当于浏览器中的刷新按钮

(3)设置网页关键字(SEO优化),给搜索引擎(搜索机器人)使用

<meta name=“keywords” content=“程序开发,平面设置,空间域名,网站维护”>

(4)设置网页描述信息(SEO优化)

<meta name=“description” content=“广州网站建设思优网络公司,提供专业广州网站制作及网站推广相结合的建站方案,由专业广州网站设计人员结合搜索引擎优化经验为您设计网站;广州网页设计:020-87537332”>

8.XHTML

XHTML是可扩展超文本标注语言,XHTML是更纯净的HTML,语法更严格。

XHTML的目的是为了取代HTML4.01。

XHTML是W3C的一个标准或规范。

编写XHTML的规范,与HTML编写有何不同?

1)所有的标记都必须被关闭。比如:<br>转换<br /> <hr>转换后 <hr />

2)XHTML要求所有的标记名称必须小写。比如:<meta><table><img><font>

3)XHTML要求所有的属性名必须小写,属性值必须加引号

4)XHTML要求所有的属性必须有值

<hr noshade=noshade />

<input type=radio checked=checked />

5)所有的标记要顺序嵌套,不能交叉嵌套;

6)XHTML文件,必须要有DTD文档类型定义;

DTD(Document Type Define)文档类型定义

(1)严格型Strict

要求HTML代中,不能存在任何的表现,用CSS去代替。比如:<font>、bgcolor、background等

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

2)过渡型transitional

可以使用任何表现的标记或属性。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

(3)框架型Frameset

制作框架网页时使用的一种类型,框架主要用于网站的后台管理。

框架技术:是将一个浏览器窗口划分成不同区域,每个区域(窗口)都可以显示一个独立的网页。(HTML第四天单独讲框架,现在作个了解

9.W3C简介

W3C是万维网联盟,是一个国际性的非盈利性组织,是WEB领域最具权威性的组织。已经制定多达200多项的标准。

比如:XHTML、CSS、ECMAScript(JavaScript)、DOM、 XML等。

10.超级链接

超级链接的功能:就是点击某个链接,可以跳转到目标页面或文件。

超级链接的分类:

(1)按内容分类:文本链接、图片链接、多媒体等

(2)按URL分类:相对URL、绝对URL、锚点

URL,指网址或路径

URL(Uniform Resource Locator,统一资源定位器),也就是指互联网地址。

http://www.sina.com.cn/about/index.html

第一个部分:协议,指访问什么类型的服务器,如:http://FTP://news://

第二个部分:主机名或主机的IP地址。如:www.sina.com.cn

第三个部分:文件夹名,如:about

第四个部分:文件名,如:index.html

11.<a></a>超级链接的标记

格式:<a 属性=“属性值”>新浪网</a>

常用的属性:

Href:指链接的目标文件或网址。比如:href=“http://www.toutiao.com”

Target:指目标文件的打开方式。

_blank:在新窗口中,来打开目标文件;

_self:在当前窗口中,来打开目标文件;

_top:在最顶层窗口中,来打开目标文件(在框架中讲);

_parent:在父窗口中,来打开目标文件(在框架中讲)

Name:设置锚点的名称。锚点是指:链接到同一个页面的不同部分

举例:<a href=http://www.toutiao.com target=“_blank”>头条号</a>

12.相对路径和绝对路径

绝对URL:它总是以file:///协议开头,去访问目标文件。

如果将当前文件移动到其它地方,这个绝对URL路径不需要修改。

绝对URL,只需要确定目标文件的路径即可,与当前文件位置无关。

例如:<a href=“file:///E:/itcast/20140510/lesson/day2/4.html”>本地绝对路径</a>

相对URL:要确定当前文件与目标文件的关系。

关系分为三种:

平级关系:直接写目标文件的文件名即可。

下级关系:也就是目标文件所在的文件夹与当前文件是平级关系,当前文件与目标文件是上下级关系。

上级关系:目标文件位于上一层级。

../代表上一层文件夹

../../代表上二层文件夹

../../images/01.jpg

提示:在制作网站时,一般使用的都是相对路径。

(3)下载链接:如果链接到的文件,网页不能直接执行的话,都会出现下载提示。

浏览器可以直接执行的文件:.gif、.jpg、.png、html、.htm、.mp3、.swf等

(4)邮箱链接:mailto:beijing2000@126.com

13.锚点链接:指链接到一个网页的不同地方

第一步:定义一个锚点或标记 <a name=“top”></a>

第二步:链接到锚点或标记 <a href=“#top”>返回顶部</a>

<a href=“intro.html#bottom”>链接到intro.html的底部</a>

14.<img>图片标记,单边标记

格式:<img 属性=“属性值” />

常用的属性:

Src:指图片的URL,可以是相对路径,也可以是绝对路径。

Width:指图片的宽度,单位px或%

Height:指图片的高度

Align:图片的水平对齐方式,取值:left center right ,leftright可以实现图文混排

Alt:如果图片不存在时,显示的提示信息

Hspace:图片左右的距离

Vspace:图片上下的距离

举例:<img src=“images/01.gif” width=“400” height=“300” alt=“宝宝图片” />

如果保证图片在调整过程中不变形(等比例缩放):只需要设置widthheight其中一个即可,另一个会自动缩放。

xeOutput for PHP 是一个工具,用于将 PHP 应用程序转换为本地可执行文件(EXE 文件),使得应用程序可以在 Windows 系统上独立运行,无需 PHP 解释器的安装。

功能和特点:

  1. 编译成本地应用程序: ExeOutput for PHP 可以将 PHP 脚本编译成独立的 EXE 可执行文件。这使得 PHP 应用程序不再需要依赖于 Web 服务器或 PHP 解释器,可以像常规的桌面应用程序一样运行。
  2. 支持 PHP 和 Web 技术: 尽管生成的是本地应用程序,ExeOutput for PHP 仍然支持 PHP 语法和许多常见的 Web 技术,如 HTML、CSS、JavaScript。这使得开发者可以利用熟悉的工具和技术进行应用程序开发。
  3. Windows 集成和兼容性: 生成的应用程序与 Windows 系统深度集成,可以利用 Windows 的原生功能和接口。这包括对 Windows 版本的广泛兼容性和支持,确保应用程序在各种 Windows 环境下稳定运行。
  4. 高度定制化: ExeOutput for PHP 提供了丰富的定制选项,开发者可以根据需要调整应用程序的外观、行为和功能。这包括添加自定义图标、设置应用程序的运行行为、集成第三方组件等。
  5. 易于部署和分发: 生成的 EXE 文件可以简单地分发给用户,用户无需安装额外的软件或配置 PHP 环境即可运行应用程序。这简化了应用程序的部署和更新过程。

使用场景:

  • 桌面应用程序开发:适用于需要将 PHP 网页应用程序转换为桌面应用程序的场景,如工具、编辑器、客户端应用等。
  • 独立运行的工具:用于开发不依赖于 Web 服务器的工具或实用程序,如数据处理工具、报表生成器等。
  • 教育和培训:用于创建教育课件、培训程序等,使其在 Windows 环境下独立运行。

ExeOutput for PHP 提供了将 PHP 应用程序转换为独立桌面应用程序的解决方案,适用于需要便捷、高性能和独立部署的应用开发场景。

ExeOutput for PHP 的功能可以大致分类如下:

  1. PHP 应用程序转换
  2. 将 PHP 网页应用程序转换为本地可执行文件(EXE 文件)。
  3. 支持将 PHP 脚本、HTML、CSS、JavaScript 等 Web 技术编译成独立运行的桌面应用程序。
  4. Windows 集成和支持
  5. 充分利用 Windows 系统的功能和接口。
  6. 支持 Windows 的各种版本和特性,确保生成的应用程序在不同的 Windows 环境中稳定运行。
  7. 定制化和配置
  8. 提供丰富的定制选项,允许开发者根据需求调整应用程序的外观和行为。
  9. 包括设置应用程序图标、窗口样式、启动行为等选项。
  10. 兼容性和性能优化
  11. 优化生成的应用程序的性能,确保在不依赖于服务器的情况下仍然能够高效运行。
  12. 提供性能调优选项,以确保应用程序在桌面环境中具有良好的响应速度和稳定性。
  13. 部署和分发
  14. 简化应用程序的部署过程,生成的 EXE 文件可以轻松分发给用户。
  15. 用户无需安装额外的软件或配置 PHP 环境即可运行应用程序。
  16. 扩展性和第三方集成
  17. 支持集成第三方组件和库,以扩展应用程序的功能。
  18. 允许开发者利用现有的 PHP 应用程序基础,添加自定义的功能和模块。
  19. 安全性
  20. 提供安全性选项,确保生成的应用程序能够在安全的桌面环境中运行。
  21. 避免了在公共服务器上运行应用程序可能遇到的安全风险和访问控制问题。

这些功能使得 ExeOutput for PHP 成为开发者将 PHP 应用程序转换为独立桌面应用程序的有力工具,适用于各种需要桌面化的 PHP 应用场景。

ExeOutput for PHP 的底层原理涉及以下几个关键步骤和技术:

  1. 编译和打包: ExeOutput for PHP 将 PHP 网页应用程序的源代码、HTML、CSS、JavaScript 和其他资源文件,通过自身的编译器进行处理和编译。这个过程将这些文件整合并编译成一个单独的可执行文件(EXE 文件)。
  2. PHP 解释器集成: 虽然生成的应用程序是本地 EXE 文件,但 ExeOutput for PHP 实际上集成了 PHP 解释器(基于 PHP-CGI 或 PHP-CLI),这样生成的应用程序可以在用户的计算机上独立运行,而无需用户安装额外的 PHP 环境。
  3. Web 技术支持: ExeOutput for PHP 不仅支持 PHP 语法和功能,还支持常见的 Web 技术,如 HTML、CSS、JavaScript 等。这些技术被嵌入到生成的应用程序中,使得应用程序能够模拟 Web 环境中的页面和交互功能。
  4. Windows 集成和原生支持: 生成的应用程序与 Windows 系统深度集成,利用 Windows 的原生 API 和功能。这确保了应用程序在 Windows 操作系统上的行为和外观与其他本地应用程序保持一致。
  5. 资源管理和打包: ExeOutput for PHP 负责管理和打包应用程序中的所有资源,包括图片、CSS 文件、JavaScript 文件等。这些资源被整合到生成的 EXE 文件中,使得应用程序在不依赖于外部文件或网络的情况下能够完整运行。
  6. 性能优化和安全性: 在将 PHP 应用程序转换为桌面应用程序的过程中,ExeOutput for PHP 会对代码和资源进行优化,以提高应用程序的性能和安全性。这包括文件压缩、代码混淆等技术,以减少生成的 EXE 文件的大小和提升运行效率。

ExeOutput for PHP 的底层原理是通过将 PHP 网页应用程序编译和打包成一个本地可执行文件,集成必要的 PHP 解释器和 Web 技术支持,使得开发者可以将 Web 应用程序转换为独立的桌面应用程序,从而在 Windows 系统上独立运行。

ExeOutput for PHP 的工作原理可以概括为以下几个关键步骤和技术:

  1. 项目设置和配置: 开发者首先使用 ExeOutput for PHP 的开发环境,配置项目的各种参数和选项。这包括设置应用程序的图标、窗口风格、启动行为等。
  2. 应用程序编译和打包: 开发者将 PHP 网页应用程序的源代码、HTML、CSS、JavaScript 等资源文件导入到 ExeOutput for PHP 中。ExeOutput for PHP 会将这些文件编译和打包成一个单独的可执行文件(EXE 文件)。
  3. 集成 PHP 解释器: 尽管生成的应用程序是本地 EXE 文件,但它包含了一个集成的 PHP 解释器(通常是基于 PHP-CGI 或 PHP-CLI 的版本)。这使得生成的应用程序在用户的计算机上可以独立运行,无需用户安装额外的 PHP 环境。
  4. 模拟 Web 环境: ExeOutput for PHP 在生成的应用程序中模拟了 Web 环境的关键部分,包括 HTTP 请求和响应机制。这样,应用程序可以处理用户的交互,如表单提交、URL 跳转等操作。
  5. Windows 集成和特性利用: 生成的应用程序与 Windows 操作系统深度集成,利用 Windows 的原生 API 和特性。这确保了应用程序在 Windows 下的行为和外观与其他本地应用程序保持一致,包括窗口管理、文件操作等功能。
  6. 资源管理和优化: ExeOutput for PHP 负责管理和打包应用程序中的所有资源,如图片、CSS、JavaScript 等文件。这些资源被嵌入到生成的 EXE 文件中,使得应用程序在不依赖外部文件或网络的情况下能够完整运行。
  7. 性能和安全性: 在转换和打包过程中,ExeOutput for PHP 会对应用程序进行优化,包括文件压缩、代码混淆等技术,以提高应用程序的性能和安全性。这些优化措施有助于减少生成的 EXE 文件的大小并提升运行效率。

ExeOutput for PHP 的工作原理是通过将 PHP 网页应用程序编译和打包成一个本地可执行文件,同时集成必要的 PHP 解释器和模拟 Web 环境的功能,从而使得开发者可以将原本的 Web 应用程序转换为独立的桌面应用程序,适合在 Windows 环境中独立运行。

ExeOutput for PHP 的架构设计主要包括以下几个关键组成部分:

  1. 开发环境: 开发者使用 ExeOutput for PHP 提供的集成开发环境(IDE),在此环境中进行应用程序的配置、开发和调试。这个环境提供了界面和工具,帮助开发者管理项目、设置应用程序的外观和行为,并预览应用程序在生成后的运行效果。
  2. 编译器和打包器: ExeOutput for PHP 包含了一个专门的编译器和打包器,用于将 PHP 网页应用程序的源代码、HTML、CSS、JavaScript 等文件,编译和打包成一个单独的可执行文件(EXE 文件)。这个过程不仅仅是简单地打包文件,还涉及到资源管理、代码优化等技术。
  3. 集成的 PHP 解释器: 生成的应用程序中集成了一个 PHP 解释器,通常是基于 PHP-CGI 或 PHP-CLI 的版本。这个解释器使得应用程序可以在用户的计算机上独立运行,而无需用户单独安装和配置 PHP 环境。
  4. Web 环境模拟: ExeOutput for PHP 在生成的应用程序中模拟了一部分 Web 环境的功能,包括 HTTP 请求和响应机制。这样,应用程序可以处理用户的交互行为,如表单提交、页面跳转等操作,从而让用户体验到类似于 Web 应用程序的交互方式。
  5. Windows 集成和原生支持: 生成的应用程序与 Windows 操作系统深度集成,利用 Windows 的原生 API 和功能。这包括窗口管理、文件操作、图标显示等,确保应用程序在 Windows 平台上的外观和行为符合用户的期望。
  6. 资源管理和优化: ExeOutput for PHP 负责管理和打包应用程序中的所有资源,如图片、CSS、JavaScript 等文件。这些资源被整合到生成的 EXE 文件中,使得应用程序在不依赖外部文件或网络的情况下能够完整运行。同时,ExeOutput 还会对应用程序进行优化,包括文件压缩、代码混淆等,以提高应用程序的性能和安全性。
  7. 运行时环境: 用户在其计算机上运行生成的 EXE 文件时,会启动集成的 PHP 解释器,并在 Windows 环境中执行应用程序。这个运行时环境保证了应用程序能够在用户端正常运行和交互,同时与本地的操作系统和资源进行有效的集成。

ExeOutput for PHP 的架构设计旨在通过将 PHP 网页应用程序转换为本地的桌面应用程序,从而让开发者能够更方便地将其部署和分发给用户,同时在用户端提供类似于 Web 应用程序的交互体验。

ExeOutput for PHP 主要适用于以下几种应用场景:

  1. 将 Web 应用转换为桌面应用: 开发者可以利用 ExeOutput for PHP 将已有的 PHP 网页应用程序,如在线工具、管理系统、电子商务平台等,转换为独立的桌面应用程序。这种转换能够为用户提供更直观和便捷的使用体验,同时利用桌面环境的优势,如更快的访问速度、离线使用等。
  2. 内部工具和管理系统: 公司或组织内部的各种工具、管理系统和信息展示平台,通常是基于 Web 技术开发的。通过 ExeOutput for PHP,可以将这些内部系统转换为桌面应用程序,提高员工使用的便捷性和效率,同时简化部署和更新的流程。
  3. 原型开发和演示: 开发人员可以利用 ExeOutput for PHP 快速将原型或演示版本的 Web 应用程序转换为桌面应用,以便客户或团队进行评审和反馈。这种转换不仅能够展示应用的基本功能,还能模拟用户体验,加深对最终产品的理解和认可。
  4. 电子书和培训资料: 作者和培训者可以使用 ExeOutput for PHP 将他们的电子书、在线培训课程或学习资料转换为桌面应用程序,使得学习者可以在离线状态下访问和学习内容,提高学习的灵活性和效率。
  5. 轻量级工具和小型应用: 需要开发简单但功能完整的桌面应用程序的情况,如小工具、日程管理工具、笔记应用等,ExeOutput for PHP 提供了一个快速开发和部署的解决方案。开发者可以利用现有的 Web 开发技能和资源,快速实现这些应用的开发和发布。

ExeOutput for PHP 适合那些希望将现有的 PHP 网页应用程序转换为桌面应用,并且能够在桌面环境中提供更优秀用户体验的开发者和组织。

ySQL 是世界上最流行的开源数据库系统,MariaDB(一个 MySQL 分支)是世界上增长最快的开源数据库系统。在安装 MySQL 服务器之后,在默认配置下是不安全的,确保数据库安全通常是通用数据库管理的基本任务之一。

这将有助于增强和提升整个 Linux 服务器的安全性,因为攻击者总是扫描系统任意部分的漏洞,而数据库在过去是重点目标区域。一个常见的例子是对 MySQL 数据库的 root 密码的强制破解。

在本指南中,我们将会讲解对开发者有帮助的 MySQL/MariaDB 的 Linux 最佳安全实践。

1. 安全地安装 MySQL

这是安装 MySQL 服务器后第一个建议的步骤,用于保护数据库服务器。这个脚本可以帮助您提高 MySQL 服务器的安全性:

  • 如果您在安装期间没有设置 root 帐户的密码,马上设置它
  • 通过删除可从本地主机外部访问的 root 帐户来禁用远程 root 用户登录
  • 删除匿名用户帐户和测试数据库,默认情况下,所有用户、甚至匿名用户都可以访问这些帐户和测试数据库
# mysql_secure_installation

在运行上述命令之后,设置 root 密码并通过输入 [Yes/Y] 和按下 [Enter] 键来回答一系列问题。

img

安全安装 MySQL 情况界面

2. 将数据库服务器绑定到 Loopback 地址

此配置将限制来自远程机器的访问,它告诉 MySQL 服务器只接受来自本地主机的连接。你可以在主配置文件中进行设置。

# vi /etc/my.cnf	                   [RHEL/CentOS]	
# vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu]

在 [mysqld] 部分中添加下面这一行

bind-address = 127.0.0.1

3. 禁用 MySQL 的 LOCAL INFILE

作为安全性增强的一部分,您需要禁用 local_infile,使用下面的指令以防止在 [mysqld] 部分从 MySQL 中访问底层文件系统。

local-infile=0

4. 修改 MySQL 的默认端口

设置端口变量用于监听 TCP/IP 连接的 MySQL 端口号。默认端口号是 3306,但是您可以在 [mysqld] 中修改它。

Port=5000

5、启用 MySQL 日志

日志是了解服务运行过程中发生了什么的最好的方法之一,在受到任何攻击的时候都可以很容易的从日志里看到任何入侵相关的行为。可以通过将下边的变量添加到配置文件[mysqld]部分来开启mysql日志功能。

log=/var/log/mysql.log

6、设置合适的 MySQL 文件的访问权限

确保你已经为所有的 mysql 服务文件和数据路径设置了合适的访问权限。文件 /etc/my.conf 只能由 root 用户修改,这样就可以阻止其他用户修改数据库服务的配置。

# chmod 644 /etc/my.cnf

7、删除 MySQL shell 历史

你在 MySQL shell 中执行的所有的命令都会被 mysql 客户端保存到一个历史文件:~/.mysql_history。这样是很危险的,因为对于你创建过的任何用户账户,所有的在 shell 输入过的用户名和密码都会记录到历史文件里面。

# cat /dev/null > ~/.mysql_history

8. 不要在命令行中运行 MySQL 命令

正如你所知道的,你在终端上输入的所有命令都会被存储在一个历史文件中,具体取决于你正在使用的shell(例如 bash 的 shell 历史文件放在 ~/.bash_history)。攻击者访问这个历史文件可以很容易地看到记录在那里的任何密码。

非常不建议在命令行里面输入密码,如下:

# mysql -u root -ppassword_

img使用密码连接 MySQL

当你查看命令行历史文件的最后的部分时,可以看到之前输入过的密码。

# history

img查看命令行输入历史

推荐连接 MySQL 的方式是

# mysql -u root -p
Enter password:

9. 定义特定应用的数据库用户

对于每一个在服务器上运行的应用,只设置一个与该应用相关的数据库用户。例如你有一个 wordpress 网站,如下创建一个 wordpress 的数据库用户:

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

并且要记住对于不再使用的数据库用户要删掉。

10. 使用额外的安全插件和库

MySQL 包含许多安全插件:验证客户端连接到 MySQL 服务器的请求、密码校验和敏感信息的安全存储等,这些都在免费版本中提供。

在这里可查看更多:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. 定期修改 MySQL 密码

定期修改密码是一个常见的信息/应用/系统安全建议。多久修改一次密码由你内部的安全策略决定。定期修改密码可以阻止长期跟踪你的“窥探者”,获取你的密码,登录你的 MySQL 服务器。

MariaDB [(none)]> USE mysql;MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';MariaDB [(none)]> FLUSH PRIVILEGES;

12. 定期更新 MySQL Server 包

强烈建议定期从官方仓库更新 mysql/mariadb 包来获取最新的安全更新和错误改进。通常情况下操作系统中默认的包是过时的。

# yum update
# apt update

在对 mysql/mariadb server 进行任何修改之后,要重启服务。

# systemctl restart mariadb		#RHEL/CentOS
# systemctl restart mysql		#Debian/Ubuntu

分享到此结束,欢迎大家在文章下面评论,并且和我们分享文章中没有提到的安全提示。


本文作者:soaring, 凉凉_
原文链接:https://www.oschina.net/translate/mysql-mariadb-security-best-practices-for-linux
版权归作者所有,转载请注明出处