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

/usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题

最近忙于审计,为了增加数据库的密码安全,想给数据库添加一个validate_password密码校验插件,方法很简单,网上也多,但是遇到了一个权限问题,Linux的一个初级权限问题,我竟然不懂。太low了,,,写下来寒碜一下自己个。

先说一下添加插件的步骤:

1.要使服务器可用,插件库文件必须位于MySQL插件目录中(由plugin_dir系统变量命名的目录)。如果需要,通过在服务器启动时设置plugin_dir的值来配置插件目录位置。

mysql> show variables like 'plugin_dir';

+---------------+--------------------------+

| Variable_name | Value                    |

+---------------+--------------------------+

| plugin_dir    | /home/me/mysql/lib/plugin/ |

+---------------+--------------------------+

2.或者修改my.cnf之后,重启服务器以使新设置生效。或者,要在运行时注册插件,可以使用以下语句

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

3.报错及解决

但是我的报错如下:

[ERROR] Can't open shared library '/home/me/mysql/lib/plugin/validate_password.so' (errno: 25 /home/me/mysql/lib/plugin/validate_password.so: cannot open shared obje

ct file: Permission denied)

这明显是一个权限问题,查看validate_password.so文件:

-rwxr-xr-x 1 root root    44205 Sep 27 16:44 validate_password.so

其它用户有读的权限,这就没道理了,怎么报权限错误呢。

之后曲折的查找了一会,发现它前面有个目录/me 的权限是-rwx------ 1 root root ,也就是只有root账号权限的用户可以访问me目录下的文件。

好,问题找到了,修改权限为-rwxr-xr-x 1 root root 这样就可以了。

4.写在最后

最后说一下我的误解,之前一直认为,一个文件只要有被另一个用户访问的权限就行,大可以一个文件权限设成777,根本不需要考虑所在的目录权限。而实际情况是,首先需要有访问目录的权限,之后再考虑文件权限。这就好像一间房子是目录,里面有很多人是文件,即使房间里有你的人,你也需要先拿到房子的钥匙才能联系上你的人。

这次问题看来之前理解一直有误,只是之前一直侥幸逃脱,当自认为是正确的问题别一次次错误的验证为正确时,就会自认为是真理。多么痛的领悟!

相关文章:

  • datax把text转mysql_使用DataX实现mysql数据迁移
  • haccp体系的参照标准是_食品安全标准与ISO、GMP、HACCP等体系之间的相互关系
  • mac mysql 多实例_Mac上mysql多端口实例配置并设置开机自动启动
  • mysql 主要有哪些函数_mysql中有哪些函数
  • mysql索引失效解决6_简单介绍MySQL索引失效的几种情况
  • java 获取方法的参数_Java 8中如何获取参数名称的方法示例
  • java gui程序运行_13.JAVA之GUI编程将程序打包jar
  • java输入输出学生成绩_java从键盘输入学生成绩,找出最高分,并输出学生成绩等级。...
  • java $ 解析api_Java版抖音解析接口
  • java 10的 6次方_【Java】 剑指offer(15) 数值的整数次方
  • java 方法 返回值 int_关于java字节流类的read()方法返回值为int的思考
  • java 迭代器复制_java设计模式之迭代器模式
  • java取文件类型_java如何通过文件描述符获取文件类型
  • java pdb_当12C PDB遇上JDBC
  • java复选框添加选中事件_Java的JTable中添加JCheckBox,点击事件处理问题,求高手指点迷津...
  • 78. Subsets
  • Android系统模拟器绘制实现概述
  • Asm.js的简单介绍
  • Mybatis初体验
  • PhantomJS 安装
  • tensorflow学习笔记3——MNIST应用篇
  • 笨办法学C 练习34:动态数组
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 回流、重绘及其优化
  • 聊聊directory traversal attack
  • 人脸识别最新开发经验demo
  • 温故知新之javascript面向对象
  • FaaS 的简单实践
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • # 计算机视觉入门
  • #1014 : Trie树
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (C++17) std算法之执行策略 execution
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (day6) 319. 灯泡开关
  • (LeetCode C++)盛最多水的容器
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (转)Windows2003安全设置/维护
  • (转)winform之ListView
  • .describe() python_Python-Win32com-Excel
  • .Net Core 中间件验签
  • .NET 常见的偏门问题
  • .net 程序发生了一个不可捕获的异常
  • .net 后台导出excel ,word
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net下简单快捷的数值高低位切换
  • .net中调用windows performance记录性能信息
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [].slice.call()将类数组转化为真正的数组
  • [APIO2012] 派遣 dispatching
  • [asp.net core]project.json(2)