一、用户

1.1 创建用户

-- 创建用户,并允许其在任何IP登陆
create user 'username'@'%' identified by 'password';

-- 创建用户,并允许其在任何主机登陆,不设置密码
create user 'username'@'%';

-- 创建用户,并仅允许使用jitwxs.cn域名的主机登陆
create user 'username'@'jitwxs.cn' identified by 'password';

-- 创建用户,并仅允许使用192.168.1.1的主机登陆
create user 'username'@'192.168.1.1' identified by 'password';

-- 创建用户,并仅允许使用192.168.1开头的主机登陆
create user 'username'@'192.168.1.%' identified by 'password';

说明:

  • 密码可以为空,如为空,则可以免密登陆
  • 如果主机位使用 %,表示允许任意地址的主机登陆
  • 主机位可以使用域名或者 IP 地址,但是不允许既有数字又有字母
  • 主机位中可以使用 % 进行通配,例如:%.jitwxs.cn192.168.1.%

1.2 修改用户

一般在修改完密码后,需要手动执行命令,将配置刷新到内存:flush privileges;

-- 重新设置用户名和登陆IP
rename user 'old_username'@'old_ip_addr' to 'new_username'@'new_ip_addr';

-- 修改密码
set password for 'username'@'ip_addr'=Password('new_password');

1.3 删除用户

drop user 'username'@'ip_addr';

二、权限

一般在调整完权限后,需要手动执行命令,将配置刷新到内存:flush privileges;

2.1 查看权限

-- 查看用户所有权限
show grants for 'username'@'ip_addr';

2.2 权限授予

-- 授予用户所有库所有表的所有权限
grant all privileges on *.* to 'username'@'ip_addr';

-- 授予用户database1库所有表的所有权限
grant all privileges on `database1`.* to 'username'@'ip_addr';

-- 授予用户database1库table1表的所有权限
grant all privileges on `database1`.`table1` to 'username'@'ip_addr';

-- 授予用户database1库所有表的只读权限
grant select on `database1`.* to 'username'@'ip_addr';

-- 授予用户database1库table1表的插入、更新权限
grant insert,update on `database1`.`table1` to 'username'@'ip_addr';

2.3 权限回收

-- 回收用户所有权限
revoke all,grant option from 'username'@'ip_addr';

-- 回收用户database1库所有表的只读权限
revoke select ON `database1`.* FROM 'xiangsheng.wu'@'%';

2.4 授予什么就收回什么

基于 2.1 节,我们授予权限是可以有不同粒度的,且这些权限保存的位置也是不一样的,比如:

  • 授予全局权限: *.*, 保存在: mysql.user
  • 授予某个库的权限: database1.*, 保存在: mysql.db
  • 授予某张表的权限: database1.tabl1, 保存在: mysql.tables_priv

因此,你要确保当初授予时是如何授予的,回收时候就要咋么回收。

例如授予时采用 .* 的方式授予了所有表的权限,那么回收的时候也必须使用 .* 的方式全部回收,而不能使用 .table_xx 的方式回收某一张表的权限,因为它们压根就不是一个粒度的配置。

2.5 附:常用权限列表

权 限

作用范围

作 用

all

服务器

所有权限

select

表、列

选择行

insert

表、列

插入行

update

表、列

更新行

delete


删除行

create

数据库、表、索引

创建

drop

数据库、表、视图

删除

reload

服务器

允许使用flush语句

shutdown

服务器

关闭服务

process

服务器

查看线程信息

file

服务器

文件操作

grant option

数据库、表、存储过程

授权

references

数据库、表

外键约束的父表

index


创建/删除索引

alter


修改表结构

show databases

服务器

查看数据库名称

super

服务器

超级权限

create temporary tables


创建临时表

lock tables

数据库

锁表

execute

存储过程

执行

replication client

服务器

允许查看主/从/二进制日志状态

replication slave

服务器

主从复制

create view

视图

创建视图

show view

视图

查看视图

create routine

存储过程

创建存储过程

alter routine

存储过程

修改/删除存储过程

create user

服务器

创建用户

event

数据库

创建/更改/删除/查看事件

trigger


触发器

create tablespace

服务器

创建/更改/删除表空间/日志文件

proxy

服务器

代理成为其它用户

usage

服务器

没有权限

三、备份与恢复

3.1 备份

-- 备份database1库所有表结构+数据
mysqdump -u username database1 > database1.sql -p

-- 备份database1库所有表结构
mysqdump -u username -d database1 > database1.sql -p

3.2 恢复

-- 进入数据库
use database1;
-- 将备份文件恢复到数据库中
mysqdump -u username -d database1 < database1.sql -p