MySQL数据库(十):用户授权与撤销授权
前言: 1.mysql数据库服务在不授权的情况下,只允许数据库管理员从数据库服务器本机登陆. 2.系统管理员才有修改数据库管理员密码的权限.
一、用户授权(grant) 默认只有数据库管理员从数据库服务器本机登陆才有授权权限
1.授权命令格式: 1.1从客户端登陆的时候不需要密码
grant 权限列表 on 数据库名 to 用户名@"客户端地址";
1.2 授权用户可以从网络中的任意地址登陆到mysql server服务器
grant 权限列表 on 数据库名 to 用户名;
1.3 设置授权用户连接mysql server服务器时候的密码和授权权限
grant 权限列表 on 数据库名 to 用户名@"客户端地址" identified by "密码" with grant option;
identified by "密码"
:从客户端登陆的时候需要密码(可选项,若不指定,授权用户登陆时没有密码)
with grant option
:授权用户从客户端地址登陆之后有授权的权限(可选项,让授权用户有授权权限,若不设置,授权用户无授权权限)
2.条件的表示方法 1.1 权限列表的表示
usage:无权限
all :所有权限
insert:插入
update:更新(可以指定只更新某个字段update(name,age))
delete:删除
1.2数据库名的表示方式
*.* 库.表:所有库所有表
数据库名.*:对数据库中的所有表(某个库)
数据库名.表名:某个表
注:授权使用的库可以不用事先存在
1.3用户名的表示方式 注:授权时自定义,要有表示性,信息存储在mysql库中的user表中
1.4客户端地址的表示方式(可选项,不设置时,匹配所有地址)
% 所有地址
192.168.4.% 某个网段
192.168.4.205 某个IP
pc1.tarena.com 主机名
%.tarena.com 某个区域
注:工作中一般都是用ip地址来表示客户端地址
例子: 授权root用户从192.168.4.205使用后123456密码连接,并且有授权权限。
mysql> grant all on *.* to root@"192.168.4.205" identified by "123456" with grant option;
Query OK, 0 rows affected (0.00 sec)
3.关于授权的其他命令
1.1 查看自己的权限
show grants;
1.2 显示当前登陆的用户是谁
select user();
4.授权信息的存放位置 服务器端使用 mysql库存储授权信息 授权信息保存在mysql下不同表里,不同的授权信息使用不用的表保存.
1.1 user表 保存授权用户的授权信息
例如: 查看webuser用户的授权信息
mysql> select * from mysql.user where user="webuser"G;
*************************** 1. row ***************************
Host: %
User: webuser
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.00 sec)
ERROR:
No query specified
查看用户root从192.168.4.205的登陆权限
mysql> show grants for root@"192.168.4.205"G;
*************************** 1. row ***************************
Grants for root@192.168.4.205: GRANT SELECT, INSERT, UPDATE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'root'@'192.168.4.205'
1 row in set (0.00 sec)
ERROR:
No query specified
1.2 db表 记录授权用户对库的权限信息 例如: 查看webuser用户数据库的权限信息
mysql> select * from mysql.db where user="webuser"G;
*************************** 1. row ***************************
Host: %
Db: bbsdb
User: webuser
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
1 row in set (0.00 sec)
ERROR:
No query specified
1.3 tables_priv表 记录授权用户对表的权限信息 例如: 查询webuser用户的表权限信息
mysql> select * from mysql.tables_priv where user="webuser";
Empty set (0.00 sec)
1.4 columns_priv 记录授权用户对表中某个字段的权限信息 例如: 查看webuser用户的字段权限信息
mysql> select * from mysql.columns_priv where user="webuser";
Empty set (0.00 sec)
*注:如果想要一个用户有授权权限的话,需要让此用户对mysql库有权限
5.授权用户如何重置/修改登录密码
格式:
set password=password("密码");
例如: 数据库管理员重置授权用户的登陆密码
set password for 用户名@"客户端地址"=password("新密码");
二、权限撤销(revoke)
1.命令格式:
revoke 权限列表 on 数据库 from 用户名@"客户端地址";
注意:撤销的时候,只有对数据库有过授权的才可以撤销
2.条件的表示方法 *权限列表、数据库名、用户名、客户端地址的表示方法和授权时候的表示方式是一样的
例子:
1.1 撤销管理员用户从客户端192.168.4.205 登陆后,对所有库里所有表中记录的删除权限
revoke delete on *.* from root@"192.168.4.205";
1.2 撤销root@192.168.4.205的登陆权限
delete from mysql.user where user="root" and host="192.168.4.205";
1.3 撤销所有权限
revoke all on *.* from root@"192.168.4.205";
1.4 撤销授权权限
revoke grant option on *.* from roo@192.168.4.205;
- 47. 访问MySql数据库实现增删改查 | 厚土Go学习笔记
- 39. channel管道 | 厚土Go学习笔记
- springmvc学习第二天
- 厚土Go学习笔记 | 38. goroutine轻量级线程
- 厚土Go学习笔记 | 37. 图片(image)生成器
- 编写地道的Go代码
- 开发你不能忽略的问题?JavaScript(JS)
- 厚土Go学习笔记 | 36. web服务指定路径下的get参数接收与处理
- 用R进行文本分析初探——包含导入词库和和导入李白语句
- Golang事务模型
- 厚土Go学习笔记 | 35. web服务器实现动态路径
- 过滤器Filter精华知识点,怎能不看
- JavaMail开发示例,学习要看对资料
- 厚土Go学习笔记 | 34. 一个简单的 web 服务器实现
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- LeetCode 5473. 灯泡开关 IV
- LeetCode 5472. 重新排列字符串
- BootStrap 导航栏实现下滑消失,上滑出现
- 七日Python之路--第六天
- 超性感的React Hooks(六)自定义hooks的思维方式
- 七日Python之路--第五天(之找点乐子)
- 超性感的React Hooks(七)useReducer
- 七日Python之路--第四天(之Django官方文档)
- 六、setTimeout与循环闭包经典面试题详解
- 七日Python之路--第四天
- 七、this
- 七日Python之路--第四天(之多线程)
- 超性感的React Hooks(八)useContext
- 七日Python之路--第三天(之不安分 wxPython)
- 七日Python之路--第三天