0
点赞
收藏
分享

微信扫一扫

MySQL用户权限管理

MySQL用户权限管理


用户权限管理

  • ​​MySQL用户权限管理​​
  • ​​一、用户管理​​
  • ​​创建用户​​
  • ​​删除用户​​
  • ​​二、用户权限管理​​

一、用户管理

创建用户

格式:

create User ’UserName‘@’HostName‘ identified by ’PassWord‘;
UserName:要创建的用户名
HostName:指定用户在哪个主机上可以登录,如果是本地用户那为localhost
如果想让用户可以从任意远程主机登录,那可以使用统配符%
PassWord:该用户的密码,秘密可以为空

//1.本地主机登录
Create User ‘ZhangSan’@’localhost’ identified by ‘123456’;
//2.从地址为192.168.1.10的主机上登录
Create User ‘ZhangSan’@’192.168.1.10’ identified by ‘123456’;
//3.从任意远程主机上登录
Create User ‘ZhangSan’@’%’ identified by ‘123456’;
//4.从任意远程主机登录,密码为空
Create User ‘ZhangSan’@’%’ identified by ‘’;
//5.从任意远程主机登录,密码为空
Create User ‘ZhangSan’@’%;

删除用户

Drop User ’username‘@’host‘;

二、用户权限管理

MySql数据库的权限层级分为:

1.全局——可以管理整个MySql

2.库——可以管理指定的数据库

3.表——可以管理指定数据库的指定表

4.字段——可以管理指定数据库的指定表的指定字段

MySQL对用户有赋权操作和收回权限 的操作。修改用户权限后需退出重连,才能生效

赋予用户权限

命令格式:grant 权限 on 数据库对象 to 用户

1.查看用户权限  show  grants;

2.查看用户具体权限的语句
select * from mysql.user where user='root'\G
尾数参数G的作用:每个字段打印到单独的行,后面无需再有;

权限字段用途说明表

Select_priv

确定用户是否可以通过SELECT命令选择数据

Insert_priv

确定用户是否可以通过INSERT命令插入数据

Update_priv

确定用户是否可以通过UPDATE命令修改现有数据

Delete_priv

确定用户是否可以通过DELETE命令删除现有数据

Create_priv

确定用户是否可以创建新的数据库和表

Drop_priv

确定用户是否可以删除现有数据库和表

Reload_priv

确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表

Shutdown_priv

确定用户是否可以关闭MySQL服务器,将此权限提供给root账户之外的任何用户时,都应当非常谨慎

Process_priv

确定用户是否可以通过SHOW

File_priv

确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令

Grant_priv

确定用户是否可以将已经授予给该用户自己的权限再授予其他用户,例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户

References_priv

目前只是某些未来功能的占位符,现在没有作用

Index_priv

确定用户是否可以创建和删除表索引

Alter_priv

确定用户是否可以重命名和修改表结构

Show_db_priv

确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库,可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因

Super_priv

确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令

Create_tmp_table_priv

确定用户是否可以创建临时表

Lock_tables_priv

确定用户是否可以使用LOCK

Execute_priv

确定用户是否可以执行存储过程,此权限只在MySQL 5.0及更高版本中有意义

Repl_slave_priv

确定用户是否可以读取用于维护复制数据库环境的二进制日志文件,此用户位于主系统中,有利于主机和客户机之间的通信

Repl_client_priv

确定用户是否可以确定复制从服务器和主服务器的位置

Create_view_priv

确定用户是否可以创建视图,此权限只在MySQL 5.0及更高版本中有意义

Show_view_priv

确定用户是否可以查看视图或了解视图如何执行,此权限只在MySQL 5.0及更高版本中有意义

Create_routine_priv

确定用户是否可以更改或放弃存储过程和函数,此权限是在MySQL 5.0中引入的

Alter_routine_priv

确定用户是否可以修改或删除存储函数及函数,此权限是在MySQL 5.0中引入的

Create_user_priv

确定用户是否可以执行CREATE

Event_priv

确定用户能否创建、修改和删除事件,这个权限是MySQL 5.1.6新增的

Trigger_priv

确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的

Create_tablespace_priv

创建表的空间

授权语句中的关键字说明表

权限

权限级别

权限说明

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

普通用户授权:只有对指定库指定表的增,删,改,查,权限。

*grant**select**on**testdb.***to ZhangSan@’%’*

*grant**insert**on**testdb.***to ZhangSan@’%’*

*grant**update**on**testdb.***to**ZhangSan@’%’*

*grant**delete**on**testdb.***to ZhangSan@’%’*

**或是*

*grant**select, insert, update, delete**on**testdb.***to**ZhangSan********@’%’*

数据库开发人员授权:创建表、索引、视图、存储过程、函数等权限 创建,修改,删除表结构的权限

*grant create on testdb.* to ZhangSan@‘192.168.0.%’*

*grant alter on testdb.* to ZhangSan@‘192.168.0.%’*

*grant drop on testdb.* to ZhangSan@‘192.168.0.%’*

*或是*

*grant**create********,********alter********,**drop**on**testdb.***to**ZhangSan********@’%’*

*操作 MySQL 外键权限:*

*grant**references**on**testdb.***to ZhangSan@‘192.168.0.%’;*

*操作 MySQL 临时表权限:*

*grant**create**temporary**tables**on**testdb.* to**ZhangSan@‘192.168.0.%’;*

*操作 MySQL 索引权限:*

*grant**index**on**testdb.***to**ZhangSan@‘192.168.0.%’;*

*操作 MySQL 视图、查看视图源代码权限:*

*grant**create**view**on**testdb.***to**ZhangSan@‘192.168.0.%’;*

*grant**show view**on**testdb.***to**ZhangSan@‘192.168.0.%’;*

*操作 MySQL 存储过程、函数权限:*

*grant create routine on testdb.* to ZhangSan@‘192.168.0.%’;*

*grant alter routine on testdb.* to ZhangSan@‘192.168.0.%’;*

*grant execute on testdb.* to ZhangSan@‘192.168.0.%’;*

普通DBA授权

*赋予ZhangSan在本地登录时对testdb库具有全部的权限*

grant all privileges on testdb to ZhangSan@‘localhost’

高级DBA授权

*赋予ZhangSan在本地登录时对MySql服务器上全部的库具有全部的权限*

*grant all on *.* to ZhangSan @ ‘localhost’*

*多层次授权*

*作用在整个 MySQL 服务器上:*

*grant select on**.*** *to ZhangSan@localhost; – ZhangSan可以查询 MySQL 中所有数据库中的表。*

*grant all on *.* to ZhangSan@localhost; – ZhangSan 可以管理 MySQL 中的所有数据库*

*作用在单个数据库上:*

*grant select on testdb.* to ZhangSan@localhost; – ZhangSan 可以查询 testdb 中的表。*

*作用在单个数据表上:*

*grant select, insert, update, delete on testdb.orders to ZhangSan@localhost;*

*作用在表中的列上:*

*grant select(id, se, rank) on testdb.apache_log to ZhangSan@localhost;*

*作用在存储过程、函数上:*

*grant execute on procedure testdb.pr_add to ‘ZhangSan’@‘localhost’*

*grant execute on function testdb.fn_add to ‘ZhangSan’@‘localhost’*

l*收回用户权限*

*命令格式:revoke 权限 on 数据库对象 from 用户*

*例子:*

*grant**all**on *.***to**dba********@localhost;**给dba用户所有操作权限*

*revoke**all**on**.*** *from**dba@localhost;**收回dba用户的所有操作权限*

举报

相关推荐

0 条评论