MySQL 权限

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

create user创建用户

CREATE USER  li@localhost IDENTIFIED BY 'li';

授予用户li数据库person的所有权限,并允许用户li将数据库person的所有权限授予其它用户

GRANT ALL ON PERSON.* TO li@localhost WITH GRANT OPTION;

立即生效,如果授予的权限没有生效执行以下命令,在5.6版本更改即会生效。

FLUSH PRIVILEGES;

GRANT创建用户

如果当前不存在用户,GRANT可以在授予权限的时候创建用户

授予用户数据库person所有表的select,insert权限。

GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc';

同时运行用户abc将person数据库的SELECT,INSERT权限授予给其它用户
GRANT SELECT,INSERT ON PERSON.* TO 'abc'@'localhost' identified by 'abc' with grant option;
创建用户root密码123456并赋予服务器所有权限,允许IP192.168.1.5的客户端连接。
grant all privileges on *.* to root@'192.168.1.5' identified by '123456'

退出当前用户

exit

查看当前用户的权限

show grants;

查看用户abc的权限

show grants for abc@localhost


REVOKE回收权限

回收用户abc数据库person的insert的权限

REVOKE INSERT ON PERSON.* FROM abc@localhost;

回收权限

回收person数据库abc的所有权限
REVOKE ALL ON PERSON.* FROM abc@localhost;

回收abc的所有数据库所有权限
REVOKE ALL ON *.* FROM abc@localhost;

删除用户

在早期版本需要回收用户的权限之后才能删除用户。删除用户建议使用这种办法,有的人会使用delete from user的办法删除,但是有的用户是针对db的权限那么在mysql.db里面也存在记录,而使用drop user的方式都会被删除。

DROP USER abc@localhost;

 修改用户密码

use mysql;

UPDATE user SET password=PASSWORD('输入新密码') WHERE user='用户名';

FLUSH PRIVILEGES;

权限表字段详解

基于mysql5.6

user表

user表的权限是基于服务器范围的所有权限,比如用户拥有服务器中所有数据库的select权限那么在user表中的Select_priv列为Y,如果用户单单只拥有某个一数据库的select权限那么user表中的Select_priv为N,会在DB表中记录一条信息在DB表中的select_priv为Y。

desc mysql.user;

filed                  type                            null key default

Host char(60)     NO    PRI         主机名,localhost表示本地登入,%表示不受限制,也可以单独赋予某个IP的访问权限。  
User char(16) NO PRI   登入用户名 
Password char(41) NO     登入用户密码 
Select_priv enum('N','Y') NO   N select权限 
Insert_priv enum('N','Y') NO   N insert权限
Update_priv enum('N','Y') NO   N update权限 
Delete_priv enum('N','Y') NO   N delete权限 
Create_priv enum('N','Y') NO   N create权限 
Drop_priv enum('N','Y') NO   N drop权限
Reload_priv enum('N','Y') NO   N 执行刷新和重新加载MySQL各种内部缓存命令的权限 
Shutdown_priv enum('N','Y') NO   N 关闭mysql服务器的权限,不能授予root外的其它用户 
Process_priv enum('N','Y') NO   N 执行show processlist命令的权限 
File_priv enum('N','Y') NO   N 执行SELECT INTO OUTFILE和LOAD DATA INFILE命令 
Grant_priv enum('N','Y') NO   N 是否可以将权限授予其它用户 
References_priv enum('N','Y') NO   N 参照表的权限
Index_priv enum('N','Y') NO   N 创建删除索引的权限 
Alter_priv enum('N','Y') NO   N ALTER权限 
Show_db_priv enum('N','Y') NO   N 查看有哪些数据库的权限
Super_priv enum('N','Y') NO   N Super权限,包括kill权限。 
Create_tmp_table_priv enum('N','Y') NO   N 创建创建临时表权限 
Lock_tables_priv enum('N','Y') NO   N 执行lock table权限 
Execute_priv enum('N','Y') NO   N 执行存储过程权限 
Repl_slave_priv enum('N','Y') NO   N 复制相关的权限 
Repl_client_priv enum('N','Y') NO   N 复制相关的权限 
Create_view_priv enum('N','Y') NO   N 创建视图的权限 
Show_view_priv enum('N','Y') NO   N 查看视图的权限 
Create_routine_priv enum('N','Y') NO   N 创建函数、存储过程等权限 
Alter_routine_priv enum('N','Y') NO   N 修改删除函数、存储过程等权限 
Create_user_priv enum('N','Y') NO   N 创建用户的权限 
Event_priv enum('N','Y') NO   N 创建、修改和删除事件的权限 
Trigger_priv enum('N','Y') NO   N 创建、修改和删除触发器的权限 
Create_tablespace_priv enum('N','Y') NO   N 创建表空间的权限 
ssl_type enum('','ANY','X509','SPECIFIED') NO      
ssl_cipher blob NO      
x509_issuer blob NO      
x509_subject blob NO      
max_questions int(11) unsigned NO   0 最多问题数 
max_updates int(11) unsigned NO   0 允许的最大更新 
max_connections int(11) unsigned NO   0 允许的最大连接 
max_user_connections int(11) unsigned NO   0  
plugin char(64) YES      
authentication_string text YES      
password_expired enum('N','Y') NO   N  

db表

如果授予一个用户单独某个数据库的权限,就会在db表中记录一条相关信息。

desc mysql.db;

filed                  type          null    key   default

Host                            char(60)                  NO         PRI                   主机名,localhost代表只能本地登入,如果是%表示不受限制,也可以单独赋予某个IP的访问权限。
Db char(64) NO PRI   数据库名 
User char(16) NO PRI   用户名 
Select_priv enum('N','Y') NO   N select权限 
Insert_priv enum('N','Y') NO   N insert权限 
Update_priv enum('N','Y') NO   N update权限 
Delete_priv enum('N','Y') NO   N delete权限 
Create_priv enum('N','Y') NO   N create权限 
Drop_priv enum('N','Y') NO   N drop权限 
Grant_priv enum('N','Y') NO   N 是否可以将权限授予其它用户  
References_priv enum('N','Y') NO   N  
Index_priv enum('N','Y') NO   N 创建删除索引的权限 
Alter_priv enum('N','Y') NO   N ALTER权限 
Create_tmp_table_priv enum('N','Y') NO   N 创建临时表的权限 
Lock_tables_priv enum('N','Y') NO   N 执行lock table权限 
Create_view_priv enum('N','Y') NO   N 创建视图的权限 
Show_view_priv enum('N','Y') NO   N 查看视图的权限 
Create_routine_priv enum('N','Y') NO   N 创建函数、存储过程的权限 
Alter_routine_priv enum('N','Y') NO   N 修改删除函数、存储过程的权限  
Execute_priv enum('N','Y') NO   N 执行存储过程的权限 
Event_priv enum('N','Y') NO   N 创建、修改、删除事件的权限 
Trigger_priv enum('N','Y') NO   N 创建、修改、删除触发器的权限 

创建root用户

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

创建一个服务器基本的增删改查用户

GRANT UPDATE, DELETE, INSERT, SELECT ON *.* TO 'test'@'%' identified by 'test' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0

创建数据库基本的增删改查用户

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `new`.* TO 'test'@'%' identified by  'test';

授予数据库名以db开头的数据库的权限

GRANT SELECT, INSERT, UPDATE, DELETE, SHOW VIEW, EXECUTE ON `db%`.* TO 'perform'@'%'

创建备份用户

GRANT SELECT,EVENT,SHOW DATABASES,LOCK TABLES ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'backup';

总结

 使用revoke all privileges并不能收回用户的所有权限,对于用户的单个数据库的权限需要单独回收,具体可以查询mysql.db数据库查看用户的每个数据库的具体权限,如果用户权限太多最快的回收权限的方法是删除该用户再重新授予用户新的权限

 

 

 





本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/4533902.html,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
网络协议 关系型数据库 MySQL
mysql8.0远程连接权限设置
mysql8.0远程连接权限设置
187 0
|
7月前
|
关系型数据库 MySQL
MySQL错误 -.--secure-file-priv 无导出权限
MySQL错误 -.--secure-file-priv 无导出权限
205 0
|
7月前
|
SQL 关系型数据库 MySQL
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
132 1
|
1月前
|
SQL NoSQL 关系型数据库
|
2月前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
3月前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
436 4
|
7月前
|
关系型数据库 MySQL 数据库
mysql添加用户并设置数据库权限
mysql添加用户并设置数据库权限
|
4月前
|
关系型数据库 MySQL
MySQL 添加用户,分配权限
MySQL 添加用户,分配权限
74 0
|
5月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思