1. 小声哔哔
Mysql及navicat的安装不是我想细讲的,linux上mysql的安装我已写有博客及脚本,大家可以参考。
2. Mysql权限
为防止删库跑路,我们需要对mysql的用户权限进行限制,而mysql的用户权限是由user表,db表,tables_priv表,columns_priv表进行控制。
User表:存放用户账户信息以及全局级别(所有数据库)权限,决定了来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味着对所有数据库都有此权限;
DB表:存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库;
Tables_priv表:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库的这个表;
Columns_priv表:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问此数据库的这个表的这个字段;
Procs_priv表:存放存储过程和函数级别的权限。
认证的顺序为先认证用户在user表中是否存在,且密码正确。而后进行权限认证,若用户权限在user标准已设置为Y,则不验证后续三张表,若为N,则检查db表中权限是否为Y,依次类推,权限认证优先级为user->db->tables_priv->columns_priv。
3. Mysql常见的权限
类型 | 权限名 | 描述 |
大权限 | ALL或ALL PRIVILEGES | 代表指定权限等级的所有权限 |
数据操作相关 | SELECT | 允许从表中查看数据,select权限在执行update/delete语句中含有where条件的情况下也是需要的 |
INSERT | 允许在表里插入数据 | |
UPDATE | 允许修改表中的数据的权限 | |
DELETE | 允许删除表中数据 | |
结构相关 | CREATE | 允许创建新的数据库和表 |
DROP | 允许删除数据库及表 | |
INDEX | 允许创建和删除索引 | |
ALERT | 允许使用ALTER TABLE来改变表的结构,ALTER TABLE同时也需要CREATE和INSERT权限 | |
CREATE VIEW | 允许创建视图 | |
CREATE ROUTINE | 允许创建存储过程和包 |
4.用户权限维护
使用grant命令创建用户,示例如下:
grant select,insert,update,delete,create,drop on *.* to testuser@"%" identified by '123456';
flush privileges;
注:这里的百分号代表用户可以在哪个主机上登录,使用localhost代表只能在本机登录,使用%作为通配符代表可以在任意主机登录。
执行查询语句查看新建用户的权限情况:
SELECT * FROM `user` WHERE `User` = 'testuser';
收回用户权限:
revoke delete on *.* from 'testuser'@'%';
重新赋予权限:
grant delete on *.* to 'testuser'@'%';