MySQL经验分享:Shell开发问题

背景

之前整理过Python连接使用MySQL的经验,链接如下:

pymysql封装总结_pymysql封装类-CSDN博客

相比高级语言,Shell与MySQL开发使用相对会更麻烦一些;由于

  • shell是linux命令集的概称,是属于命令行的人机界面。Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁

  • 可以快速开发实现需求,运维用户是通过Shell快速实现需求,并且部署在Linux服务器上

所以分享下MySQL与Shell开发经验

分享

Shell脚本登录时警告不安全

说明

通过Shell脚本连接数据库MySQL进行操作时,在使用正确的用户密码正常登录MySQL后,会提示:[Warning] Using a password on the command line interface can be insecure

意思为:[警告]在命令行界面上使用密码可能不安全

复现

mysql_dev.sh脚本代码如下:

mysql_host=127.0.0.1
mysql_port=3306
mysql_user=root
mysql_passwd="123456"
mysql -h ${mysql_host} --port "${mysql_port}" -u "${mysql_user}" --password=${mysql_passwd} -e 'show databases'

执行脚本返回信息如下:
在这里插入图片描述

解决方案

通过全局设置密码export MYSQL_PWD=<明文密码>,改造如下:

mysql_host=127.0.0.1
mysql_port=3306
mysql_user=root
mysql_passwd="123456"
export MYSQL_PWD="${mysql_passwd}"
mysql -h "${mysql_host}" --port "${mysql_port}" -u "${mysql_user}"  -e 'show databases'

执行脚本返回信息如下,问题被解决
在这里插入图片描述

执行SQL报错可以获知和处理

说明

当使用错误的SQL执行时,如表不存在这种场景,是没办法直接报错的;但是预期应该是:当报错时,可以获知和处理

复现

原代码如下:

mysql -h "${mysql_host}" --port "${mysql_port}" -u "${mysql_user}"  -e 'show database'

执行结果如下:
在这里插入图片描述

解决方案

通过shell的错误信号$?判断是否成功执行,改造如下:

mysql -h "${mysql_host}" --port "${mysql_port}" -u "${mysql_user}"  -e 'show database'
if [[ $? -ne 0 ]];then
    echo "执行MySQL报错"
fi

执行结果如下:

在这里插入图片描述

执行SQL报错信息不进行输出

说明

如上一个例子,可以知道执行SQL报错,因为直接打印输出了;但由于在Shell中,代码量多,在正常情况下,预期知道执行错误但不期望打印输出错误

解决方案

在上一个例子的前提下,可以通过Shell的 2>&1解决

改造如下:

mysql -h "${mysql_host}" --port "${mysql_port}" -u "${mysql_user}"  -e 'show database' 2>&1
if [[ $? -ne 0 ]];then
    echo "执行MySQL报错"
fi

改造后执行结果如下,MySQL客户端返回的错误信息没有被打印

在这里插入图片描述

补充:其中Shell脚本登录时告警不安全也可以通过这一方法解决

返回结果如何处理

说明

一般通过Shell脚本连接使用MySQL,不会有使用MySQL处理返回结果。但是也有这种场景问题。所以,怎么通过Shell处理MySQL执行SQL的返回结果,特别是多条返回结果的场景下。

解决方案

如处理获取MySQL表结构desc <table>

mysql_host=127.0.0.1
mysql_port=3306
mysql_user=root
mysql_passwd="123456"
export MYSQL_PWD="${mysql_passwd}"

sql="desc mysql.slow_log;"
if [[ $? -ne 0 ]];then
    echo "执行MySQL报错"
fi
mysql -h "${mysql_host}" --port "${mysql_port}" -u "${mysql_user}" -e "${sql}" | awk '{
    if(NR>1){  
        print "序号: "NR-1", 字段: "$1", 类型: "$2", 是否允许为空: "$3", 默认值: "$4
    }
}'

执行返回结果
在这里插入图片描述

补充:由于awk默认是通过空格分列的,而MySQL也是,所以通过desc获取表结构信息的返回结果时,第5列预期返回的是描述信息,但实际上,如果描述信息有空格内容,会被截断。

总结

以上是MySQL与Shell开发经验分享,基本可以满足通过Shell开发满足日常运维需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/507351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事&#xff0c;可以理解为k8s中的namespace是为了多租户&#xff0c;dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级&#xff1a; 滚动升级&#x…

MS35774/MS35774A,低噪声 256 细分微步进电机驱动,可用在车灯随动,香氛机等领域

MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片&#xff0c;芯片内置功率 MOSFET &#xff0c;长时间工作的平均电 流可以达到 1.4A &#xff0c;峰值电流 2A 。芯片集成了过温保护、欠压 保护、过流保护、短地保护、短电源保护功能。 主要特点 ◼ 2…

微信支付平台与微信服务号关联配置要点

目录 JSAPI支付 前期资料及相关准备 申请微信服务号 服务号配置要点 微信认证 基本配置 功能设置 申请微信支付号 支付号配置要点 设置操作密码 API安全 开发设置 与服务号关联 小结 JSAPI支付 我们的开发应用场景以JSAPI支付为举例&#xff0c;这也是常用的一…

微服务——Ribbon负载均衡

Ribbon负载均衡 1.负载均衡原理1&#xff09;对LoadBalancerIntercepor进行源码跟踪&#xff1a;2&#xff09;LoadBalancerClient继续跟入execute方法&#xff1a;3&#xff09;负载均衡策略IRule4&#xff09;总结 2.负载均衡策略自定义负载均衡策略 3.饥饿加载 在eureka中&a…

从零开始学大模型 | 你必须要知道的三种大模型架构可视化的方法!

引言 大模型架构可视化对于理解、解释和优化这些复杂模型具有重要意义和作用&#xff0c;主要包括以下两个方面&#xff1a; 提高模型透明度和可解释性通过可视化&#xff0c;我们能够直观地观察到模型内部的计算过程、参数分布、特征提取等&#xff0c;从而更好地理解模型是如…

【Node.js】-PostCSS简介

简介 PostCSS中文网地址 PostCSS是一个由JavaScript插件转换样式的工具&#xff0c;它的目标是探索CSS工具的新可能性&#xff0c;特别是在自动化和优化方面。它能够让你使用未来的CSS特性&#xff0c;同时优化现有的CSS代码&#xff0c;使其更加高效和兼容。 PostCSS本身并不…

【Dynamics 365 FO】导入汇率以及在X++代码中使用这些汇率

商务合作请加微信&#xff1a;DingtalkCSM 首先我们需要先创建一个汇率提供方&#xff0c;Dyanmics 365官方为我们提供了三个汇率提供方&#xff0c;直接点new然后选一个就好了。 建好汇率提供方之后我们就可以导入汇率了。 配置一下各项参数。 我们可以配置一个批处理&#x…

h5接入腾讯云人脸核身

一.自助接入步骤。 1.登录腾讯云开通人脸核身服务。 2.选择微信h5。 3.填写用户授权信息&#xff0c;选择对比源。 4.在调用实名核身鉴权接口时&#xff0c;必须传入认证人姓名和身份证号。 5.配置结果。 二.时序图 三.后端接口 service package com.ynfy.buss.exam.faceve…

PurpleKeep:提供Azure管道以创建基础设施并执行Atomic测试

关于PurpleKeep PurpleKeep是一款功能强大的安全测试自动化工具&#xff0c;该工具能够通过提供Azure管道以创建基础设施&#xff0c;并帮助广大研究人员执行Atomic测试。 随着攻击技术种类的迅速增加&#xff0c;以及EDR&#xff08;端点检测和响应&#xff09;和自定义检测规…

C语言----预处理(详解)

好了书接上回。我在讲编译与链接的时候写过宏和条件建议。我说会在下一篇博客中讲解&#xff0c;那么来了。今天我们来详细的讲讲预处理。宏与条件编译也在其中&#xff0c;那么我们现在就来好好会会这个预处理吧。 预定义符号 关于预定义符号&#xff0c;我暂时只知道几个。并…

Python-VBA编程500例-028(入门级)

经典二分查找算法(Classic Binary Search Algorithm)(也称为折半查找算法)&#xff0c;是一种在有序数组中查找某一特定元素的搜索算法。它要求序列必须有序&#xff0c;然后通过每次比较数组中间元素与目标值&#xff0c;将搜索范围缩小一半&#xff0c;直到找到目标元素或搜索…

传输大咖20|提升效率:优化文件服务器删除大文件夹过程的策略

引文&#xff5c; 文件服务器在删除大文件夹时&#xff0c;往往会比较耗时。如果在原有线程中同步等待删除结果&#xff0c;那么会阻塞原有线程的运行&#xff1b;如果在其它线程中异步删除文件夹&#xff0c;则虽不阻塞原有线程的运行&#xff0c;但对于那些关注删除结果的用户…

每日面经分享(pytest装饰器)

pytest装饰器 a. pytest.mark.parametrize&#xff1a;这个装饰器用于标记测试函数&#xff0c;并为其提供多组参数进行参数化测试。可以使用元组、列表、字典等形式来指定参数组合。 import pytestpytest.mark.parametrize("num1, num2, expected", [(2, 2, 4), (5…

力扣热门算法题 217. 存在重复元素,223. 矩形面积,225. 用队列实现栈

217. 存在重复元素&#xff0c;223. 矩形面积&#xff0c;225. 用队列实现栈&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.04.01 可通过leetcode所有测试用例。 目录 217. 存在重复元素 解题思路 完整代码 Java Python 223…

Discuz采集发布插件

Discuz&#xff08;简称DZ&#xff09;是一款知名的开源论坛系统&#xff0c;广泛应用于各类网站社区。对于许多站长来说&#xff0c;保持论坛内容的更新是一项挑战&#xff0c;特别是在内容量庞大的情况下。为了解决这个问题&#xff0c;有一类特殊的插件是用于在Discuz论坛中…

惟客数据《2024泛零售行业大会员经营实践与案例》正式发布

对于多业态、多品牌、多渠道经营的泛零售企业而言&#xff0c;如何改变过去会员经营过程中“各自为政”的状态&#xff1f; 如何让企业内不同业务之间的会员经营“瞄得准、看得穿、打得透、流得通、触得动”&#xff0c;充分发挥多业态、多品牌、多渠道优势&#xff0c;最大化挖…

transformers微调模型后使用pieline调用无法预测列表文本

初学transformers框架 使用trainer简单训练一个文本分类模型三个epoch后 使用piepline调用model 和tokenizer后 发现 传入列表文本后 输出就变得不正常了&#xff0c;为么子哇 如下图

简单说清楚什么是SQL Injection?

最近看完了《The Pragmatic Programmer: 20th Anniversary Edition, 2nd Edition: Your Journey to Mastery》&#xff0c;在第7章&#xff1a;While You Are Coding的footnotes中&#xff0c;提到了一幅漫画&#xff1a; 这不仅用简单的方式说清楚了什么是SQL Injection&#…

【御控物联】JSON结构数据转换在物联业务中应用(场景案例二)

文章目录 一、物联网业务场景现状二、物联网业务场景数据交互格式三、JSON格式数据转换案例四、JSON数据格式转换DEMO 一、物联网业务场景现状 目前&#xff0c;市场上多数物联网关与物联平台捆绑售卖&#xff0c;网关采集到设备数据只能按照指定的协议和规定的数据格式传输到…

蚂蚁测试可控制天气的“龙王”系统

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 所有伟大的发明&#xff0c;都来自最初不切实际的幻想。 4月1日&#xff0c;不少互联网大厂都发布一些新产品&#xff0c;例如&#xff1a;淘宝测试用火箭送快递&#xff0c;蚂蚁集团推出可以控制天气的技术系统畅…