MYSQL访问控制与安全管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MYSQL访问控制与安全管理

用户账户管理

利用select语句查看mysql数据库的使用者帐号

select user from mysql.user;

1)创建用户帐号

语法格式:

create user <用户名> 【identified by [password] 口令 】

<用户名>:指定创建用户帐号,其格式为‘user -name"@"host name’。这里‘user -name’是用户名,‘host name’为主机名,即用户连接mysql时所在主机的名字。如果在创建的过程中,只给出了账户中的用户名,而没有指定主机名,则主机名会默认为是‘%’,表示一族主机


可选项password:用于指定散列口令,即若使用明文设置口令时,需忽略password关键字;如果不想以明文设置口令,且知道password()函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字password


identified by子句:用于指定用户账户对应的口令,若该用户账户无口令,则可省略此子句。


<口令>:指定用户帐号的口令,在identified by 关键字或password关键字之后。给定的口令值可以是只由字母和数字组成的明文,也可以是通过password函数得到的散列值。

create user 'zhangsan'@'localhost' identified by '123'
select password('123') #执行结果 *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
create user 'zhangsan'@'localhost' identified by password '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'

注意:

如果create user语句的使用中,没有为用户指定口令,那么mysql允许该用户可以不使用口令登录系统,然而从安全的角度而言,不推荐这种做法

使用create user语句创建一个用户帐号后,会在系统自身的mysql数据库的user表中添加一条新记录。如果创建的账户已经存在,则语句执行会出现错误。

新创建的用户拥有的权限很少,它们可以登录到mysql,只允许进行不需要权限的操作,如使用show语句查询所有存储引擎和字符集的列表等。

如果两个用户具有相同的用户名和不同的主机名,mysql会将它们视为不同的用户,并允许为这两个用户分配不同的权限集合。

删除用户

语法格式:

drop user<用户名 >,【用户名1】......

注意:

drop user 语句可用于删除一个或多个mysql账户,并撤销其原有权限

使用drop user语句,必须拥有mysql中的mysql数据库的delete权限或全部create user权限

在drop user语句的使用中,如果没有明确地给出账户的主机名,则该主机名会默认为是%

drop user zhangsan@localhost

修改用户帐号

语法格式:

rename user <旧用户> to <新用户>
rename user 'liming'@'localhost' to 'wanghong'@'localhost'

注意:


rename user语句用于对原有mysql账户进行重命名


如果系统中旧帐号不存在或新账户已存在,则语句执行会出现错误


要使用rename user语句,必须拥有mysql中的mysql数据库的update 权限或全局createa user权限


修改用户口令


语法格式:

set password [for <用户名>] = password('新口令') | OLD_password('旧明文口令') | '加密口令值'
set password for 'zhangsan'@'localhost'=passwore('456');

for子句:可选项,指定要修改口令的用户

password:表示使用函数password设置新口令,即新口令必须传递到函数password中进行加密

加密口令值:表示已被函数password加密的口令值

select password('hello') #查看hello的散列值

账户权限管理

查看权限语法:

show grants for 'wanghong'@'localhost'

权限的授予

语法:

grant <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]
on <对象> <权限级别> to <用户>
其中<用户>的格式
<用户名> [identified by [passowrd] <口令>]
[with grant option]
|max_queries_per_hour <次数>
|max_updates_per_hour <次数>
|max_connections_per_hour <次数>
|max_user_connections <次数>
grant select(student_id,student_name) on db_school.tb_student to 'wanghong'@'localhost'
grant select,update on db_school.tb_student to 'wanghong'@'localhost' identified by '123' 'huang'@'localhost' identifity by '789'
grant all on mytest.* to 'wanghong'@'localhost'

权限转移与限制

(1)转移权限

如果在with子句指定为with grant option,则表示to子句中所指定的所有用户都具有自己所拥有的权限授予其他用户的权利,而不论其他用户是否拥有该权限

grant select,update on mytest.student to 'wang'@'localhost' identified by '123' with grant option

(2)限制权限

在with子句中的with关键字后面紧跟的是max_queries_per_hour等,表示限制

grant select on mytest.student to 'wang'@'localhost' with max_queries_per_hour

权限的撤销

可以使用revoke语句撤销一个用户的权限,此用户不会被删除

语法:

revoke <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]....
on <对象> <权限名> from <用户1>.....
revoke all privileges ,grant option from user <用户>....
revoke select on mytest.students from 'xiaoming'@'localhost'


相关文章
|
6月前
|
弹性计算 安全 API
访问控制(RAM)|凭证安全管理与最佳实践
本文分享将为您介绍从访问云资源的人员/程序身份两种身份类型,介绍云上凭证的认证方式、安全风险及凭证管理的最佳实践。
102792 7
|
5月前
|
SQL 安全 关系型数据库
深入理解MySQL:从基础到高级应用及安全管理
第一章:MySQL基础入门 1.1 MySQL简介 简要介绍MySQL的历史、发展以及它在当前数据库领域的应用
|
5月前
|
SQL 安全 关系型数据库
精通MySQL:核心功能、性能优化与安全管理
h3> 第一章:MySQL入门 1.1 MySQL概述 介绍MySQL的历史、版本发展及其在当前数据库领域的重要地位
|
6月前
|
安全 关系型数据库 MySQL
Mysql基础第三十一天,安全管理
Mysql基础第三十一天,安全管理
44 0
Mysql基础第三十一天,安全管理
|
安全 关系型数据库 MySQL
MySQL数据库实验七 MySQL安全管理
MySQL数据库实验七 MySQL安全管理
221 0
|
安全 关系型数据库 MySQL
MySQL安全与权限管理:保障数据安全与访问控制
本文深入探讨了MySQL数据库的安全与权限管理,通过详细的代码示例,介绍了用户与权限的概念,权限管理与访问控制的方法,以及数据库安全性策略的制定与实施。MySQL提供了强大的安全性功能,能够帮助管理员保护数据库的数据安全和限制用户的访问权限。了解如何创建用户、授予权限,以及如何制定数据库安全性策略,将使管理员能够有效地管理和保护数据库,降低潜在的安全风险。
1527 0
|
Cloud Native 关系型数据库 Java
PolarDB-X 1.0-用户指南-访问控制-激活PolarDB-X访问RDS服务授权
PolarDB-X的部分操作会调用RDS的OpenAPI,因此在使用RAM之前,需要先激活PolarDB-X访问RDS服务的授权,创建一个供PolarDB-X访问RDS的RAM服务角色。本文将介绍如何通过控制台和OpenAPI激活授权。
195 0
PolarDB-X 1.0-用户指南-访问控制-激活PolarDB-X访问RDS服务授权
|
16天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
19 2