当前位置: 首页 > news >正文

MySQL数据库权限管理

数据库登陆操作:

修改MySQL数据库端口

修改端口rpm安装:
vim /etc/my.cnf
文件内容最后添加port=指定端口。
然后重启服务

连接方式:

%:允许所有主机远程登陆包括localhost。也可以指定某个ip,允许某个ip登陆。也可以是一个网段。
localhost:只允许本地用户登录
%				     所有主机远程登录
192.168.246.%		    192.168.246.0网段的所有主机
192.168.246.252		    指定主机
localhost               只允许本地用户登录

远程连接语法:

mysql  -u  用户名  -p  密码  -h  数据库ip地址   -P 端口号:如果没有改端口号就不用-P指定端口

修改连接方式

将原来的localhost修改为%或者ip地址
mysql> use mysql
#进入到mysql库中
mysql> update user set host = '192.168.246.%' where user = '用户名';
#修改user表中的内容
mysql> flush privileges ;
#更新授权列表以使配置生效

登录数据库

# mysql  -u用户名  -p"用户密码"  -h数据库ip地址  -P  3306  -e 'show databases;'
-h	指定主机名            【默认为localhost】
-大P	MySQL服务器端口       【默认3306】
-u	指定用户名             【默认root】
-p	指定登录密码           【默认为空密码】
-e	接SQL语句,可以写多条拿;隔开
============
# mysql -h192.168.246.253 -P 3306 -uroot -pqf123 -D mysql -e 'select * from user;'
此处 -D mysql为指定登录的数据库

创建用户

方法一:create user 语句创建并设置连接方式

mysql> create user 用户名@'连接方式' identified by '用户密码'## 创建用户,并设置用户登录方式和密码
mysql> create user tom@'localhost' identified by 'qf@123';#创建用户为tom,并设置密码。
mysql> FLUSH PRIVILEGES; #更新授权表
创建用户完成后一定要更新授权表以使设置生效。

方法二:使用命令创建用户并授权:grant

语法格式:
grant 权限列表  on 库名.表名 to '用户名'@'客户端主机' IDENTIFIED BY 'Qf@123'=数据库.表名:
*.*			所有库下的所有表web.*		web库下的所有表
web.stu_info	web库下的stu_info表
#注意:root用授权时候grant授权权限不要给予

删除用户

方法一:DROP USER语句删除
DROP USER 'user3'@'localhost';
mysql> drop  user  ' 用户名' @ '连接方式 '
#直接该删除用户
方法二:DELETE语句删除
DELETE FROM mysql.user  WHERE user='tom' AND host='localhost';
mysql> delete from  mysql.user where user='用户名' and host='连接方式'
#在储存用户数据的表中删除用户数据
更新授权表:	FLUSH PRIVILEGES;

4.数据库权限简介

权限简介| 权限                   | 权限级别                 | 权限说明                    
| :--------------------- | :--------------------- | :------------------------------------
| CREATE                 | 数据库、表或索引          | 创建数据库、表或索引权限                 
| DROP                   | 数据库或表               | 删除数据库或表权限                       
| GRANT OPTION           | 数据库、表或保存的程序     | 赋予权限选项 #小心给予                 
| ALTER                  | 表                     | 更改表,比如添加字段、索引等               
| DELETE                 | 表                     | 删除数据权限                             
| INDEX                  | 表                     | 索引权限                               
| INSERT                 | 表                     | 插入权限                               
| SELECT                 | 表                     | 查询权限                               
| UPDATE                 | 表                     | 更新权限                               
| LOCK TABLES            | 服务器管理              | 锁表权限                               
| CREATE USER            | 服务器管理             | 创建用户权限                             
| REPLICATION SLAVE      | 服务器管理             | 复制权限                                 
| SHOW DATABASES         | 服务器管理             | 查看数据库权限                           

用户权限

授权

GRANT (crant) ---授权。
mysql> grant   all  on    *.*  to  'tom'@’localhost’;权限      库名.表名      账户名  @连接方式             
mysql> FLUSH PRIVILEGES; #刷新授权表

查看权限

查看权限
1.看自己的权限:
mysql> show grants\G
#查看当前登录用户的权限
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION2.看别人的权限:
mysql> show grants for tom@'localhost'\G
#查看用户tom的权限        用户名@连接方式 
*************************** 1. row ***************************
Grants for tom@localhost: GRANT SELECT, INSERT ON *.* TO 'tom'@'localhost'

移除权限

语法:REVOKE 权限 ON 数据库.数据表 FROM '用户'@'IP地址';
mysql> revoke 权限名称 on  数据库.数据表 from '用户'@'连接方式'
- 被回收的权限必须存在,否则会出错
- 整个数据库,使用 ON datebase.*;
- 特定的表:使用 ON datebase.table;mysql> revoke select,delete on *.* from jack@'%';   #回收指定权限
mysql> revoke all privileges on *.* from jack@'%';  #回收所有权限
mysql> flush privileges;
#更新授权列表

权限控制机制

四张表:user   db    tables_priv  columns_priv
1.用户认证
查看mysql.user表
2.权限认证
以select权限为例:
1.先看 user表里的select_priv权限Y:不会接着查看其他的表  拥有查看所有库所有表的权限N:接着看db表
2.db表:  #某个用户对一个数据库的权限。Y:不会接着查看其他的表  拥有查看所有库所有表的权限N:接着看tables_priv表
3.tables_priv表:#针对表的权限table_priv:如果这个字段的值里包括select  拥有查看这张表所有字段的权限,不会再接着往下看了table_priv:如果这个字段的值里不包括select,接着查看下张表还需要有column_priv字段权限
4.columns_priv:针对数据列的权限表column_priv:有select,则只对某一列有select权限没有则对所有库所有表没有任何权限注:其他权限设置一样。# 授权级别排列- mysql.user #全局授权
- mysql.db #数据库级别授权
- 其他     #表级,列级授权

相关文章:

  • 刚刚,DeepSeek公布了推理引擎开源路径,OpenAI也将开始连续一周发布
  • 使用 vxe-table 来格式化任意的金额格式,支持导出与复制单元格格式到 excel
  • AI分析师
  • 高级语言调用C接口(二)回调函数(5)arkts
  • 一站式视频转换,在线转MKV,支持多种格式转换,便捷高效的格式转换之选
  • 客户验收标准模糊,如何明确
  • 爱普生FA1008AN在AI眼镜中的应用
  • 什么是进程?
  • C++之AVL树
  • 智能语音处理+1.3用SpeechLib实现文本转语音(100%教会)
  • 快手OneRec 重构推荐系统:从检索排序到生成统一的跃迁
  • FastAPI与SQLAlchemy数据库集成与CRUD操作
  • 【论文阅读笔记】模型的相似性
  • sonar-scanner (信创环境-arm64)执行报错
  • Android 应用数据分布目录结构解析
  • MCP:构建大型语言模型与外部系统无缝交互的标准协议架构
  • STM32F103_HAL库+寄存器学习笔记16 - 监控CAN发送失败(轮询方式)
  • Android ImageView 使用详解
  • JAVA程序实现mysql读写分离并在kubernetes中演示
  • C++异步编程从入门到精通实战:全面指南与实战案例
  • 网站备案填写电话号码/91永久海外地域网名
  • 网站开发时数据库的工作/提升神马关键词排名报价
  • 营销型网站和展示型网站的区别/seo网站优化服务
  • 汕头企业网站建设/seo搜索引擎实训心得体会
  • 专业做生鲜的网站好/网络服务中心
  • 网站域名解析到了空间 但空间未绑定此域名/网络营销是什么?