1.登录MySQL
mysql -u root -p
2.添加新用户(允许所有ip访问)
create user 'test'@'%' identified by '123456';
#test:用户名,%:所有ip地址,123456:密码
3.创建数据库
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
4.为新用户分配权限
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
#授权给用户test,数据库test_db相关的所有权限,并且该用户test在所有网络IP上都有权限,%是指没有网络限制
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';
#分配特定的权限
5.刷新权限
flush privileges;
6. 修改用户的IP访问权限
use mysql;
update user set host = '%' where user ='test';
7. 授予管理员权限
grant all privileges on *.* to 'dba'@'1.2.3.4' IDENTIFIED BY 'mypassword' with grant option;
授予用户dba访问所有库和表的权限,*.* 第一个*是所有的库,第二个*是所有的表
1.2.3.4是可以访问的IP地址,
with grant option是指允许用户dba,传递其拥有的权限给其他的用户
8. 授予只读权限
grant select on *.* to 'select_only_user'@'%' IDENTIFIED BY 'your_password';
授予用户select_only_user 所有库和表的select 权限
9. 收回权限
revoke insert on *.* from 'someone'@'%';
收回用户someone的所有库和表的插入权限
revoke跟grant语法差不多,只需要把关键字 “to” 换成 “from” 即可,并且revoke语句中不需要跟密码设置。
注意:revoke可以回收所有权限,也可以回收部分权限。
10. 要废掉已经拥有的with grant option权限
revoke grant option on *.* from somebody;
11. 授予很多的权限
grant insert,select,update on test_db.test_tbl to someone@'localhost' identified by '123456';
grant 权限列表 on 数据库名.数据表名 to '用户名'@'主机' identified by '密码' with grant option;
授予someone用户insert,select, update等权限
12. 查看某个用户的权限
show grants for 用户名@主机;
13. 删除用户
drop user '用户名'@'主机';
14. 刷新权限
flush privileges;
15.
如果给一个用户设置的权限过大,除了上面使用revoke回收部分权限外,还可以使用grant进行权限修改!
也就是说,grant不仅可以添加权限,也可以修改权限(实际上就是对同一’用户名’@’ip’设置权限,以覆盖之前的权限);
grant修改后的权限将覆盖之前的权限!
那么问题来了:授权后的密码是密文形式保存的,如果记不住之前授权时的密码,那么怎样保证覆盖后的权限跟之前的权限一致?
莫慌!
grant授权操作中其实不仅可以设置明文密码,也可以设置密文密码,如下:
1)grant 权限列表 on 库.表.* to 用户名@’ip’ identified by “明文密码”
2)grant 权限列表 on 库.表.* to 用户名@’ip’ identified by password “密文密码”
也就是说:
在grant重置权限的时候可以用查看的密文密码当做新的密码,然后去覆盖之前的权限,这就保证了修改前后的密码一致!
Mysql权限列表
权限 | 权限级别 | 权限说明 |
create | 数据库、表或索引 | 创建数据库、表或索引权限 |
drop | 数据库或表 | 删除数据库或表权限 |
grant option | 数据库、表或保存的程序 | 赋予权限选项 |
references | 数据库或表 | 外键权限 |
alter | 表 | 更改表,比如添加字段、索引、修改字段等 |
delete | 表 | 删除数据权限 |
index | 表 | 索引权限 |
insert | 表 | 插入权限 |
select | 表 | 查询权限 |
update | 表 | 更新权限 |
create view | 视图 | 创建视图权限 |
show view | 视图 | 查看视图权限 |
alter routine | 存储过程 | 更改存储过程权限 |
create routine | 存储过程 | 创建存储过程权限 |
execute | 存储过程 | 执行存储过程权限 |
file | 服务器主机上的文件访问 | 文件访问权限 |
create temporary tables | 服务器管理 | 创建临时表权限 |
lock tables | 服务器管理 | 锁表权限 |
create user | 服务器管理 | 创建用户权限 |
proccess | 服务器管理 | 查看进程权限 |
reload | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
replication client | 服务器管理 | 复制权限 |
replication slave | 服务器管理 | 复制权限 |
show databases | 服务器管理 | 查看数据库权限 |
shutdown | 服务器管理 | 关闭数据库权限 |
super | 服务器管理 | 执行kill线程权限 |
最新评论