|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使对于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,那末我们的操纵就不会被纪录到这两个文件里了。
[1][2][3]下一页
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。 |
|