第二个灵魂 发表于 2015-1-16 22:44:45

MYSQL编程:MySQL数据库平安设置指南

即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。mysql|平安|数据|数据库|数据库平安1、媒介

MySQL是完整收集化的跨平台干系型数据库体系,同时是具有客户机/服务器系统布局的散布式数据库办理体系。它具有功效强、利用烦琐、办理便利、运转速率快、平安牢靠性强等长处,用户可使用很多言语编写会见MySQL数据库的程序,出格是与PHP更是黄金组合,使用非常普遍。

因为MySQL是多平台的数据库,它的默许设置要思索各类情形下都能合用,以是在我们本人的利用情况下应当举行进一步的平安加固。作为一个MySQL的体系办理员,我们有义务保护MySQL数据库体系的数据平安性和完全性。

MySQL数据库的平安设置必需从两个方面动手,体系外部平安和内部收集平安,别的我们还将复杂先容编程时要注重的一些成绩和一些小秘诀。

2、体系外部平安

起首复杂先容一下MySQL数据库目次布局。MySQL安装好,运转了mysql_db_install剧本今后就会创建数据目次和初始化数据库。假如我们用MySQL源码包安装,并且安装目次是/usr/local/mysql,那末数据目次一样平常会是/usr/local/mysql/var。数据库体系由一系列数据库构成,每一个数据库包括一系列数据库表。MySQL是用数据库名在数据目次创建创建一个数据库目次,各数据库表分离以数据库表名作为文件名,扩大名分离为MYD、MYI、frm的三个文件放到数据库目次中。

MySQL的受权表给数据库的会见供应了天真的权限把持,可是假如当地用户具有对库文件的读权限的话,打击者只需把数据库目次打包拷走,然后拷到本人本机的数据目次下就可以会见夺取的数据库。以是MySQL地点的主机的平安性是最主要的成绩,假如主机不平安,被打击者把持,那末MySQL的平安性也无从谈起。其次就是数据目次和数据文件的平安性,也就是权限设置成绩。

从MySQL主站一些老的binary刊行版来看,3.21.xx版本中数据目次的属性是775,如许十分伤害,任何当地用户都能够读数据目次,以是数据库文件很不平安。3.22.xx版本中数据目次的属性是770,这类属性也有些伤害,当地的同组用户既能读也能写,以是数据文件也不平安。3.23.xx版本数据目次的属性是700,如许就对照好,只要启动数据库的用户能够读写数据库文件,包管了当地数据文件的平安。

假如启动MySQL数据库的用户是mysql,那末象以下的目次和文件的是平安的,请注重数据目次及上面的属性:

shell>ls-l/usr/local/mysql

total40

drwxrwxr-x2rootroot4096Feb2720:07bin

drwxrwxr-x3rootroot4096Feb2720:07include

drwxrwxr-x2rootroot4096Feb2720:07info

drwxrwxr-x3rootroot4096Feb2720:07lib

drwxrwxr-x2rootroot4096Feb2720:07libexec

drwxrwxr-x3rootroot4096Feb2720:07man

drwxrwxr-x6rootroot4096Feb2720:07mysql-test

drwxrwxr-x3rootroot4096Feb2720:07share

drwxrwxr-x7rootroot4096Feb2720:07sql-bench

drwx------4mysqlmysql4096Feb2720:07var

shell>ls-l/usr/local/mysql/var

total8

drwx------2mysqlmysql4096Feb2720:08mysql

drwx------2mysqlmysql4096Feb2720:08test

shell>ls-l/usr/local/mysql/var/mysql

total104

-rw-------1mysqlmysql0Feb2720:08columns_priv.MYD

-rw-------1mysqlmysql1024Feb2720:08columns_priv.MYI

-rw-------1mysqlmysql8778Feb2720:08columns_priv.frm

-rw-------1mysqlmysql302Feb2720:08db.MYD

-rw-------1mysqlmysql3072Feb2720:08db.MYI

-rw-------1mysqlmysql8982Feb2720:08db.frm

-rw-------1mysqlmysql0Feb2720:08func.MYD

-rw-------1mysqlmysql1024Feb2720:08func.MYI

-rw-------1mysqlmysql8641Feb2720:08func.frm

-rw-------1mysqlmysql0Feb2720:08host.MYD

-rw-------1mysqlmysql1024Feb2720:08host.MYI

-rw-------1mysqlmysql8958Feb2720:08host.frm

-rw-------1mysqlmysql0Feb2720:08tables_priv.MYD

-rw-------1mysqlmysql1024Feb2720:08tables_priv.MYI

-rw-------1mysqlmysql8877Feb2720:08tables_priv.frm

-rw-------1mysqlmysql428Feb2720:08user.MYD

-rw-------1mysqlmysql2048Feb2720:08user.MYI

-rw-------1mysqlmysql9148Feb2720:08user.frm

假如这些文件的属主及属性不是如许,请用以下两个命令修改之:

shell>chown-Rmysql.mysql/usr/local/mysql/var

shell>chmod-Rgo-rwx/usr/local/mysql/var

用root用户启动远程服务一向是平安年夜忌,由于假如服务程序呈现成绩,远程打击者极有大概取得主机的完整把持权。MySQL从3.23.15版本入手下手时作了小小的修改,默许安装后服务要用mysql用户来启动,不同意root用户启动。假如非要用root用户来启动,必需加上--user=root的参数(./safe_mysqld--user=root&)。由于MySQL中有LOADDATAINFILE和SELECT...INTOOUTFILE的SQL语句,假如是root用户启动了MySQL服务器,那末,数据库用户就具有了root用户的写权限。不外MySQL仍是做了一些限定的,好比LOADDATAINFILE只能读全局可读的文件,SELECT...INTOOUTFILE不克不及掩盖已存在的文件。

当地的日记文件也不克不及无视,包含shell的日记和MySQL本人的日记。有些用户在当地上岸或备份数据库的时分为了图便利,偶然会在命令行参数里间接带了数据库的暗码,如:

shell>/usr/local/mysql/bin/mysqldump-uroot-ptesttest>test.sql

shell>/usr/local/mysql/bin/mysql-uroot-ptest

这些命令会被shell纪录在汗青文件里,好比bash会写进用户目次的.bash_history文件,假如这些文件失慎被读,那末数据库的暗码就会泄露。用户上岸数据库后实行的SQL命令也会被MySQL纪录在用户目次的.mysql_history文件里。假如数据库用户用SQL语句修正了数据库暗码,也会因.mysql_history文件而泄露。以是我们在shell上岸及备份的时分不要在-p后间接加暗码,而是在提醒后再输出数据库暗码。

别的这两个文件我们也应当不让它纪录我们的操纵,以防万一。

shell>rm.bash_history.mysql_history

shell>ln-s/dev/null.bash_history

shell>ln-s/dev/null.mysql_history

上门这两条命令把这两个文件链接到/dev/null,那末我们的操纵就不会被纪录到这两个文件里了。


下一页
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。

若天明 发表于 2015-1-19 22:13:48

所以你总能得到相应的升级版本,来满足你的需求。

冷月葬花魂 发表于 2015-1-28 13:45:51

大侠们有推荐的书籍和学习方法写下吧。

灵魂腐蚀 发表于 2015-2-5 21:42:22

我们学到了什么?思考问题的时候从表的角度来思考问

简单生活 发表于 2015-2-13 17:40:54

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。

admin 发表于 2015-3-4 00:49:19

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

飘飘悠悠 发表于 2015-3-11 15:03:01

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

爱飞 发表于 2015-3-19 00:39:48

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

飘灵儿 发表于 2015-3-26 23:48:49

你可以简单地认为适合的就是好,不适合就是不好。
页: [1]
查看完整版本: MYSQL编程:MySQL数据库平安设置指南