MySQL学习之用户管理

MySQL学习之用户管理

一、用户

1、用户信息

MySQL用户管理:

①、与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。

②、如果一个用户只需要访问MySQL中的某一个数据库,甚至于仅仅访问数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作。

MySQL当中默认有一个名为mysql的数据库。如下:

查看该数据库中的表,可以看到其中有一个名为user的表。如下:

user表中存储的就是MySQL中用户相关的信息。如下:

部分字段说明:

①、user : 表示该用户的用户名。

②、host : 表示该用户可以从哪个主机登录,localhost表示只能从本机登录,%表示可以从任意地方登录。

③、authentication_string : 表示该用户的密码经过password函数加密后的值。

④、xxx_priv: 表示该用户是否拥有对应权限。

在查看用户信息时为了避免刷屏,可以只选择其中的部分字段进行显示。如下:

2、创建用户

创建用户

创建用户的SQL如下:

sql 复制代码
CREATE USER '用户名'@'登录主机' IDENTIFIED BY '密码';

比如下面创建一个用户名为LYQ,并且可以从任意地方登录的用户。如下:

创建用户成功后,该用户的相关信息也就被写入到刚才的user表中了。如下:

这时便可以用新创建的普通用户来连接MySQL服务器了。如下:

我们可以通过命令查看当前登入的用户:

注意:

创建用户的SQL当中包含用户的密码,因此该SQL不会被历史记录下来,所以不能通过上下键进行追溯。

3、修改用户密码

修改普通用户密码

用户可以自己通过调用password函数,将新密码加密后的值设置到自己password当中。如下:

超级用户修改任意用户的密码

超级用户可以通过调用password函数,将新密码加密后的值设置到指定用户的password当中。如下:

4、删除用户

删除用户

sql 复制代码
DROP USER '用户名'@'登录地址';


注意:
删除用户时如果不指明待用户的登录地址,则默认删除的是登录地址为%的用户。

二、数据库权限

1、MySQL中的权限

MySQL提供了如下的权限:

权限 列 上下文
CREATE Create_priv 数据库、表或索引
DROP Drop_priv 数据库或表
GRANT OPTION Grant_priv 数据库、表或程序
REFERENCKS Reference_priv 数据库或表
ALTER Alter_priv 表
DELETE Delete_priv 表
INDEX Index_priv 表
INSERT Insert_priv 表
SELECT Select_priv 表
UPDATE Update_priv 表
CREATE VIEW Create_view_priv 视图
SHOW VIEW Show_view 视图
ALTER ROUTINE Alter_routine_priv 保护的程序
CREATE ROUTINE Create_routine_priv 保护的程序
EXEXUTE Execute_priv 保护的程序
FILE File_priv 服务器主机上的文件访问
CREATE TEMPORARY TABLE Create_tmp_table_priv 服务器管理
LOCK TABLES Lock_tables_priv 服务器管理
CREATE USER Create_user_priv 服务器管理
PROCESS Process_priv 服务器管理
RELOAD Reload_priv 服务器管理
REPLICATION CLIENT Reply_client_priv 服务器管理
REPLICATION SLAVE Repl_slave_priv 服务器管理
SHOW DATABASES Show_db_priv 服务器管理
SHUTDOWN Shutdown_priv 服务器管理
SUPER Super_priv 服务器管理

注意:

新创建的用户没有任何权限,因此创建用户后需要给用户授权。

2、给用户授权

给用户授权

给用户授权的SQL如下:

sql 复制代码
GRANT 权限列表 ON 库名.对象名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];

注意:

①、'用户名'@'登录地址':表示给哪一个用户授权。

②、库名.对象名:表示要授予用户哪个数据库下的哪张表的权限。

③、权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开。

④、IDENTIFIED BY '密码'可选:如果用户存在,则在授予权限的同时修改该用户的密码,如果用户不存在,则创建该用户。

首先我们先创建一个普通用户:

紧接着我们给这个普通用户在scott库中的emp表赋予select权限。

授权后通过show grants for '用户名'@'登录地址'命令 ,可以查看该用户现有的权限。如下:

注意:

1、创建用户后该用户默认会有USAGE权限,该权限只能用于数据库登录,不能执行任何操作。

2、*.*表示所有数据库的所有对象,库名.*表示某个数据库的所有对象(表、视图、存储过程等)。

此时该用户查看数据库时,就能查看到scott数据库的emp表了。如下:

但该用户目前只能查看表中的信息,而不能对表中的数据进行修改,因为我们只授予了该用户select权限。如下:

下面我们给scott数据库的emp表赋予所有的权限:

这时该用户才可以对表中的数据进行其他操作。如下:

3、回收权限

回收权限

回收权限的SQL如下:

sql 复制代码
REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';

注意:

1、回收权限的语法与授权一样,只不过将to关键字改为了from,并且没有了IDENTIFIED BY '密码'字段。

比如下面将dragon用户在user_management数据库下的所有权限回收。如下:

注意:

1、回收用户在某一数据库下的权限后,在该用户下一次进入该数据库时才会起作用。

2、如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。

相关推荐
WEI_YANG_JU1 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩1 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
无言听风雨丶1 小时前
Redis 运维实战与排错
运维·数据库·redis
李长渊哦2 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
小天源2 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
旖旎夜光3 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
herinspace3 小时前
管家婆实用贴-SQL 2008如何修改成混合模式
服务器·数据库·sql·管家婆软件·财务软件·合肥管家婆软件
打螺丝的小李3 小时前
制造企业质量管理系统的三类产品形态:分别解决什么问题
数据库·制造
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(119):EvoLife——让具身 Agent 把主动问到的答案沉淀为可复用的空间经验
论文阅读·人工智能·学习·开源·github