【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

博主努力更新中~

相关推荐
敲上瘾42 分钟前
动静态库的制作与使用(Linux操作系统)
linux·运维·服务器·c++·系统架构·库文件·动静态库
m0_748235954 小时前
CentOS 7使用RPM安装MySQL
android·mysql·centos
leegong231114 小时前
PostgreSQL 初中级认证可以一起学吗?
数据库
bohu835 小时前
亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
linux·opencv·ubuntu·dlib·microros·亚博
秋野酱5 小时前
如何在 Spring Boot 中实现自定义属性
java·数据库·spring boot
weisian1516 小时前
Mysql--实战篇--@Transactional失效场景及避免策略(@Transactional实现原理,失效场景,内部调用问题等)
数据库·mysql
AI航海家(Ethan)6 小时前
PostgreSQL数据库的运行机制和架构体系
数据库·postgresql·架构
Amd7946 小时前
深入探讨索引的创建与删除:提升数据库查询效率的关键技术
数据结构·sql·数据库管理·索引·性能提升·查询优化·数据检索
小池先生8 小时前
grafana+prometheus监控linux指标
linux·grafana·prometheus
浮梦终焉8 小时前
【嵌入式】总结——Linux驱动开发(三)
linux·驱动开发·qt·嵌入式