MySQL用户和权限管理

ぐ巨炮叔叔 提交于 2020-03-16 13:57:11

某厂面试归来,发现自己落伍了!>>>

1、创建数据库用户

MySQL安装好了以后,使用root用户登录MySQL,我们使用create user方法创建用户,如下:

创建了一个用户名为neiwang,密码为1234qwer的用户,他只能在ip172.17.22.*的网段登录MySQL服务器,这样的方法可以指定哪个IP可以用哪个用户登录MySQL

2、权限分配

    创建好用户以后,我们要对这些用户进行授权,它才能够进行相应的数据库操作。使用grant进行授权,具体的权限列表如下:


权限

权限级别

权限说明

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线程权限

具体的授权语法,比如我们现在服务器上有一个叫做test数据库,我们要把这个数据库的所有表的查增删改的权限赋予刚才创建的neiwang用户: 

GRANT USAGE,SELECT,INSERT,UPDATE,DELETE ON `test`.*  TO  'neiwang'@'172.17.16.%';

授权以后,我们可以用SHOW GRANTS命令来查看该用户的权限,如下:


 

 

同理,如果要将创建表,执行存储过程等权限赋予给neiwang用户,则我们使用语法:

GRANT USAGE,CREATE TEMPORARY TABLES,EXECUTE ON `test`.*  TO   'neiwang'@'172.17.16.%';

 

如果要把某个库的所有权限赋予给neiwang用户,还可以使用如下方法:

GRANT ALL PRIVILEGES ON `test`.* TO 'neiwang'@'172.17.16.%' WITH GRANT OPTION 

FLUSH PRIVILEGES;

 

"WITH GRANT OPTION" 表示该用户可以为其他用户分配权限。

FLUSH PRIVILEGES用于刷新权限,使刚赋予的权限立即生效。


3、回收权限

REVOKE DELETE ON test.* FROM 'neiwang'@'172.17.16.%';

4、删除数据库用户

DROP USER 'neiwang'@'172.17.16.%';

角色和权限管理还可以参考相关博文:

http://blog.chinaunix.net/uid-20639775-id-3249105.html

http://my.oschina.net/huxuanhui/blog/23784?fromerr=Asp7GXtt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!