SQL之用户管理——权限与用户

目录

[1. 用户相关](#1. 用户相关)

[1.1 查看已存在用户的信息](#1.1 查看已存在用户的信息)

[1.2 创建新用户](#1.2 创建新用户)

[1.3 删除用户](#1.3 删除用户)

[1.4 修改用户登入密码](#1.4 修改用户登入密码)

[2. 权限相关](#2. 权限相关)

[2.1 给用户权限](#2.1 给用户权限)

[2.2 回收权限](#2.2 回收权限)

我们在MySQL的学习过程中一开始基本上都是使用root用户来进行各种操作的,但是其实这样是不好的,因为我们在以后工作的时候是不可能给你root用户来进行操作的,所以我们在这里要提前适应普通用户。

1. 用户相关

我们首先要学会查看用户的信息,再我看来这是第一步,接着我们在学会创建,销毁用户之类的操作。

1.1 查看已存在用户的信息

sql 复制代码
use mysql;
sql 复制代码
select host,user,authentication_string from user;

我们需要使用到上面两条指令来进行查看信息。

不知道各位有没有这个疑惑,就是我是查看用户信息又不是所有某一个数据库,为什么需要先use mysql呢?这是因为在mysql这个数据库系统里面,用户相关的各种信息也是存放在表里面的。

各位仔细看下面这张图片,这里面有三个用户,这三个用户都是系统自带的,分别是:

  1. root@localhost: MySQL 的超级管理员用户,拥有最高权限(可以操作所有数据库、表、权限等),是我们日常管理数据库时常用的账号。

  2. mysql.session@localhost: MySQL 内部服务使用的用户,主要用于系统进程之间的通信(比如 MySQL 的插件、内部管理操作),不能手动登录使用。

  3. mysql.sys@localhost: MySQL 5.7 及以上版本新增的用户,用于管理系统视图(sys schema)(sys 库是 MySQL 提供的简化性能监控、运维管理的视图集合),同样是内部专用,不能手动登录。

字段解释:

host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆

user: 用户名

authentication_string: 用户密码通过password函数加密后的

*_priv: 用户拥有的权限

1.2 创建新用户

代码:

sql 复制代码
create user '用户名'@'登陆主机/ip' identified by '密码';

我们通过上面的代码就可以创建一个新用户。

在我们接下来的学习中我们创建新用户都是使用root账号来进行创建的,但是我们不可以误以为只有root账号可以创建新用户,有cheate user权限的普通用户也可以创建新用户,这个我们在后面会说到。

我们看下面这张图,这样我们就创建好一个用户。

PS:当我们使用root账号创建一个新用户的时候,这个新用户默认是没有权限的,也就是什么都做不了的,因为创建库和创建表以及select都是需要一定的权限的。

这边想要额外提一下,就是我们的那个登入主机的位置如果选的是localhost的话就是说这个账号只支持本地登入,也就是只有创建这个账号的这台设备可以登入这个用户。

如果是想要某一台设备可以登入的话,那么就在这个位置输入那台设备的ip。

如果是想要什么设备只要知道密码都可以登入的话,那么我们就在这个位置直接输入一个'%'就可以了。

1.3 删除用户

代码:

sql 复制代码
drop user '用户名'@'主机名'

我们看,这样我们就可以把叫做'1'的本地登入的用户给删除了。

这一步是不需要密码的,也就是不需要'1'的密码,可以直接删除。

1.4 修改用户登入密码

这个的话又比较不同了,因为在这里可以分为用户自己修改密码和root用户来修改普通用户的密码。

用户自己修改密码:

sql 复制代码
set password=password('新的密码');

如果是普通用户自己修改密码的话,我们需要先登入那个账号。

root用户来修改密码:

sql 复制代码
set password for '用户名'@'主机名'=password('新的密码');

root的话直接指定需要修改哪一个就好了。

2. 权限相关

首先我们需要知道什么叫做权限。在MySQL中什么都是需要权限的,无论是创建查看数据库数据表或者创建删除用户,这些都是需要相应的权限我们才可以做到的。

相关的权限:

一、全局权限(作用于所有数据库)

全局权限存储在mysql.user表中,授权时用ON *.*指定:

  • ALL PRIVILEGES:所有权限(除GRANT OPTION外的全部权限,加上WITH GRANT OPTION则包含授权权限)。

  • CREATE USER:创建 / 删除用户、修改用户密码。

  • DROP USER:删除用户。

  • SUPER:超级权限(如 kill 进程、修改全局变量、日志管理)。

  • SHOW DATABASES:查看所有数据库列表。

  • RELOAD:重新加载权限表、刷新日志等。

  • SHUTDOWN:关闭 MySQL 服务。

  • PROCESS:查看所有进程(SHOW PROCESSLIST)。

  • FILE:读写服务器本地文件(如LOAD DATA INFILE)。

二、数据库权限(作用于指定数据库)

数据库权限存储在mysql.db表中,授权时用ON 数据库名.*指定:

  • CREATE:创建新数据库或表。

  • DROP:删除数据库或表。

  • ALTER:修改表结构(如ALTER TABLE)。

  • INDEX:创建 / 删除索引。

  • INSERT:插入数据到表。

  • DELETE:删除表中数据。

  • UPDATE:更新表中数据。

  • SELECT:查询表中数据。

  • REFERENCES:创建外键约束。

  • CREATE TEMPORARY TABLES:创建临时表。

  • LOCK TABLES:锁定表(用于事务)。

  • EXECUTE:执行存储过程 / 函数。

三、表权限(作用于指定表)

表权限存储在mysql.tables_priv表中,授权时用ON 数据库名.表名指定:

  • SELECT/INSERT/UPDATE/DELETE(同数据库权限,但仅作用于单表)。

  • ALTER:修改该表结构。

  • INDEX:该表的索引操作。

  • CREATE VIEW:基于该表创建视图。

  • SHOW VIEW:查看该表的视图定义。

  • TRIGGER:创建 / 触发该表的触发器。

四、列权限(作用于表中指定列)

列权限存储在mysql.columns_priv表中,授权时需指定列(如ON 库.表 (列1,列2)):

  • 仅支持SELECT/INSERT/UPDATE(对指定列的操作权限)。

五、存储对象权限(作用于存储过程 / 函数 / 视图)

  • EXECUTE:执行指定存储过程 / 函数。

  • ALTER ROUTINE:修改 / 删除指定存储过程 / 函数。

  • CREATE ROUTINE:创建存储过程 / 函数。

  • CREATE VIEW/SHOW VIEW:视图的创建 / 查看权限。

2.1 给用户权限

代码:

sql 复制代码
GRANT ALTER ON *.* TO '用户名'@'登录位置';
sql 复制代码
grant all [privileges] on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
sql 复制代码
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

第一条代码的意思是授予一个用户修改所有表的权限。

第二个给指定用户授予 "指定库 / 对象" 的全部操作权限。

第三条是给一个用户关于某个库的权限。

identified by是可选, 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

2.2 回收权限

我们可以给一个用户权限,同时也可以回收用户的权限。

代码:

sql 复制代码
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
相关推荐
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
山沐与山2 小时前
【Flink】Flink开发环境搭建与WordCount实战
大数据·flink
图导物联2 小时前
厂区地图导航系统:基于北斗/GPS+蓝牙 iBeacon 的开发方案,破解 “定位不准、调度混乱、安全薄弱” 三大痛点
大数据·人工智能·物联网
NineData2 小时前
NineData 数据库 DevOps 正式支持谷歌云,全面接入 GCP 数据源
运维·数据库·devops·ninedata·gcp·玖章算术·数据智能管理平台
PPIO派欧云2 小时前
PPIO上线Prompt Cache:让模型调用更快、更省、更稳
大数据·人工智能·prompt
Q_Q5110082852 小时前
python_django基于大数据技术旅游景点数据分析推荐系统现_wrqk1aes
大数据·python·django
韩立学长3 小时前
Springboot考研自习室预约管理系统1wdeuxh6(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
zhixingheyi_tian3 小时前
Hadoop 之 ENV
大数据·hadoop·分布式
2503_928411563 小时前
12.18 中后台项目-权限管理
前端·javascript·数据库