`
netxdiy
  • 浏览: 679970 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL数据库配置技巧

 
阅读更多

<script type="text/javascript"><!-- google_ad_client = "pub-0241434510974184"; /* auto-http.cn 右边 ,468x60 */ google_ad_slot = "0902256228"; google_ad_width = 468; google_ad_height = 60; // --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

用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,那么我们的操作就不会被记录到这两个文件里了。
编程需要注意的一些问题

不管是用哪种程序语言写连接MySQL数据库的程序,有一条准则是永远不要相信用户提交的数据!
对于数字字段,我们要使用查询语句:SELECT*FROMtableWHEREID='234',不要使用SELECT*FROMtableWHEREID=234这样的查询语句

。MySQL会自动把字串转换为数字字符并且去除非数字字符。如果用户提交的数据经过了mysql_escape_string处理,这样我们就可以完全杜绝

了sqlinject攻击,关于sqlinject攻击请参考下面链接的文章:
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
http://www.ngssoftware.com/papers/advanced_sql_injection.pdf
各种编程语言该注意的问题:

1)所有Web程序:
a)尝试在Web表单输入单引号和双引号来测试可能出现的错误,并找出原因所在。
b)修改URL参数带的%22('"'),%23('#'),和%27(''')。
c)对于数字字段的变量,我们的应用程序必须进行严格的检查,否则是非常危险的。
d)检查用户提交的数据是否超过字段的长度。
e)不要给自己程序连接数据库的用户过多的访问权限。

2)PHP:
a)检查用户提交的数据在查询之前是否经过addslashes处理,在PHP4.0.3以后提供了基于MySQLCAPI的函数mysql_escape_string()。

3)MySQLCAPI:
a)检查查询字串是否用了mysql_escape_string()API调用。

4)MySQL++:
a)检查查询字串是否用了escape和quote处理。

5)PerlDBI:
a)检查查询字串是否用了quote()方法。

6)JavaJDBC:
a)检查查询字串是否用了PreparedStatement对象。

4、一些小窍门

1)如果不慎忘记了MySQL的root密码,我们可以在启动MySQL服务器时加上参数--skip-grant-tables来跳过授权表的验证(./safe_mysqld

--skip-grant-tables&),这样我们就可以直接登陆MySQL服务器,然后再修改root用户的口令,重启MySQL就可以用新口令登陆了。

2)启动MySQL服务器时加上--skip-show-database使一般数据库用户不能浏览其它数据库。

3)启动MySQL服务器时加上--chroot=path参数,让mysqld守护进程运行在chroot环境中。这样SQL语句LOADDATAINFILE和SELECT...INTO

OUTFILE就限定在chroot_path下读写文件了。这里有一点要注意,MySQL启动后会建立一个mysql.sock文件,默认是在/tmp目录下。使用了

chroot后,MySQL会在chroot_path/tmp去建立mysql.sock文件,如果没有chroot_path/tmp目录或启动MySQL的用户没有这个目录写权限就不能

建立mysql.sock文件,MySQL会启动失败。比如我们加了--chroot=/usr/local/mysql/启动参数,那么最好建立一个启动MySQL的用户能写的
/usr/local/mysql/tmp目录,当然我们也可以用--socket=path来指定mysql.sock文件的路径,但这个path一定要在chroot_path里面。

4)启动MySQL服务器时加上--log-slow-queries[=file]参数,这样mysqld会把SQL命令执行时间超过long_query_time的写入file文件。如果没

有指定=file,mysqld默认会写到数据目录下的hostname-slow.log。如果只指定了filename,没有指定路径,那么mysqld也会把filename写到

数据目录下。我们通过这个日志文件可以找出执行时间超长的查询语句,然后尽可能的优化它减轻MySQL服务器的负担。

5)如果我们只需本机使用MySQL服务,那么我们还可以加上--skip-networking启动参数使MySQL不监听任何TCP/IP连接,增加安全性。(非常推

荐)

分享到:
评论

相关推荐

    flask框架配置mysql数据库操作详解

    主要介绍了flask框架配置mysql数据库操作,结合实例形式详细分析了flask框架配置mysql数据库及连接访问等相关操作技巧,需要的朋友可以参考下

    MySQL数据库安全配置_实用技巧来个内外兼修(1).rar_MYSQL

    MySQL数据库安全配置_实用技巧来个内外兼修(1)

    MySQL数据库优化技术之配置技巧总结

    主要介绍了MySQL数据库优化技术之配置技巧,较为详细的总结分析了MySQL进行硬件级软件优化的相关方法与注意事项,需要的朋友可以参考下

    nodejs连接mysql数据库及基本知识点详解

    主要介绍了nodejs连接mysql数据库,结合实例形式总结分析了nodejs连接与操作mysql数据库的相关模板、配置及mysql数据库查询、添加数据等操作技巧,需要的朋友可以参考下

    MySQL/PHP数据库应用开发指南

    全书共分为5个部分,首先讲解了使用MySQL所需了解的数据库方面的知识,接着探讨了PHP的基本脚本语言、PHP函数以及编写可管理的简捷代码的技巧,然后给出了两个简单的应用程序,来宾簿和调查表,在实践中应用所学的...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    25-MySQL数据库多实例的多种配置方案介绍.avi 26-MySQL数据库多实例安装实战讲解.avi 27-MySQL数据库多实例初始化及服务启动.avi 28-MySQL数据库多实例启动问题排错方法及实战排错.avi 29-MySQL数据库多实例实战排错...

    如何使用mysql/mysql配置教程

    6 操作技巧 5 7 显示命令 6 7.1 显示数据库列表 6 7.2 显示库中的数据表 6 7.3 显示数据表的结构 7 7.4 建库 8 7.5 建表 8 7.6 删库和删表 8 7.7 将表中记录清空 8 7.8 显示表中的记录 8 8 一个建库和建表以及插入...

    MySQL/PHP数据库应用开发指南 PDF版 PART1

    全书共分为5个部分,首先讲解了使用MySQL所需了解的数据库方面的知识,接着探讨了PHP的基本脚本语言、PHP函数以及编写可管理的简捷代码的技巧,然后给出了两个简单的应用程序,来宾簿和调查表,在实践中应用所学的...

    PHP、Apache、MySQL的整合配置技巧.pdf

    PHP、Apache、MySQL的整合配置技巧.pdf

    2024最强MySQL安装配置教程(一篇就够了).zip

    这篇博客适用于想要在自己的计算机上安装和配置MySQL数据库系统的读者。它的目标是帮助读者掌握MySQL的安装、配置、基本操作和进阶技巧,从而能够有效地管理和操作数据库。 其他说明: 博客采用通俗易懂、口语化的...

    Yaf框架封装的MySQL数据库操作示例

    主要介绍了Yaf框架封装的MySQL数据库操作,结合实例形式分析了Yaf框架基于PDO操作MySQL数据库的相关配置、连接、增删改查、统计等相关操作技巧,需要的朋友可以参考下

    MySQL数据库优化技术之索引使用技巧总结

    这里紧接上一篇《MySQL数据库优化技术之配置技巧总结》,进一步分析索引优化的技巧: (七)表的优化 1. 选择合适的数据引擎 MyISAM:适用于大量的读操作的表 InnoDB:适用于大量的写读作的表 2.选择合适的列类型 使用 ...

    mysql-connector-odbc各个版本的msi安装包合集

    资源中包含了驱动程序的下载链接、安装步骤、配置方法以及连接MySQL数据库的基本操作。此外,还提供了常见问题解答和最佳实践建议,帮助用户更好地使用mysql-connector-odbc进行数据库连接和数据交互。 适用人群: ...

    mysql网络数据库指南(中文版) part1

    MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL ...

    详解:WebSphere中流行数据库连接池的配置

    本文介绍WebSphere下Oracle、SQL Server、Sybase、MySQL数据库连接池的配置方法,并给出相应调用连接池的示例。相对于Weblogic,WebSphere连接池的配置要稍微复杂一些,因为缺少相关的文档,需要一定的技巧和经验。...

    MySQL排错指南

    《MySQL排错指南》共分为7章,其内容涵盖了解决MySQL问题的基本技巧、MySQL中的并发问题、服务配置的影响、MySQL硬件和运行环境相关的问题、复制备份中的故障排除、故障排除使用的技术和工具,以及一些MySQL故障排除...

    MYSQL网络数据库PDF学习资源

    MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。 它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL ...

    三大主流数据库神速上手(MySQL、MSSQL、Oracle)

    其中分库介绍了,各个数据库的基本独立使用,以及各自的安装和配置。课程中主要是以SQL脚本为基础,带领学员更加牢固的掌握知识点。学员在学习的过程中能够体验到与普通数据库不同之处和一些非常实用性的脚本使用。...

Global site tag (gtag.js) - Google Analytics