1.MySQL权限介绍:
MySQL中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表。先从user表中的Host,User,Password这三个字段中判断连接的IP、用户名、密码是否存在,存在则通过验证。通过验证之后,则会进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。即先检查权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y。网站使用时是否建议给予权限如下:
1)限制访问MySQL端口的IP:Windows可以通过Windows防火墙和Ipsec来限制,Linux下可以通过Iptables来限制。
2)修改MySQL的端口:Windows下可以修改配置文件my.ini来实现,Linux可以修改配置文件my.cnf来实现。 3)对所有用户设置强密码并严格指定对应账号的访问IP。(Tip:MySQL中user表可指定用户可访问的IP) 4)root特权账号的处理:root账号最好设置强密码并且设置只允许本地登录。 5)日志的处理:查询日志会记录登录和查询语句。 6)MySQL进程运行账号:最好禁止使用local system去运行MySQL账户,建议使用network service或者新建一个账户,只要给予MySQL程序所在目录的读取权限和data目录的读写权限即可;Linux系统中,新建一个MySQL账号,并在安装时指定以MySQL账户来运行,并给予程序所在目录的读取权限,data目录读写权限。
7)MySQL运行账号的磁盘权限:
a、MySQL运行账号需要给予程序所在目录的读取权限,以及data目录的读取和写入权限。
b、不容许给予其他目录的写入和执行权限,特别是有网站的。
c、取消MySQL运行账户对于cmd,sh等一些程序的执行权限。
8)网站使用MySQL账户的处理:
新建一个账户,给予账户所使用数据库的所有权限即可,这样能保证账户不会因为权限过高而影响安全。给予单个数据库所有权限的账户不会拥有super,process,file等管理权限。
9)删除没使用的数据库:比如test数据库,该数据库对新建的账户默认有权限。
1.MySQL的root用户是空密码,为了安全起见必须修改为强密码,命令:
2.刷新内存授权表,否则还是使用缓存中的口令,即还可以使用空口令进行登录,命令:
3.系统管理员用户名为root,为了安全起见建议修改,命令:
4.给予相应的数据库权限:
5.刷新权限:
6.显示权限,可以看到刚才添加的权限语句:
7.移除权限:
可以看到之前添加的权限已经取消:
8.添加用户:
9.删除用户:
10.用户改名: