本篇内容介绍了“MySQL的安全使用方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
MySQL 基础知识
MySQL是一个流行的关系型数据库管理系统(Relational Database Management System,RDMS),在与PHP结合应用方面,MySQL是最好的关系型数据库管理系统之一。MySQL使用不当,常常会引起致命的安全问题。
1、运行安全
为了防止攻击者通过MySQL漏洞越权获取更高的权限,不要使用系统root用户运行MySQL服务器。mysqld默认拒绝使用root运行,如果对mysqld服务需要指定用户进行运行,应该使用普通非特权用户运行mysqld,同时为数据库建立独立的Linux中的MySQL账户,该账户只用于管理和运行MySQL。
在MySQL配置/etc/my.cnf文件中指定执行账户。
vim /etc/my.cnf [mysqld] user=mysql
这个配置使服务器用指定的用户来启动,无论是手动启动还是通过mysqld_safe或mysql.server启动,都能确保使用MySQL的身份。也可以在启动参数上进行配置,加上user参数。
/usr/local/mysql/bin/mysqld_safe --user=mysql &
默认的MySQL安装在/usr/local/mysql,对应的默认数据库文件在/usr/local/mysql/var目录下,必须保证该目录不能让未经授权的用户访问后把数据库打包复制走,所以要限制对该目录的访问。mysqld运行时,只使用对数据库目录具有读或写权限的Linux用户来运行。
MySQL主目录只允许root用户进行访问。
chown -R root /usr/local/mysql/
数据库目录只允许MySQL用户进行访问。
chown -R mysql.mysql /usr/local/mysql/var
2、密码安全
默认安装的MySQL的root用户密码是空密码,为了安全起见,必须修改为强密码,即至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的mysqladmin命令修改root密码。
mysqladmin -u root password "new-password" //使用mysqladmin修改密码
同时可以使用下面的命令登录数据库对密码进行修改。
mysql>use mysql mysql>update user set pas sword=pas sword('new-password') where user='root'; mysql>flush privileges; // 强制刷新内存授权表,否则使用的还是在内存缓冲的口令
3、账号安全
系统MySQL的默认管理员名称是root,而一般情况下,数据库管理员都没有进行修改,这在一定程度上为系统用户密码暴力破解的恶意攻击行为提供了便利,应该修改为复杂的用户名,加强账号的安全,同时不要使用admin或者administrator,因为它们也在易猜解的用户字典中。
mysql>update user set user="new-root-name" where user="root"; mysql>flush privileges; // 强制刷新内存授权表,否则使用的还是在内存缓冲的口令
需要正确地给用户分配权限,不要将全部权限分配给普通用户,有选择性地分配读写权限,如只分配查询权限给用户。
mysql>grant SELECT on db.table to username@'localhost'
不要将with grant option授权给普通用户,防止普通用户将权限授予他人,造成管理混乱。
表1是常用的权限及说明。
表1 null