【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

博主努力更新中~

相关推荐
严同学正在努力11 分钟前
认识 SQL Server 的 T-SQL 语法
数据库·人工智能·ai·oracle·dba
第十人i13 分钟前
Linux 更换系统软件源及 Docker 安装脚本
linux
m0_7527531216 分钟前
Linux‑SQLite3 数据库
linux
渡我白衣17 分钟前
Util工具类功能设计与类设计
linux·服务器·网络·c++·人工智能·目标检测·机器学习
EatFan18 分钟前
我为什么把患者与病例从 1:1 改成 1:N?一次真实数据库模型重构记录
数据库·后端·重构·健康医疗·全栈
小此方19 分钟前
Linux网络(十一):HTTP重定向与请求方法详解:从301/302状态码到GET/POST,再认识Fiddler抓包
linux·网络·http
KANGBboy27 分钟前
doris+kafka安装部署(单机+集群)六安装部署
linux
爱和冰阔落1 小时前
【Linux】手写日志与固定线程池:任务队列、工作线程和安全退出
linux·运维·c++·redis·安卓
xujuzheng1 小时前
2026深圳小程序/App/AI智能体开发公司选型指南(附本地服务商盘点)
数据库·科技·微信小程序·小程序·uni-app
bksczm1 小时前
MySQL基础篇之表的增删查改(CRUD)细则
sql·mysql