浅谈mysql【8.0】链接字符串
string connectionString = "server=your_server;user=your_user;password=your_password;database=your_database;sslmode=none;allowPublicKeyRetrieval=true;Allow User Variables=True;";
在 C# 中配置 MySQL 数据库连接字符串时,可以通过添加多个参数来控制连接的行为。你提到的几个参数分别是 sslmode=none、allowPublicKeyRetrieval=true、Allow User Variables=True。下面分别讲解这些参数的作用以及它们是否可以同时配置。
1. sslmode=none
- 作用: 这个参数用于控制 MySQL 连接是否使用 SSL 加密。
sslmode=none表示不使用 SSL 加密连接,这意味着数据将以明文形式在网络中传输,可能会增加数据被截获的风险。 - 使用场景: 当你的数据库服务器不支持 SSL 连接,或者你更关心连接的性能而不关心安全性时,可以使用这个选项。

2. allowPublicKeyRetrieval=true
- 作用: 这个参数允许客户端从 MySQL 服务器获取公钥。当使用基于 SHA-256 的密码认证方式(如
caching_sha2_password)时,如果客户端没有本地存储的公钥,可以请求服务器发送公钥。 - 使用场景: 当你使用 MySQL 8.0 及以上版本,并且用户的认证插件是
caching_sha2_password时,配置这个选项可以避免连接错误。
3. Allow User Variables=True
- 作用: 这个参数允许在 SQL 查询中使用用户变量。用户变量是在 MySQL 中定义的临时变量,可以在查询中使用。
- 使用场景: 当你需要在查询中使用用户变量时,例如在存储过程或复杂的 SQL 查询中,配置这个选项可以使 MySQL 支持用户变量的使用。
是否可以同时配置
是的,这些参数可以同时配置在同一个连接字符串中。例如:
总结
sslmode=none: 禁用 SSL 加密,适用于不关心安全的场景。allowPublicKeyRetrieval=true: 允许客户端从服务器获取公钥,适用于 MySQL 8.0 及以上版本的认证插件。Allow User Variables=True: 允许在 SQL 查询中使用用户变量,适用于需要使用用户变量的场景。
如果只使用基本的连接字符串 connectionString = "server=your_server;user=your_user;password=your_password;database=your_database;",而不配置 sslmode=none、allowPublicKeyRetrieval=true 和 Allow User Variables=True 这些参数,会有几个显著的区别。以下是每个区别的详细解释:
1. 数据传输的安全性(sslmode)
-
只使用基本连接字符串:
- 默认情况下,MySQL Connector/NET 可能使用明文连接,具体取决于 MySQL 服务器的配置和版本。如果没有启用 SSL,数据在客户端和服务器之间将以明文形式传输,存在被网络拦截的风险。
-
配置
sslmode=none:- 明确指定不使用 SSL,可以避免额外的加密处理,但同样会导致数据在传输过程中不安全。
-
不配置的影响:
- 如果后端 MySQL 服务器基于 SSL 的设置要求使用 SSL,而你的应用程序未配置 SSL,连接会失败,产生错误。
2. 公钥获取(allowPublicKeyRetrieval)
-
只使用基本连接字符串:
- 如果使用 MySQL 8.0 或以上版本且用户的密码采用了
caching_sha2_password认证插件,您在未配置allowPublicKeyRetrieval时,连接可能会因为无法获取公钥而失败。这种情况下,会出现一个错误,说明无法获得公钥,导致身份验证失败。
- 如果使用 MySQL 8.0 或以上版本且用户的密码采用了
-
配置
allowPublicKeyRetrieval=true:- 允许客户端动态获取公钥,避免由于公钥缺失而导致的连接失败。
-
不配置的影响:
- 如果服务器要求公钥并未在本地提供,连接会失败。
3. 用户变量支持(Allow User Variables)
-
只使用基本连接字符串:
- 默认情况下,MySQL Connector/NET 支持用户变量的使用。如果你的 SQL 查询或者存储过程不需要用户变量,这个选项可能不会直接影响你的应用程序。如果需要使用用户变量而未启用该选项,则可能会导致某些 SQL 查询失败或者无法应用。
-
配置
Allow User Variables=True:- 明确允许在 SQL 查询中使用用户变量,保证你可以在执行更加复杂的交互时充分利用用户变量的功能。
总结
- 安全性: 如果不配置
sslmode,将可能在不安全的环境中传输数据,但可能不影响连接的可用性;但如果要求使用 SSL 且未配置,连接会失败。 - 公钥处理: 不配置
allowPublicKeyRetrieval在特定情况下(尤其是现代 MySQL 版本和加密认证使用情况下)会导致连接失败。 - 用户变量: 不配置
Allow User Variables不会直接生成错误,但若需要使用用户变量,它的缺失可能会导致某些复杂查询执行失败。
因此,综合考虑安全、连接稳定性和功能实现,通常建议根据需求准备完整的连接字符串,以确保应用程序的健壮性和安全性。
相关文章:
浅谈mysql【8.0】链接字符串
string connectionString "serveryour_server;useryour_user;passwordyour_password;databaseyour_database;sslmodenone;allowPublicKeyRetrievaltrue;Allow User VariablesTrue;";在 C# 中配置 MySQL 数据库连接字符串时,可以通过添加多个参数来控制连…...
BERT,RoBERTa,Ernie的理解
BERT: 全称:Bidirectional Encoder Representations from Transformers。可以理解为 “基于 Transformer 的双向编码器表示”。含义:是一种用于语言表征的预训练模型。它改变了以往传统单向语言模型预训练的方式,能够联合左侧和右…...
获取 Wind 数据并进行简单的择时分析
使用Python获取Wind数据并进行简单的择时分析时,需要按照以下步骤操作。 (1)登录Wind官网,在“金融解决方案”的下拉列表里选择“金融终端”选项,如下图3.2所示。 (2)根据自己计算机的实际情况…...
小檗碱的酵母代谢工程生物合成-文献精读78
De novo production of protoberberine and benzophenanthridine alkaloids through metabolic engineering of yeast 将酵母代谢工程应用于原小檗碱和苯并啡啶类生物碱的从头合成 苄基异喹啉类生物碱的微生物合成-文献精读77 香叶醇酵母生产机器学习优化酵母-文献精读66 黄…...
文件指针和写入操作
文件指针位置 w 模式: 打开文件时,文件指针位于文件的开头。如果文件已存在,文件内容会被清空。写入的数据会从文件开头开始覆盖原有内容。 a 模式: 打开文件时,文件指针位于文件的末尾。如果文件已存在,文…...
跨越科技与文化的桥梁——ROSCon China 2024 即将盛大开幕
在全球机器人技术飞速发展的浪潮中,ROS(Robot Operating System)作为一款开源的机器人操作系统,已成为无数开发者、研究人员和企业的首选工具。为了进一步推动ROS的应用与发展,全球知名的机器人操作系统会议——ROSCon…...
springboot+shiro 权限管理
一、为什么要了解权限框架 权限管理框架属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则用户可以访问而且只能访问自己被授权的资源。 目前常见的权限框架有Shiro和Spring Security,本篇文章记录springboot整合sh…...
PureMVC在Unity中的使用(含下载链接)
前言 Pure MVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架,这种开源框架是免费的,它最初是执行的ActionScript 3语言使用的Adobe Flex、Flash和AIR,已经移植到几乎所有主要的发展平台,支持两个版本框架…...
25国考照片处理器使用流程图解❗
1、打开“国家公务员局”网站,进入2025公务员专题,找到考生考务入口 2、点击下载地址 3、这几个下载链接都可以 4、下载压缩包 5、解压后先看“使用说明”,再找到“照片处理工具”双击。 6、双击后会进入这样的界面,点击&…...
一位纯理科生,跨界自学中医,自行组方治好胃病、颈椎病与高血脂症,并在最权威的中国中医药出版社出版壹本专业中医图书!
这是一位铁杆中医迷, 也是《神农本草经——精注易读本》的作者。 希望更多的人能够受到启发,感受中医之神奇,敢于跨界,爱好中医,学习中医! 一个病人以自己的切身感受与诊断,并使之汤药治愈疾病&…...
运动控制 双轮差速模型轨迹规划
文章目录 一、轨迹规划1.1轨迹平滑与轮迹1.2 目标距离1.3 速度限制1.4 候选速度的计算与调整1.5 路径生成 二、双轮轨迹2.1 计算梯度2.2 计算偏移轨迹2.3 返回结果 一、轨迹规划 1.1轨迹平滑与轮迹 初始时,我们有一条由若干坐标点构成的机器人运行路径。通过对这些…...
使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序
文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中,我们经常需要处理表格数据,并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时,拖拽排序功能显得…...
MySQL索引相关介绍及优化(未完...)
如何看一条SQL语句的执行好坏? MySQL提供了自带的工具Explain可以查看sql语句的执行好坏。 explain主要的列: 1:type:这一列表示MySQL决定如何查找表中的行,查找数据行记录的大概范围。 有 system const eq_ref ref…...
【AI+教育】一些记录@2024.11.04
一、尝新 今天尝试了使用九章随时问,起因是看到快刀青衣的AI产品好用榜,里面这么介绍九章随时问:「它不是像其他产品那样,直接给你出答案。而是跟你语音对话,你会感觉更像是有一位老师坐在你的旁边,一步步…...
三维测量与建模笔记 - 2.2 射影几何
教程中H矩阵写的有问题,上图中H矩阵应该是(n1) x (m1) 共点不变性,下图中黄色方块标记的点,在射影变换前后,虽然直线的形状有所变化,但仍然相交于同一个点。 共线不变性,下图黄色标记的两个点,在…...
论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)
中文标题:简化目标检测的无源域适应:有效的自我训练策略和性能洞察 原文标题:Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 1、Abstract 本文重点关注计算…...
ros与mqtt相互转换
vda5050 VDA5050协议介绍 和 详细翻译-CSDN博客 ros与mqtt相互转换 如何转换的,通过某个中转包,获取ros的消息然后以需要的格式转换为mqtt 需要的参数 ros相关 parameters[ (ros_subscriber_type, vda5050_msgs/NodeState), (ros_subscriber_queue…...
Golang | Leetcode Golang题解之第522题最长特殊序列II
题目: 题解: func isSubseq(s, t string) bool {ptS : 0for ptT : range t {if s[ptS] t[ptT] {if ptS; ptS len(s) {return true}}}return false }func findLUSlength(strs []string) int {ans : -1 next:for i, s : range strs {for j, t : range s…...
安卓开发之数据库的创建与删除
目录 前言:基础夯实:数据库的创建数据库的删除注意事项 效果展示:遇到问题:如何在虚拟机里面找到这个文件首先,找到虚拟机文件的位置其次,找到数据库文件的位置 核心代码: 前言: 安…...
数据结构:LRUCache
什么是LRUCache 首先我们来看看什么是cache 缓存(Cache)通常用于两个速度不同的介质之间,以提高数据访问的速度和效率。这里有几个典型的应用场景: 处理器和内存之间: 处理器(CPU)的运算速度远…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
