1.登陆MySQLphp
mysql -u root -p
2.添加新用户(容许全部ip访问)mysql
create user 'test'@'%' identified by '123456';
#test:用户名,%:全部ip地址,123456:密码
sql
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';
#分配特定的权限数据库
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访问全部库和表的权限,*.* 第一个*是全部的库,第二个*是全部的表ide
1.2.3.4是能够访问的IP地址,spa
with grant option是指容许用户dba,传递其拥有的权限给其余的用户线程
8. 授予只读权限code
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线程权限 |