百摩网
当前位置: 首页 生活百科

网络故障证明文件(故障分析密码使用特殊字符)

时间:2023-06-28 作者: 小编 阅读量: 1 栏目名: 生活百科

网络故障证明文件作者:王祥爱可生DBA团队成员,主要负责mysql故障处理和性能优化。经过与正常用户对比发现存在登录异常的用户使用了特殊字符"$"。首先可以确认一下存入数据库的密码是否正确。我们可以手动新建一个用户密码与app用户密码保持一致。使用mysql登录时密码加单引号或手动输入密码此时$2没有被解析成空,与数据库中的密码不一致无法登录,而密码加双引号或不加时$2被解析成空,刚好和数据库的密码一致此时能正常登录数据库。

网络故障证明文件?作者:王祥爱可生 DBA 团队成员,主要负责 mysql 故障处理和性能优化对技术执着,为客户负责,今天小编就来聊一聊关于网络故障证明文件?接下来我们就一起去研究一下吧!

网络故障证明文件

作者:王祥

爱可生 DBA 团队成员,主要负责 mysql 故障处理和性能优化。对技术执着,为客户负责。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


背景

最近在使用脚本新建了一批应用用户,发现一个奇怪的问题,有部分用户存下以下问题:应用使用该密码能正常访问,但使用 mysql 客户端登录手动输入密码无法登录。经过与正常用户对比发现存在登录异常的用户使用了特殊字符"$"。

问题复现

在测试环境使用脚本生成一批用户

#新建用户脚本简化后如下#!/bin/bashpw="abc$2UY"mysql --login-path=root -e"create user app@'%' identified by '$pw'"mysql --login-path=root -e"grant insert,update,delete,select on *.* to app@'%'"#测试使用mysql客户端登录[root@node3 ~]# mysql -h127.0.0.1 -uapp -p#手动输入密码无法登录Enter password:ERROR 1045 (28000): Access denied for user 'app'@'127.0.0.1' (using password: YES)[root@node3 ~]# mysql -h127.0.0.1 -uapp -p'abc$2UY' #使用单引号无法登录mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 1045 (28000): Access denied for user 'app'@'127.0.0.1' (using password: YES)[root@node3 ~]# mysql -h127.0.0.1 -uapp -pabc$2UY #不加单引号或使用双引号都可以登录mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.Commands end with ; or \g.Your MySQL connection id is 15389Server version: 8.0.18 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

问题分析

正常的话上述登录方式都是可以正常登录数据库的,那为什么部分可以部分不可以呢?首先可以确认一下存入数据库的密码是否正确。我们可以手动新建一个用户密码与 app 用户密码保持一致。然后比较 mysql.user 表中 authentication_string 字段是否一致。

mysql> create user test@'%' identified by 'abc$2UY';Query OK, 0 rows affected (0.05 sec)mysql> select user,host,authentication_string from mysql.user where user in ('app','test'); ------ ------ ------------------------------------------- | user | host | authentication_string | ------ ------ ------------------------------------------- | app| %| *06E0B7BA0149152EE2A387A144A2DF9ACC492297 || test | %| *7258A15F121DD9F6F7C40C08D34A3DB5ED8C8CB5 | ------ ------ -------------------------------------------

通过对比 authentication_string 字段发现两个密码不一致,说明脚本生成的用户密码并不是原来的密码了。为什么会这样呢?我们知道在 shell 中使用单引号与双引号定义的字符串是有区别的。如下:

[root@node3 ~]# echo "abc$2UY"abcUY[root@node3 ~]# echo 'abc$2UY'abc$2UY[root@node3 ~]# echo abc$2UYabcUY

单引号定义字符串所见即所得,双引号引用的内容,所见非所得。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出最终内容。分析到这回头看脚本密码使用了双引号导致了 $2 被解析成了空,最终存入数据库的密码为:abcUY 。使用 mysql 登录时密码加单引号或手动输入密码此时 $2 没有被解析成空,与数据库中的密码不一致无法登录,而密码加双引号或不加时 $2 被解析成空,刚好和数据库的密码一致此时能正常登录数据库。下面我们新建一个用户密码设置成:abcUY ,验证一下。

mysql> create user test1@'%' identified by 'abcUY';Query OK, 0 rows affected (0.03 sec)mysql> select user,host,authentication_string from mysql.user where user in ('app','test','test1'); ------- ------ ------------------------------------------- | user| host | authentication_string | ------- ------ ------------------------------------------- | app| %| *06E0B7BA0149152EE2A387A144A2DF9ACC492297 || test| %| *7258A15F121DD9F6F7C40C08D34A3DB5ED8C8CB5 || test1 | %| *06E0B7BA0149152EE2A387A144A2DF9ACC492297 | ------- ------ -------------------------------------------

比较用户 app 与 test1 的 authentication_string 字段发现一致,说明 app 密码确实是 abcUY 。其实不止$符会有这个问题,其它特殊字符也会存上以上问题。所以在新建用户或登录数据库时如果密码包含特殊字符需要注意是否会被解析的问题。

另外在使用 login-path 免密登录配置时,如果密码包含“#”符号,存在一个 bug(https://bugs.mysql.com/bug.php?id=95597)正常配置的密码无法登录到数据库,需要加上双引号。测试如下:

mysql> create user app2@'%' identified by '123#abc';Query OK, 0 rows affected (0.01 sec)[root@node3 ~]# mysql_config_editor set --login-path=app --user=app2--host=127.0.0.1 -pEnter password:输入123#abc[root@node3 ~]# mysql --login-path=appERROR 1045 (28000): Access denied for user 'app2'@'127.0.0.1' (using password: YES)#规避这个bug也很简单,配置时输入密码加上双引号[root@node3 ~]# mysql_config_editor set --login-path=app --user=app2--host=127.0.0.1 -pEnter password: 输入"123#abc"[root@node3 ~]# mysql --login-path=appWelcome to the MySQL monitor.Commands end with ; or \g.Your MySQL connection id is 15542Server version: 8.0.18 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

该 bug 在 MySQL 5.7.33 ,MySQL 8.0.23 修复。

总结

1.新建用户及登录用户时如果密码存在特殊字符需要注意特殊字符会被解析成其它字符,需加上单引号或加上转义字符\。

2.在 MySQL 5.7.33 与 MySQL 8.0.23 版本前使用 login-path 时密码存在"#"时,配置时输入密码需要加上双引号。

    推荐阅读
  • 宝宝虾仁馄饨馅的做法总结(家常宝宝虾仁馄饨馅的教程)

    以下内容希望对你有帮助!宝宝虾仁馄饨馅做好后,再选用较薄的馄饨皮,将馄饨馅包成馄饨,即可下锅烹煮。

  • 什么是在职研究生(在职研究生什么意思)

    什么是在职研究生在职研究生是国家计划内,以在职人员的身份,半脱产,部分时间在职工作,部分时间在校学习的研究生学历教育的一种类型。属于国民教育系列。2016年研究生招生制度改革,“在职研究生”将改称“非全日制研究生”。

  • 花生能减肥吗(吃花生能够减肥吗?)

    跟着小编一起来看一看吧!以下就是吃生花生有利于减肥的原因:花生的坚果类食品,富含脂肪不仅可以满足口腹之欲,还能控制体重是冬季减肥的好食品。经常吃花生和花生酱和食用优质的花生油膳食,不仅不会导致发胖还能达到帮助减肥的目的。花生酱等花生制品热量并不低但由于吃这些容易有饱腹感,会让减肥的人控制食欲。花生,花生油及相关的花生制品中还含有多种有益的纤维素,有清除肠内垃圾的作用。

  • 港式奶茶有哪种(追逐港式奶茶的每一分味道)

    加入10g锡兰红茶,中小火煮10分钟,期间搅拌3次。具体制作过程1、取800mL水,放奶锅中煮沸;2、称量10g锡兰红茶,加入沸腾的水中。但建议适当减少果糖的添加量。这是一杯喝完不会睡不着,也不会心跳加速的港式奶茶。

  • 加油向未来在哪个台(加油向未来她每回都搞这么大的阵仗)

    《加油!向未来》是央视推出的科学实验节目,该节目组除了上天入地的本领以外,也是个玩科学游戏的高手。《加油!向未来》栏目录制现场在第二季第三期节目中,“撒贝尼”在针管上荡秋千,险些让人误以为是游乐场。一开场,主持人小撒就说:每回都搞这么大的阵仗。难怪小撒要吃醋了。作为行业的引领者,鼎力高空作业平台安全、高效、耐用、节能,畅销全球,好评如潮,匠心品质使其成为央视首选的登高工具。

  • 英国王室家谱和王位继承顺序(英国王室家谱和王位继承顺序)

    2022年9月8日,英国女王伊丽莎白二世逝世,她的长子查尔斯王储继位成为英国国王。9月10日,英国国王查尔斯三世正式宣誓登基,而他的长子威廉王子则成为王位第一顺位继承人。戴安娜于1997年因交通事故离世。他与妻子梅根于2018年成婚,儿子阿奇和女儿莉莉贝特分别于2019年和2021年出生。尤金妮公主于2018年结婚,2022年她的儿子奥古斯特出生。他的出生对于英国王室来说,是创造历史的重大事件。

  • 福克斯变速器控制模块在哪?(福克斯变速箱控制模块在哪里)

    购买福克斯rs的人比去年同期更懂得体验职业赛车级的纯粹。造型设计方面,开口较大的福克斯rs前脸设计更具侵略性。新款福克斯rs配备了2.3升ecoboost涡轮增压直喷发动机。传动方面,福克斯rs匹配6速手动变速箱。在2.3lecoboost涡轮增压发动机强大的心脏驱动下,全新福克斯rs加速至100km/h仅需4.8秒,最高时速达到268km/h,福克斯rs拥有丰富的驾驶模式。根据正常和赛道驾驶特性,福克斯rs提供四种可选驾驶模式:正常、运动、赛道和漂移。

  • 有趣又神秘的史前生物(13个诡异的史前生物)

    蛇颈龙,7400万年前生活在加拿大的Bearpaw海一个手指的恐龙,怪异吗?现代的河马才是陆地上最凶猛的哺乳动物泥盆纪十七的Acanthostega,这个时期脊椎动物开始走向陆地,但是这个家伙有腿还是喜欢生活在水中,它的腿是用来当桨用的身披羽毛的费鸟类恐龙,是一个不会飞的speed-demon。这些史前怪兽是不是引起了你的兴趣,可见我们的未知还是太多。

  • 哪个少数民族戴大耳环(趣闻西班牙女人戴耳环的重要性)

    西班牙人在元旦之夜全家团聚,十二点时,以教堂钟声为号,争着吃葡萄。在与西班牙人交往时,要尊重他们的宗教信仰,不要打听别人的宗教信仰,最好地做法就是不讨论这个话题。西班牙人最忌讳"13"和"星期五",认为这些数字及日期都是很不吉利的,遇其会有厄运或灾难临头。西班牙人对宠物珍爱有加,当局为保护狗、猫制定了有关法律,无辜打死别人的宠物,要负责赔偿,甚至可能被拘留,看来西班牙的动物是惹不起了。

  • 用鸡蛋做的健康早餐(鸡蛋卷饼早餐怎么做)

    以下内容大家不妨参考一二希望能帮到您!用鸡蛋做的健康早餐鸡蛋卷饼:面粉半碗、鸡蛋2个、淀粉、白芝麻、油、盐4克。面粉、水、淀粉、盐、适量油混合,搅拌均匀;平底锅倒少许油,然倒入面糊,用勺子摊成面皮,将鸡蛋液覆盖在面皮上,借助勺子将蛋液铺均匀;撒葱花、芝麻和肉松,待蛋液即将凝固的时候将饼卷起,卷起后小火再煎一下,待蛋卷上色成金黄即可切块装盘。