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、如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。

相关推荐
fobwebs几秒前
wordpress 网站安装了Yoast SEO,并且做了内容的优化后,如果想重置Yoast SEO,并且删除所有的优化内容,应该如何操作?
数据库·yoast seo·重置yoast seo·清空yoast seo内容
森诺Alyson9 分钟前
前沿技术借鉴研讨-2026.3.26(解决虚假特征x2/混合专家对比学习框架)
论文阅读·人工智能·经验分享·深度学习·学习·论文笔记
星幻元宇VR11 分钟前
VR司法矫正宣教机|构建沉浸式矫正教育新模式
科技·学习·安全·vr·虚拟现实
EnglishJun11 分钟前
ARM嵌入式学习(十一)--- IMX6ULL时钟配置
arm开发·学习
路由侠内网穿透17 分钟前
本地部署开源 LLM 应用观测与调试平台 Langfuse 并实现外部访问
运维·服务器·数据库·物联网·开源
SPC的存折17 分钟前
1、Ansible之Ansible安装与入门
linux·数据库·ansible
qiumingxun22 分钟前
mysql的分区表
数据库·mysql
李昊哲小课22 分钟前
aiomysql 完整实战教程
python·mysql·pymysql·aiomysql
sxhcwgcy23 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
康康的AI博客24 分钟前
向量数据库选型指南:AI 数据底座怎么选不踩坑
数据库·人工智能