MySQL中为什么要设置用户管理
对于这个话题,我相信对于一个技术人员来说,已经是不能再谈的话题了。说的简单通俗一点就是为了安全。
MySQL中用户的分类
1.超级管理员 我们在安装MySQL之后,MySQL系统为给我们自带一个用户,那就是root用户,这个用户具有MySQL当中所有的,功能这个用户只有最高权限的人才会拥有,一般来说是DBA中职级最高的。同时我们也可以自己手动创建一个普通用户,给它赋予最高的权限,这时候这个普通用户就是超级管理员了,下面会讲解如何创建。 2.普通用户 所谓的普通用户,这就不难理解了,就是只有部分权限的用户啦。一般我们在创建该用户时,会根据这个用户的只能来划分。比如用户只需要做查表操作,就只给select权限,需要做增删改查,就给insert、delete、update、select权限。
如何划分权限
权限的划分非常重要,因为权限的大小决定了该用户对数据库的操作。一般我们划分就按照用户的功能划分。比如普通的开发人员只需要做一些简单的增删改查,就只给这几个权限即可;级别更高一点的,比如需要对数据库导入导出等操作,我们也可以给到对应的权限。
查看mysql系统当前存在的用户
通过1中,我们知道数据库的用户信息存在mysql数据库中的user表中,我们查询该表,结果如下。Host字段是当前用户可登录的ip地址(如果是*则代表可任意地址登录),User字段是用户名称,Password是用户密码。
mysql> select Host, User, Password from user;
Host | User | Password |
---|---|---|
localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
自定义用户
为什么需要自定义用户呢?我们会从如下几个方面考虑,权限、职能。 默认的root用户属于mysql中的超级管理员的职能,如果每个人都能拿到该root的权限,容易发生一些操作错误,轻者数据库部分数据出现问题,重则整个数据库遭到毁灭。 默认的root用户属于mysql中的超级管理员的职能,容易遭到怀有恶意企图的人所利用。 默认的root用户属于mysql中的超级管理员的职能,给定指定用户相应的权限,可以保证每个用户只能使用该用户职责内的权限,既可以保证数据库的分工更加精细化,同时也保证了数据库的安全。
创建mysql用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
// 给该用户授予相应的权限(privileges_name为all时,则表示授予所有权限;当privilege_name具体到某些权限是,privileges不需要添加,下面收回权限处的含义一致)
GRANT privileges_name privileges ON databasename.tablename TO 'username'@'host';
// 刷新权限,使新创建的用户能够使用
flush privileges;
// 收回用户权限
phpREVOKE privileges_name privilege ON databasename.tablename FROM 'username'@'host';
如果我们创建了相同的用户名,需要删除第一次创建时的用户名,不能只删除mysql库下的user表信息,应该使用drop user username命令进行删除用户操作。然后使用flushprivileges进行权限刷新。如果按照上述操作,提示用户无法登录,查看防火墙状态,centos7防火墙设置参考链接
删除用户
drop USER 'username'@'host';
刷新权限
flush privilege
修改用户密码
// 修改指定用户密码
set password for'username'@'host' = password('newpassword');
// 设置当前登录用户的密码
set password = password('newpassword');
centos设置防火墙
1.centos6设置防火墙 a.查看防火墙状态
service iptable status
b.重启防火墙
service iptables restart
c.开放端口
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save
d.查看开放的端口
/etc/init.d/iptables status
e.关闭防火墙
servcie iptables stop(临时关闭)
chkconfig iptables off(永久关闭)
f.启动防火墙
service iptables start(临时生效)
chkconfig iptables on(永久生效)
2.centos7设置防火墙 a.查看防火墙状态(3种方式)
1.firewall-cmd --state
2.systemctl list-unit-files|grep firewalld.service
3.systemctl status firewalld.service
b.重启防火墙
systemctl restart firewalld.service
c.开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
d.查看开放的端口
firewall-cmd --list-ports
e.关闭防火墙
systemctl stop firewalld.service(临时关闭)
systemctl disable firewalld.service(永久禁用)
f.启动防火墙
systemctl start firewalld.service