windows 下配置一个更安全的 MySQL
环境
- MySQL 版本:mysql-5.6.16-winx64.zip
- windows 版本:Microsoft Windows Server 2008 R2 Enterprise
安装步骤
- 解压mysql-5.6.16-winx64.zip至e:\software\mysql
- 将e:\software\mysql\bin添加至系统变量path中,使得cmd中可以直接运行bin文件夹下的程序
- 修改mysql目录下的my-default.ini为my.ini,按情况修改配置
- 将mysql安装为windows服务,然后启动mysql
将mysql安装为windows服务
1
C:\Users\Administrator> mysqld --install mysql --defaults-file=e:\software\mysql\my.ini
去除mysql服务
1
C:\Users\Administrator> mysqld --remove
启动mysql
1
C:\Users\Administrator> net start mysql
关闭mysql
1
C:\Users\Administrator> net stop mysql
mysql配置
[mysqld]
# 设置mysql的安装目录
basedir = e:/software/mysql
# 设置mysql的数据存放目录
datadir = e:/software/mysql/data
# 允许的最大连接数,设置过小会出现Too many connections错误
max_connections = 2000
# 设置mysql接收的数据包大小,设置过小会出现mysql has gone away错误
max_allowed_packet = 10M
# 设置SQL mode为严格
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 设置默认字符集
character-set-server=utf8
mysql安全加固
- 修改root用户口令,删除空口令 默认安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改方法如下所示:
1 2 3 4 5 6
# 使用mysqladmin C:\Users\Administrator> mysqladmin -u root password "upassword" # 登录mysql C:\Users\Administrator> use mysql; C:\Users\Administrator> update user set password=password('upassword') where user='root'; C:\Users\Administrator> flush privileges;// 强制刷新内存授权表,否则用的还是在内存缓冲的口令
- 删除默认数据库和数据库用户 一般情况下,MySQL数据库安装在本地,并且也只需要本地的php脚本对mysql进行读取,所以很多用户不需要,尤其是默认安装的用户。MySQL初始化后会自动生成空用户和test库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加用户和数据库。
1 2 3 4 5 6 7 8
C:\Users\Administrator> show databases; C:\Users\Administrator> drop database test;// 删除数据库test C:\Users\Administrator> use mysql; C:\Users\Administrator> delete from db;// 删除存放数据库的表信息,因为还没有数据库信息。 C:\Users\Administrator> delete from user where user='';// 删除空用户 C:\Users\Administrator> delete from user where user='root' and password='';// 删除空密码的root,尽量重复操作 Query OK, 2 rows affected (0.00 sec) C:\Users\Administrator> flush privileges; //强制刷新内存授权表。
- 改变默认mysql管理员帐号 系统mysql的管理员名称是root,而一般情况下,数据库管理员都没进行修改,这一定程度上对系统用户穷举的恶意行为提供了便利,此时修改为复杂的用户名,请不要在设定为admin或者administraror的形式,因为它们也在易猜的用户字典中。
1 2
C:\Users\Administrator> update user set user="newroot" where user="root";// 改成不易被猜测的用户名 C:\Users\Administrator> flush privileges;
- 给数据库schema分配用户
1
GRANT SELECT, INSERT, UPDATE, DELETE on schema.* to mysql@localhost identified by 'password'
本文由作者按照 CC BY 4.0 进行授权
Comments powered by Disqus.