MySQL数据库安全配置介绍第1页2
MySQL数据库是一个完全网络化的跨平台关系数据库系统,是一个具有Client/Server体系结构的分布式数据库管理系统,具有功能强、操作简单、管理方便、运行速度快、安全可靠等优点。用户可以用多种语言编写程序访问MySQL数据库,尤其是PHP,MySQL数据库的安全配置也是必要的。现在MySQL数据库中的信息安全受到威胁,所以安全配置是必不可少的。
由于MySQL是一个多平台数据库,所以在所有情况下都应该考虑它的默认配置,因此我们需要在我们自己的环境中进一步加强安全性。
MySQL数据库的安全配置必须从系统内部安全和外部网络安全两方面入手。此外,我们还将简要介绍一些编程中需要注意的问题和一些技巧。
2。系统内部安全
首先,安装MySQL数据库目录structure.mysql简介,当mysql_db_install脚本运行,数据目录和初始化数据库将被建立。如果我们将它与MySQL的源码包,并安装目录 / usr /局部/ MySQL,那么数据目录一般/ usr / / / var.a本地MySQL数据库系统由一系列数据库,每个包含一系列数据库tables.mysql使用数据库名称在数据目录下建立一个数据库,每个数据库表的目录,以数据库表的名称作为文件名。扩展MYD,我和FRM,三文件放在数据库目录。
MySQL授权访问数据库提供了灵活的访问控制,但如果本地用户对库文件有读访问权,如果攻击者只需要将数据库目录复制掉,则将数据复制到您的目录访问窃取数据库,因此MySQL所在的主机的安全性是最重要的问题。如果主机不安全,攻击者控制它,那么MySQL的安全性将不被讨论。接下来是数据目录和数据文件的安全性,也就是权限问题。
从MySQL主站老二进制分布,我们看到,在3.21.xx版本数据目录的属性是775,这是很危险的。任何本地用户可以读取数据目录,所以数据库文件是非常不安全的。3.22.xx版本中数据目录的属性是770。这种财产也是危险的。本地用户可以读写,所以数据文件是不安全的,3.23.xx版本数据目录的属性是700,这是更好的。只有启动数据库的用户才能读取和写入数据库文件,确保本地数据文件的安全。
如果启动MySQL数据库的用户是mysql,那么以下目录和文件是安全的。请注意数据目录和以下属性:
壳> ls - L / usr /局部/ MySQL
总40
drwxrwxr-x 2根4096 2月27日20:07仓
drwxrwxr-x 3根4096包括2月27日20:07
drwxrwxr-x 2根4096 2月27日20:07信息
drwxrwxr-x 3根4096 2月27日20:07库
drwxrwxr-x 2根2月27日4096 libexec 20:07
drwxrwxr-x 3根4096人2月27日20:07
drwxrwxr-x 6根4096 2月27日20:07 MySQL测试
drwxrwxr-x 3根4096 2月27日20:07分享
drwxrwxr-x 7根4096 2月27日20:07 SQL台
drwx ------ 4 mysql 4096 2月27日20:07 VaR
壳> ls - L / usr / / /无功本地MySQL
总8
drwx ------ 2 mysql 4096 2月27日20:08 MySQL
drwx ------ 2 mysql 4096 2月27日20:08试验
壳> ls - L / usr / / /无功本地MySQL或MySQL
总104
- RW ------- 1 mysql 0 2月27日columns_priv.myd 20:08
- RW ------- 1 mysql 1024 2月27日columns_priv.myi 20:08
- RW ------- 1 mysql 8778 2月27日columns_priv.frm 20:08
- RW ------- 1 mysql 302 2月27日db.myd 20:08
- RW ------- 1 mysql 3072 2月27日db.myi 20:08
- RW ------- 1 mysql 8982 2月27日db.frm 20:08
- RW ------- 1 mysql 0 2月27日func.myd 20:08
- RW ------- 1 mysql 1024 2月27日func.myi 20:08
- RW ------- 1 mysql 8641 2月27日func.frm 20:08
- RW ------- 1 mysql 0 2月27日host.myd 20:08
- RW ------- 1 mysql 1024 2月27日host.myi 20:08
- RW ------- 1 mysql 8958 2月27日host.frm 20:08
- RW ------- 1 mysql 0 2月27日tables_priv.myd 20:08
- RW ------- 1 mysql 1024 2月27日tables_priv.myi 20:08
- RW ------- 1 mysql 8877 2月27日tables_priv.frm 20:08
- RW ------- 1 mysql 428 2月27日user.myd 20:08
- RW ------- 1 mysql 2048 2月27日user.myi 20:08
- RW ------- 1 mysql 9148 2月27日user.frm 20:08
如果这些文件的所有者和属性不一样,请用以下两个命令更正它们:
壳> chown -R mysql.mysql / usr /局部/ MySQL /无功
chmod -R去壳> rwx / usr /局部/ MySQL /无功
根服务已经开始在远程用户安全禁忌,如果有问题,因为服务程序,一个远程攻击者完全控制是可能host.mysql已在3.23.15版开始做了一个小的变化。默认安装的服务启动MySQL用户不允许根用户开始。如果你不想开始一个root用户,您必须添加的用户=根参数(。/ safe_mysqld用户=根)。因为在MySQL的SQL语句,如负荷数据文件和选择到输出文件,如果根用户启动MySQL服务器,数据库用户有权限写。然而,MySQL为例作了一些限制,LOAD DATA INFILE只能读取全局可读的文件,选择,到输出文件不能覆盖现有的文件。
本地日志文件不可忽略,包括shell日志和MySQL自己的日志。一些用户在本地登录或备份数据库时,有时会在命令行参数中直接使用数据库的密码,例如:
壳> / usr / / /本地MySQL bin /就test.sql测试>中-第4
壳> / usr / / /本地MySQL bin / MySQL -中-第4
这些命令将被记录在历史文件的外壳,如bash写the.bash_history文件的用户目录,如果文件不小心阅读,那么数据库密码泄漏。SQL命令,用户在登录数据库也通过在用户文件目录the.mysql_history MySQL记录执行。如果数据库用户修改数据库密码的SQL语句,它也将被泄露,因为the.mysql_history文件。所以我们不添加密码直接登陆的壳和备份后,而不是在P,然后输入数据库密码后提示。
此外,我们不应该让它记录我们的操作,以防这两个文件。
rm.bash_history.mysql_history壳>
壳> LN的/ dev / null.bash_history
壳> LN的/ dev / null.mysql_history
这两个命令将这两个文件链接到 null,我们的操作不会在这两个文件中记录。