在开发工作中,有时候我们需要限制用户访问特定的数据库或表,或限制特定操作,如SELECT、INSERT、UPDATE等操作。在用户创建完成后,就需要对用户进行授权了。同时,为其他用户授权的先决条件是,当前用户具有GRANT权限。
在初始化阶段,可以使用root用户进行授权,也可以先通过root用户创建管理员账户,再使用管理员账户来管理用户。
用法:grant 权限 on db_name.table_name to ‘username’@’ip’;
将只读权限(SELECT)授予给readonly用户
1. 能够访问所有库所有表
grant select on *.* to 'readonly'@'%';
2. 仅能访问部分库的所有表
如授权readonly仅能访问demo_db的所有表,
grant select on demo_db.* to 'readonly'@'%';
3. 仅能访问指定库的指定表的所有列
如授权readonly仅能访问demo_db的demo_table,
grant select on demo_db.demo_table to 'readonly'@'%';
4. 仅能访问指定库的指定表的部分列
如授权readonly仅能访问demo_db的demo_table的[first_col、second_col]列,
grant select(first_col,second_col) on demo_db.demo_table to 'readonly'@'%';
INSERT权限授予insertonly用户
grant insert on *.* to 'insertonly'@'%';
WRITE权限授予新的user_write用户
grant insert,delete,update on *.* to 'user_write'@'%';