【MySQL】用户管理

之前我们一直都使用root身份来对mysql进行操作,但这样存在安全隐患。这时,就需要使用MySQL的用户管理


目录

一、用户

[1.1 用户信息](#1.1 用户信息)

[1.2 添加用户](#1.2 添加用户)

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

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

二、用户权限

[2.1 赋予授权](#2.1 赋予授权)

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


一、用户

1.1 用户信息

在MySQL中所有允许被登录的用户信息都被存放在系统数据库mysql的user表中:

来看看这张表中有着什么样的信息:

在上表中我们先介绍几个比较关键的列:

Host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆,如果是%表示可以从任何服务器上登录(不推荐%的设置方式,这是很危险的)
user: 用户名
authentication_string: 通过password函数加密后的用户密码
*_priv: 用户拥有的权限

所以我们在对用户信息做修改,本质上是对这个user表做修改!

1.2 添加用户

我们在数据库下添加用户,本质上可以使用insert语句向user表中插入数据,但表中要插入的数据太多了,insert语句在这里就显的不实用了,mysql提供下列语句来方便我们插入用户数据:

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

在我们对user表做了任何修改后,都要下面的语句刷新一下,才能生效:

sql 复制代码
flush privileges;

1.3 删除用户

mysql提供下列语句供我们删除用户:

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

1.4 修改用户密码

自己改自己密码:

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

root用户修改指定用户的密码:

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

修改完后记得刷新一下哦:

sql 复制代码
flush privileges;

二、用户权限

在mysql下用户共有以下权限:

权限 列 上下文
CREATE Create_priv 数据库、表或索引
DROP Drop_priv 数据库或表
GRANT OPTION Rant_priv 数据库、表或保存的程序
REFERENCES References _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_priv 视图
ALTER ROUTINE Alter_routine_priv 保存的程序
CREATE ROUTINE Create_routine_priv 保存的程序
EXECUTE Execute _priv 保存的程序
FILE File_priv 服务器主机上的文件访问
CREATE TEMPORARY TABLES Create_tmp_table_priv 服务器管理
LOCK TABLES Lock_tables _priv 服务器管理
CREATE USER Reate_user_priv 服务器管理
PROCESS Process_priv 服务器管理
RELOAD Reload_priv 服务器管理
REPLICATION CLIENT Repl_client_priv 服务器管理
REPLICATION SLAVE Repl_slave_priv 服务器管理
SHOW DATABASES show_db_priv 服务器管理
SHUTDOWN Shutdown_priv 服务器管理
SUPER Super_priv 服务器管理

2.1 赋予授权

刚创建的用户没有任何权限。需要通过下列语句给用户授权:

sql 复制代码
grant 权限列表 on 库名.表名 to '用户名'@'登陆位置' [identified by '密码'];

注意:

当我们要给多个权限时,记得用逗号分开:

sql 复制代码
grant select, delete, create ...

我们可以在权限列表中使用all关键字,表示赋予该用户在该对象上的所有权限
库名和表名我们可以使用*来代表所有

如*.* 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
identified by可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

2.2 回收权限

我们可以使用下列语句来回收用户的权限:

sql 复制代码
revoke 权限列表 on 库名.表名 from '用户名'@'登陆位置';

感谢各位的阅览~

更多MySQL技能请看:http://t.csdn.cn/W9dQl

博主努力更新中~

相关推荐
paopaokaka_luck2 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
2601_949847753 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906943 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
lzhdim3 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来3 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹3 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
KaiwuDB4 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
auspicious航4 小时前
PostgreSQL的备份与恢复
数据库·postgresql
这个DBA有点耶4 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒4 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql