MySQL用户及权限管理

MySQL用户及权限管理

用户管理

新增用户

create user 用户名 IDENTIFIED by '密码';

修改用户名

rename user feng to newuser;

修改密码

  • 方法1
alter user 用户名@'主机host' identified by '密码';

示例:

alter user root@localhost identified by "root";

  • 方法2
set password for 用户名 = '密码';

删除用户

drop user 用户名;

MySQL 5之前删除用户时必须先使用revoke删除用户权限,然后删除用户

MySQL 5之后drop命令可以删除用户的同时删除用户的相关权限

权限管理

mysql的权限

参考: http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

权限权限级别权限说明
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服务器管理创建用户权限
PROCESS服务器管理查看进程权限
RELOAD服务器管理执行flush-hosts, flush-logs, flush-privileges, flush-status,flush-tables, flush-threads, refresh, reload等命令的权限
REPLICATION CLIENT服务器管理复制权限
REPLICATION SLAVE服务器管理复制权限
SHOW DATABASES服务器管理查看数据库权限
SHUTDOWN服务器管理关闭数据库权限
SUPER服务器管理执行kill线程权限

查看用户已有权限

show grants for 用户名;

分配权限

GRANT 权限列表 ON 权限作用域 TO 用户名@<host> [IDENTIFIED BY '密码'] [WITH GRANT OPTION]; 

权限列表

参考 [mysql的权限]


作用区域包括:

  1. *.*                   整个服务器
  2. database.*            数据库的所有元素
  3. database.table          数据库的特定表
  4. GRANT Update (字段1,字段2) ON 库名.表名 TO 用户名@主机host;    数据库的特定表的特定字段

host可以取值:

  1. %               匹配所有主机
  2. localhost         localhost不会被解析成IP地址,直接通过UNIXsocket连接
  3. xxx.xxx.xxx.xxx   会通过TCP/IP协议连接,并且只能在本机访问;
  4. ::1               ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1

  • IDENTIFIED BY           ‘密码’ 密码是可选的,如果使用此项,将修改用户密码。

  • WITH GRANT OPTION     选项是可选,代表用户可以使用GRANT/REVOKE命令将他拥有的权限赋予其他用户。请小心使用这项功能。

demo

grant all privileges  on xxxx.* to username@'%';
grant super on *.* to xxxx@'%';
flush privileges;

flush privileges表示刷新权限。

回收权限

REVOKE  权限列表 ON 权限作用域 FROM 用户名@<host>[,用户名@<host>];

各属性取值同[权限分配]

刷新权限

flush privileges;

新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。