MySQL数据库(24):用户权限管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL数据库(24):用户权限管理

用户权限管理

在不同的项目中,给不同的角色(开发者)不同的操作权限,保证数据库数据的安全

1、用户管理

mysql的用户信息保存在了mysql.user中

select * from mysql.user\G
*************************** 5. row ***************************
                    Host: localhost
                    User: root
             Select_priv: Y
             Insert_priv: Y
             Update_priv: Y
             Delete_priv: Y
             Create_priv: Y
               Drop_priv: Y
             Reload_priv: Y
           Shutdown_priv: Y
            Process_priv: Y
               File_priv: Y
              Grant_priv: Y
         References_priv: Y
              Index_priv: Y
              Alter_priv: Y
            Show_db_priv: Y
              Super_priv: Y
   Create_tmp_table_priv: Y
        Lock_tables_priv: Y
            Execute_priv: Y
         Repl_slave_priv: Y
        Repl_client_priv: Y
        Create_view_priv: Y
          Show_view_priv: Y
     Create_routine_priv: Y
      Alter_routine_priv: Y
        Create_user_priv: Y
              Event_priv: Y
            Trigger_priv: Y
  Create_tablespace_priv: Y
                ssl_type:
              ssl_cipher:
             x509_issuer:
            x509_subject:
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: mysql_native_password
   authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
        password_expired: N
   password_last_changed: 2020-02-05 22:46:27
       password_lifetime: NULL
          account_locked: N
        Create_role_priv: Y
          Drop_role_priv: Y
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL

主要字段

主机名和用户名共同组成复合主键
Host 主机名,允许访问的客户端,*代表所有客户端都可以访问
User 用户名

1.1、创建用户

方式一:直接使用root用户在mysql.user中插入记录(不推荐)

方式二:使用创建用户的SQL指令

基本语法

create user 用户 identified by 明文密码
-- 用户 用户名@主机地址
-- 主机地址: '' 或者 %

示例

create user 'user1'@'%' identified by '123456';
-- 查看mysql.user表中是否存在新用户
select user, host from mysql.user where user = 'user1';
+-------+------+
| user  | host |
+-------+------+
| user1 | %    |
+-------+------+

简化版创建用户,谁都可以访问,不需要密码,不安全

create user user2;
• 1

1.2、删除用户

user和host具有唯一性

基本语法

drop user 用户名@host;

示例

mysql> drop user 'user1'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> select user, host from mysql.user where user = 'user1';
Empty set (0.00 sec)

1.3、修改用户密码

需要使用函数对密码进行加密password()

方式一:使用专门的修改密码指令

基本语法

set password for 用户 = password(明文密码);
set password for 'user1'@'%' = password(654321);
-- mysql5.7后续版本,8.0可用
alter user 'user1'@'%' identified by '654321';

方式二:使用更新语法

基本语法

update mysql.user set password = password(明文密码) where user = '' and host = '';

2、权限管理

分为三类:

  • 数据权限:增删改查 select update delete insert
  • 结构权限:结构操作(表操作) create drop
  • 管理权限:权限管理 create user、grant、revoke, 管理员

2.1、授予权限 grant

将权限分配给指定用户

基本语法

grant 权限列表 on 数据库/*.表名/* to 用户
  • 权限列表 使用逗号间隔,all privileges 代表全部权限
  • 所有数据库 *.*
  • 某个数据库:数据库.*
  • 单表:数据库.表名
-- 分配权限 不需要刷新,马上生效
grant select on mydatabase.my_student to 'user1'@'%';

2.2、取消权限 revoke

基本语法


revoke 权限列表 /all privileges on 数据库/*.表/* from 用户

1

-- 回收权限,不需要刷新,马上生效

revoke all privileges on mydatabase.my_student from 'user1'@'%';

2.3、刷新权限 flush

将操作的具体内容同步到对应的表中

基本语法

flush privileges;

3、密码丢失的解决方案

如果忘记root用户的密码

# 停止服务
mysql.server stop;
# 停止不了可以直接杀死进程
ps aux|grep mysql
kill <pid>
# 重新启动服务,跳过权限
mysqld --skip-grant-tables
# 直接无用户名登录
mysql

非常危险,任何客户端不需要任何用户信息都可以直接登录,而且是root权限

修改root密码

alter user 'root'@'localhost' identified by '123456'; 
• 1

修改完后,关闭mysql服务器,重启

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 关系型数据库 MySQL
《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)
《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)
90 3
|
6月前
|
SQL 关系型数据库 MySQL
mysql用户权限设置
mysql用户权限设置
165 1
|
6月前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
90 1
|
6月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
143 0
|
6月前
|
SQL 存储 关系型数据库
轻松入门MySQL:简明教程解析数据存储与管理(1)
轻松入门MySQL:简明教程解析数据存储与管理(1)
|
6月前
|
运维 监控 安全
云HIS医疗管理系统源码——技术栈【SpringBoot+Angular+MySQL+MyBatis】
云HIS系统采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展;支持多样化灵活配置,提取大量公共参数,无需修改代码即可满足不同客户需求;服务组织合理,功能高内聚,服务间通信简练。
206 4
|
6月前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
124 0
|
3月前
|
关系型数据库 MySQL 数据库
MySQL用户权限管理你知道多少?
MySQL用户权限管理你知道多少?
105 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL数据库开发进阶:精通数据库表的创建与管理22
【7月更文挑战第22天】数据库的创建与删除,数据表的创建与管理
48 1
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
41 1