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

深圳做网站可用乐云seo十年/百度关键词网站排名优化软件

深圳做网站可用乐云seo十年,百度关键词网站排名优化软件,武汉中建广场做网站的公司有哪些,dw做网站模板零、问题背景 最近想换房,为了方便自己对比感兴趣的房子,因此决定将目标房源的基本信息放在表里,特别是要一目了然的看到众多房子的各种图纸和照片,因此决定要在Mysql8.0.34数据库中以二进制形式保存图片(抛开合理性和…

零、问题背景

        最近想换房,为了方便自己对比感兴趣的房子,因此决定将目标房源的基本信息放在表里,特别是要一目了然的看到众多房子的各种图纸和照片,因此决定要在Mysql8.0.34数据库中以二进制形式保存图片(抛开合理性和性能暂且不谈,这里只说技术实现),许多帖子说使用load_file函数来实现,但我按照其他人的方法实操时一直返回NULL,还好历经千辛万苦终于解决了,现将过程与思路加以总结,存档留念。

一、准备工作

1.1、服务器与数据库版本

        我是用 rpm 方式安装的 MySQL 8.0.23 版本,服务器操作系统是Centos 7.9 虚拟机资源  2C 4G 40G

1.2、表结构

        下图是我的表结构,其中有几个字段是 mediumblob类型,用来存放大小约为200k以内的图片。

1.3、图片保存位置

        为了便于后续业务扩展,也出于数据隔离的需要,我用服务器上自定义了 /data/pic/house 路径作为当前业务存储图片的根目录。并在其下面创建了 housepic 和 roomtype两个路径。

二、问题分步展示

2.1、问题展示

        我将一张名为 h_1.jpg 的图片放到  /data/pic/house/roomtype 下,然后使用如下语句尝试查看图片时没能返回预期图片内容,而是返回了NULL。

select load_file('/data/pic/house/roomtype/h_1.jpg');

2.2、原因及secure_file_priv介绍

         load_file 函数返回为 null 的原因,根源在于 MySQL 配置文件中的 “secure_file_priv” 属性取值与load_file 函数使用的路径不一。在具体解决问题之前,应该先了解这一属性的作用和取值范围是什么。

2.2.1、secure_file_priv介绍

        该属性有三类取值,分别为 "NULL"、空值、具体路径字符串。不同取值的含义如下表所示

取值含义
NULL不允许读写任何路径下的文件
'' 或 没有值允许读写任意路径下的文件
字符串(如 /tmp)允许读写当前路径(如 /tmp)下的文件
2.2.2、secure_file_priv 查看

        在MySQL任意一种客户端中输入如下命令查看。secure_file_priv的默认取值如下图所示,为 “/var/lib/mysql-files/”。说明当前load_file 函数只能操作 “/var/lib/mysql-files/” 路径下的文件。

show variables like '%secure%';

      

2.2.3、secure_file_priv 修改

        通过上面的分析已经知道了问题的原因,下面就是在MySQL的配置文件中修改这一参数的取值。因为我的MySQL是rpm安装版,所以配置文件的名称与路径为: /etc/my.cnf (其他版本操作系统下的MySQL的配置文件位置与名称请自行确认)。同时我希望 MySQL 不限制文件路径,因此 secure_file_priv 取值及展示如下所示:

#关闭mysql的文件读写路径限制,取值为空
secure-file-priv= ''

        需要注意的一点就是,配置文件中应写成 “secure-file-priv” 而非“secure_file_priv”的形式,切切

2.3、效果与终极解决方法

        如果逐位按照上面的方法作了修改,大概率是依然不成功。原因在于没有关闭selinux 。我之前就在selinux 这个坑中挣扎了好久才爬出来。下面就简单聊聊 selinux 是啥,以及为什么会对这个参数有这么大的影响。

2.3.1、selinux是什么、能做什么

        它是“安全增强型 Linux(Security-Enhanced Linux)”的简称,它是 Linux 的一个安全子系统。

        它能对linux系统中,包括root在内的所有用户的行为做管制。它能通过一系列的配置实现 “允许 X 目标,对 Z 对象/资源,做 Y行为 ” (May <subject> do <action> to <object/source>)的访问控制。其中,X多指进程;Y多指X访问的资源,如端口、文件等;Z多指访问或操作规则。

        它有三种工作模式,如下表所示:

模式名称作用
enforcing强制模式。阻止并在日志记录违反SELinux规则的行为
permissive宽容模式。仅在日志记录违反SELinux规则的行为
disabled关闭模式。关闭SELinux

        selinux 是一套相当复杂的子系统,里面有庞大的配置项需要了解,在此不做进一步的解释,只需要知道它会对 MySQL 的关键行为做校验与限制即可。除非是专门负责安全和服务器运维的工程师需要深入了解selinux各种规则之外,一般的开发人员在遇到linux 的一些校验失败的情况时,可以想到有这样一个东西存在,并且知道通过关闭selinux可以解决大部分的安全校验问题即可

2.3.2、selinux 的关闭与开启

        selinux 的关闭分为临时关闭和永久关闭,下图为临时关闭方式(即设为宽容模式)

        

        下面为永久关闭方法

# 修改 /etc/selinux/config 文件中的  SELINUX=disabled
[root@MySQL01 ~]# vim /etc/selinux/config# 修改 /etc/sysconfig/selinux 文件中的  SELINUX=disabled
[root@MySQL01 ~]# vim /etc/sysconfig/selinux

2.4、最终效果

        在MySQL 的 secure_file_priv参数设置为理想的值,并且关闭了 selinux 之后,发现可以正常读取到图片了,如下图所示

2.5、补充说明

        存放图片的路径,建议放到 mysql 属组,且赋予 对应的权限。如下图所示

        

三、说在最后

9.1 如何查看centos 版本

cat /etc/redhat-release

9.2、如何查看MySQL版本

select VERSION(); 

9.3、load_file 函数的作用与效率

        它在 MySQL 中的主要作用是读取本地或远程的文件。文件种类涵盖文本、二进制、图片、视频等。因这样的读取方式不够安全,因此建议在受信的环境中使用。

9.4、MySQL 几种操作图片的思路和对比

        可以通过load_file 函数将图片记录到字段中,也可以将图片所在的路径记录到字段中。前者存在安全隐患,后者无法在MySQL中直接看到图片内容。因此对图片的处理方式应根据业务需求等因素综合考虑后选择。

相关文章:

Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解

零、问题背景 最近想换房&#xff0c;为了方便自己对比感兴趣的房子&#xff0c;因此决定将目标房源的基本信息放在表里&#xff0c;特别是要一目了然的看到众多房子的各种图纸和照片&#xff0c;因此决定要在Mysql8.0.34数据库中以二进制形式保存图片&#xff08;抛开合理性和…...

基于Spring Boot的水产养殖管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot的水产养殖管理系统,jav…...

LCR 090. 打家劫舍 II(leetcode)动态规划

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下LeetcodeLCR 090. 打家劫舍 II。采用动态规划解决&#xff0c;这是一道经典的多状态dp问题 一、题目分析…...

【小沐学Python】Python实现语音识别(Whisper)

文章目录 1、简介1.1 whisper简介1.2 whisper模型 2、安装2.1 whisper2.2 pytorch2.3 ffmpeg 3、测试3.1 命令测试3.2 代码测试&#xff1a;识别声音文件3.3 代码测试&#xff1a;实时录音识别 结语 1、简介 https://github.com/openai/whisper 1.1 whisper简介 Whisper 是…...

Nginx负载均衡实战

&#x1f3b5;负载均衡组件 ngx_http_upstream_module https://nginx.org/en/docs/http/ngx_http_upstream_module.html upstream模块允许Nginx定义一组或多组节点服务器组&#xff0c;使用时可以通过多种方式去定义服务器组 样例&#xff1a; upstream backend {server back…...

Redis skiplist源码解析(支持范围查询)

跳表是一个多层的有序链表&#xff0c;在跳表中进行查询操作时&#xff0c;查询代码可以从最高层开始查询。层数越高&#xff0c;结点数越少&#xff0c;同时高层结点的跨度会比较大。因此&#xff0c;在高层查询结点时&#xff0c;查询一个结点可能就已经查到了链表的中间位置…...

MVSNeRF:多视图立体视觉的快速推广辐射场重建(2021年)

MVSNeRF&#xff1a;多视图立体视觉的快速推广辐射场重建&#xff08;2021年&#xff09; 摘要1 引言2 相关工作3 MVSNeRF实现方法3.1 构建代价体3.2 辐射场的重建3.3 体渲染和端到端训练 3.4 优化神经编码体 Anpei Chen and Zexiang Xu and Fuqiang Zhao et al. MVSNeRF: Fast…...

华为OD机试真题-CPU算力分配-2023年OD统一考试(C卷)

题目描述: 现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,…...

校验数据是否重叠(各种操作符>,<,>=,<=,or,and)

最近接到一个需求&#xff0c;其中部分功能涉及到数据的重叠校验&#xff0c;并且录入的数据需要包含各种操作符。如果只通过java代码来查询并进行循环判断的话&#xff0c;判断情况会很复杂&#xff0c;幸好有同事的帮忙提供了一个用sql查询重叠部分的方法&#xff0c;现在分享…...

大一C语言作业 12.8

1.C 对一维数组初始化时&#xff0c;如果全部元素都赋了初值&#xff0c;可以省略数组长度。 这里没有指定数组长度&#xff0c;编译器会根据初始化列表的元素个数来确定数组长度。 2.C 在C语言中&#xff0c;字符数组是不能用赋值运算符直接赋值的。 3.C 在二维数组a中&#x…...

ELasticsearch:什么是语义搜索?

语义搜索定义 语义搜索是一种解释单词和短语含义的搜索引擎技术。 语义搜索的结果将返回与查询含义匹配的内容&#xff0c;而不是与查询中的单词字面匹配的内容。 语义搜索是一组搜索引擎功能&#xff0c;其中包括根据搜索者的意图及其搜索上下文理解单词。 此类搜索旨在通过…...

ooTD I 女儿是自己的,尽情打扮尽情可爱

分享女宝的时尚穿搭 奶乎乎的黄色也太好看了 超足充绒量&#xff0b;优质面料 柔软蓬松上身体验感超赞 怎么穿都好看系列 轻轻松松打造时尚造型&#xff01;&#xff01;...

第62天:django学习(十一)

cookie和session 发展史 一开始,只有一个页面&#xff0c;没有登录功能&#xff0c;大家看到东西都一样。 时代发展&#xff0c;出现了需要登录注册的网站&#xff0c;要有一门技术存储我们的登录信息&#xff0c;于是cookie诞生了。 cookie: - 存储形式&#xff1a;k:v键值对…...

Rust测试字符串的移动,Move

代码创建了一个结构体&#xff0c;结构体有test1 字符串&#xff0c;还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址&#xff0c;变成了另外结构体的内容。注意看指针部分&#xff0c;还是指向原来的地址…...

vue+electron问题汇总

1. Vue_Bug Failed to fetch extension, trying 4 more times 描述&#xff1a;项目启动时报错 解决&#xff1a;注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述&#xff1a;项目启动报错 解决&#xff1a;vue.config.js中添加图中数据 3.导入…...

Linux中的网络时间服务器

本章主要介绍网络时间的服务器 使用chrony配置时间服务器配置chrony客户端服务器同步时间 1.1 时间同步的重要性 一些服务对时间要求非常严格&#xff0c;例如如图所示的由三台服务器搭建的ceph集群 这三台服务器的时间必须保持一致&#xff0c;如果不一致&#xff0c;就会显…...

fastadmin打印页面

如下图选中订单号进行打印 html中增加代码 <div id"toolbar" class"toolbar"><a href"javascript:;" class"btn btn-primary btn-refresh" title"{:__(Refresh)}" ><i class"fa fa-refresh">&l…...

Java 将word转为PDF的三种方式和处理在服务器上下载后乱码的格式

我这边是因为业务需要将之前导出的word文档转换为PDF文件&#xff0c;然后页面预览下载这样的情况。之前导出word文档又不是我做的&#xff0c;所以为了不影响业务&#xff0c;只是将最后在输出流时转换成了PDF&#xff0c;当时本地调用没什么问题&#xff0c;一切正常&#xf…...

C\C++ 获取最值

C C 语言的不同类型的最值可以在 limits.h 头文件里找到定义 #include <limits.h>int main() {printf("%d", INT_MAX); // 整数最大值printf("%d", INT_MIN); // 整数最小值 } C C 有模板&#xff0c;可以通过替换下面的 int 和 double&#xff…...

机器学习之无监督学习:九大聚类算法

今天&#xff0c;和大家分享一下机器学习之无监督学习中的常见的聚类方法。 今天&#xff0c;和大家分享一下机器学习之无监督学习中的常见的聚类方法。 在无监督学习中&#xff0c;我们的数据并不带有任何标签&#xff0c;因此在无监督学习中要做的就是将这一系列无标签的数…...

Linux高级管理-搭建网站服务

在Ihternet 网络环境中&#xff0c;Web 服务无疑是最为流行的应用系统。有了Web站点&#xff0c;企业可以充分 展示自己的产品&#xff0c;宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技…...

Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法

使用SVN提交版本信息时&#xff0c;注释内容写的不全。通过右键TortoiseSVN的Show log看到提交的的注释&#xff0c;右键看到Edit log message的选项&#xff0c;然而提交后却给出错误提示&#xff1a; Repository has not been enabled to accept revision propchanges; ask …...

编译 Android gradle-4.6-all.zip 报错问题记录

编译 Android gradle-4.6-all.zip 报错问题记录 方法一&#xff1a;替换资源&#xff1a;方法二&#xff1a;修改源方法三&#xff1a;修改版本 编译时候无法下载 gradle-4.6-all Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip 方法一&#xf…...

Linux系统调试课:Valgrind 内存调试

文章目录 一、为什么要学会Valgrind二、什么是内存泄露三、Valgrind的移植四、Valgrind相关参数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于帮助开发者找出程序中的内存错误,如内存泄漏、使用未初始化的内存、非…...

python主流开发工具排名,python开发工具有哪些

本篇文章给大家谈谈python的开发工具软件有哪些&#xff0c;以及python主流开发工具排名&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 python中用到哪些软件 一、Python代码编辑器1、sublime Textsublime Text是一款非常流行的代码编辑器&#xff0c;支持P…...

Spring Boot Async:从入门到精通,原理详解与最佳实践

Spring Boot 的异步功能&#xff08;Async&#xff09;允许我们将某些任务异步执行&#xff0c;而不会阻塞主线程。这对于处理耗时的操作非常有用&#xff0c;如发送电子邮件、生成报表、调用外部 API 等。通过异步处理&#xff0c;我们可以释放主线程&#xff0c;让它继续处理…...

oracle 19c创建db_link名称带.com域名问题处理

文章目录 一、修改PDB的global_name二、重启数据库实例三、修改domain后重试 一、修改PDB的global_name SYSorcl1>sho pdbsCON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----------2 PDB$SEED …...

银行卡二要素API的应用案例:从在线购物到金融投资

引言 随着互联网技术的不断发展&#xff0c;人们的金融需求也在不断增加。随之而来的是各种新型金融服务的涌现&#xff0c;让用户的金融体验更加便利快捷。其中&#xff0c;银行卡二要素API的应用&#xff0c;则为用户的金融体验和安全性提供了极大的保障。 银行卡二要素API…...

MySQL 忘记root密码后重置密码操作

在忘记 MySQL 密码的情况下&#xff0c;可以通过 --skip-grant-tables 关闭服务器的认证&#xff0c;然后重置 root 的密码&#xff0c;具体操作步骤如下。 步骤 1)&#xff1a;关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2)&#xff1a;输入mysqld -…...

开源电子合同签署平台小程序源码/电子文件签字+在线合同签署系统源码/电子合同小程序源码

源码简介&#xff1a; 开源电子合同签署平台小程序源码&#xff0c;它是电子文件签字在线合同签署系统源码/电子合同小程序源码 目前商业端和开源端一致&#xff0c;免费开源状态&#xff01; 聚合市场上各类电子合同解决方案商&#xff0c;你无需一个一个的对接电子合同厂商…...