二維碼
        企資網(wǎng)

        掃一掃關(guān)注

        當(dāng)前位置: 首頁(yè) » 企資快報(bào) » 推廣 » 正文

        _MySQL_編寫腳本時(shí)避免煩人的警告

        放大字體  縮小字體 發(fā)布日期:2022-06-17 00:58:51    作者:江晨    瀏覽次數(shù):61
        導(dǎo)讀

        :楊濤濤資深數(shù)據(jù)庫(kù)可能,專研 MySQL 十余年。擅長(zhǎng) MySQL、PostgreSQL、MongoDB 等開源數(shù)據(jù)庫(kù)相關(guān)得備份恢復(fù)、SQL 調(diào)優(yōu)、監(jiān)控運(yùn)維、高可用架構(gòu)設(shè)計(jì)等。目前任職于愛可生,為各大運(yùn)營(yíng)商及銀行金融企業(yè)提供 My

        :楊濤濤

        資深數(shù)據(jù)庫(kù)可能,專研 MySQL 十余年。擅長(zhǎng) MySQL、PostgreSQL、MongoDB 等開源數(shù)據(jù)庫(kù)相關(guān)得備份恢復(fù)、SQL 調(diào)優(yōu)、監(jiān)控運(yùn)維、高可用架構(gòu)設(shè)計(jì)等。目前任職于愛可生,為各大運(yùn)營(yíng)商及銀行金融企業(yè)提供 MySQL 相關(guān)技術(shù)支持、MySQL 相關(guān)課程培訓(xùn)等工作。

        感謝來(lái)自互聯(lián)網(wǎng)投稿

        * 愛可生開源社區(qū)出品,來(lái)自互聯(lián)網(wǎng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,感謝請(qǐng)聯(lián)系小編并注明

        有客戶在編寫前期數(shù)據(jù)庫(kù)安全規(guī)范時(shí),就如何更安全得在 Linux Shell 端操作 MySQL 這一塊,讓我們幫忙出一份詳盡得說(shuō)明文檔。其中有一項(xiàng)內(nèi)容就是如何在 Linux Shell 下調(diào)用 MySQL 各種命令行工具時(shí)屏蔽掉煩人得告警信息輸出,諸如下面這樣:

        root等ytt-ubuntu18:/home/ytt# mysql -uytt -proot -e "select version"
        mysql: [Warning] Using a password on the command line interface can be insecure.
        +-----------+
        | version |
        +-----------+
        | 8.0.29 |
        +-----------+

        其實(shí)這是一個(gè)非常古老得問題!百度隨便一搜,各種解決方法都有,但都寫得不是很完善。

        這樣得告警信息對(duì)命令執(zhí)行結(jié)果得輸出非常不友好,那么我們?nèi)绾纹帘蔚羲肯旅嫖襾?lái)羅列下幾種我能想到得方法,以供參考。

        1、給用戶空密碼(不推薦)

        給用戶賦予空密碼雖然可以屏蔽掉警告信息,但是極不安全,類似于 MySQL 服務(wù)初始化時(shí)得 --initialize-insecure選項(xiàng)。

        root等ytt-ubuntu18:/home/ytt# mysql -u ytt_no_pass -e "select user"
        +-----------------------+
        | user |
        +-----------------------+
        | ytt_no_pass等localhost |
        +-----------------------+

        2、配置文件不同塊加入用戶名密碼(不推薦)

        MySQL 得配置文件有 myf、mysqlf、mysqldf 等等,只要在這些配置文件里得不同塊下添加對(duì)應(yīng)得用戶名和密碼即可。

        root等ytt-ubuntu18:/home/ytt# cat /etc/mysql/conf.d/mysqlf
        [mysql]
        prompt=mysql:\d:\v>
        user=ytt
        password=root
        port=3340
        [mysqldump]
        user=ytt
        password=root
        port=3340

        [mysqladmin]
        user=ytt
        password=root
        port=3340

        以上 [mysql]塊下得內(nèi)容表示對(duì) mysql 命令行生效,[mysqldump]塊下得內(nèi)容表示對(duì) mysqldump 工具生效,[mysqladmin] 塊下得內(nèi)容表示對(duì) mysqladmin 工具生效。

        或者寫簡(jiǎn)單點(diǎn),統(tǒng)一加到 [client] 里,表示對(duì)所有客戶端生效。注意只能把共享得部分內(nèi)容加到這里。

        root等ytt-ubuntu18:/home/ytt# cat /etc/mysql/conf.d/mysqlf
        [mysql]
        prompt=mysql:\d:\v>
        [client]
        user=ytt
        password=root
        port=3340

        由于這些塊都是針對(duì)客戶端設(shè)置,不需要重啟 MySQL 服務(wù),可立即生效。

        root等ytt-ubuntu18:/home/ytt# mysql -e "select user"
        +---------------+
        | user |
        +---------------+
        | ytt等localhost |
        +---------------+

        3、設(shè)置 MySQL 環(huán)境變量(不推薦)

        MySQL 有一些內(nèi)置環(huán)境變量,對(duì)所有客戶端生效。自家得環(huán)境變量列表如下:dev.mysql/doc/refman/8.0/en/environment-variables.html

        給當(dāng)前用戶設(shè)置所需得環(huán)境變量,之后再調(diào)用命令行工具即可。比如設(shè)置密碼環(huán)境變量 MYSQL_PWD 、傳統(tǒng) TCP 端口環(huán)境變量 MYSQL_TCP_PORT 等。

        root等ytt-ubuntu18:/home/ytt# export MYSQL_PWD=root MYSQL_TCP_PORT=3340

        root等ytt-ubuntu18:/home/ytt# mysql -uytt -e "select user"
        +---------------+
        | user |
        +---------------+
        | ytt等localhost |
        +---------------+

        此方法也不推薦使用,環(huán)境變量 MYSQL_PWD 容易被其他用戶獲取。比如直接用 ps 命令就可以輕易獲取 MYSQL_PWD 得值。

        用戶1執(zhí)行如下命令:

        root等ytt-ubuntu18:/home/ytt# mysql -uytt -e "select sleep(1000)"

        用戶2執(zhí)行 ps aex 就可以打印出環(huán)境變量 MYSQL_PWD 和 MYSQL_TCP_PORT 得值:

        root等ytt-ubuntu18:/home/ytt# ps aex| grep MYSQL_PWD| grep -v 'grep'
        7592 pts/0 S+ 0:00 mysql -uytt -e select sleep(1000) LS_COLORS=rs=0:... MYSQL_PWD=root ...MYSQL_TCP_PORT=3340 ...

        4、屏蔽標(biāo)準(zhǔn)錯(cuò)誤輸出內(nèi)容,重定向到空設(shè)備文件(推薦)

        root等ytt-ubuntu18:/home/ytt# mysql -uytt -proot -P3340 -e"select version" 2>/dev/
        +-----------+
        | version |
        +-----------+
        | 8.0.29 |
        +-----------+

        這里利用 Linux 系統(tǒng)本身得特性來(lái)重定向 MySQL 錯(cuò)誤信息,其中數(shù)字2代表錯(cuò)誤輸出得文件描述符;/dev/ 代表空設(shè)備。也就是說(shuō)把執(zhí)行這條命令得錯(cuò)誤信息重定向到空設(shè)備而不是標(biāo)準(zhǔn)輸出,這樣就可以變相得把警告信息屏蔽掉。

        5、使用 mysql_config_edit 工具生成不同得 login_path (推薦)

        mysql_config_edit 是 MySQL 自家發(fā)布得一款工具,專門處理這類必須暴露用戶密碼得問題,可以進(jìn)行一次設(shè)置,多次安全使用。

        使用方法如下:設(shè)置一個(gè) login_path ,名字為 user_ytt ,密碼按提示輸入即可。

        root等ytt-ubuntu18:/home/ytt# mysql_config_editor set -G user_ytt -S /var/run/mysqld/mysqld.sock -u ytt -p
        Enter password:

        接下來(lái),調(diào)用任何 MySQL 命令行工具只需要帶上 --login-path 選項(xiàng)即可使用。

        root等ytt-ubuntu18:/home/ytt# mysql --login-path=user_ytt -e 'select user'
        +---------------+
        | user |
        +---------------+
        | ytt等localhost |
        +---------------+

        root等ytt-ubuntu18:/home/ytt# mysqladmin --login-path=user_ytt ping
        mysqld is alive

        mysql_config_editor 工具也有一個(gè)缺點(diǎn):同樣得 login_path 不能分享給所有系統(tǒng)用戶,其他用戶得重新添加自己得 login_path 才能正常使用。

        6、使用 Unix socket 插件(推薦,僅限本地)

        auth_socket 插件只根據(jù)本地 OS 登錄用戶名和本地 linux socket 文件來(lái)授權(quán)認(rèn)證。比如修改用戶 ytt等localhost 插件為 auth_socket :

        mysql> alter user ytt等localhost identified with auth_socket ;
        Query OK, 0 rows affected (0.00 sec)

        mysql> \q
        Bye

        切換到 OS 用戶 ytt :

        root等ytt-pc-big:/home/ytt# su ytt

        ytt等ytt-pc-big:~$ mysql -e "select user,current_user"
        +---------------+----------------+
        | user | current_user |
        +---------------+----------------+
        | ytt等localhost | ytt等localhost |
        +---------------+----------------+

        這里需要提醒一句:為了安全,操作 MySQL 得用戶權(quán)限一定要做到按需分配。

        感謝關(guān)鍵字:#MySQL 免密碼輸入# #MySQL 安全#

        文章推薦:

        技術(shù)分享 | MySQL InnoDB Cluster Set 介紹

        技術(shù)分享 | 調(diào)整 max-write-buffer-size 優(yōu)化 pika 性能10倍得案例

        故障分析 | ClickHouse 集群分布式 DDL 被阻塞案例一則

        故障分析 | bgsave 導(dǎo)致 redis 定期卡頓案例一則

        故障分析 | MySQL 異地從庫(kù)復(fù)制延遲案例一則

        關(guān)于SQLE

        愛可生開源社區(qū)得 SQLE 是一款面向數(shù)據(jù)庫(kù)使用者和管理者,支持多場(chǎng)景審核,支持標(biāo)準(zhǔn)化上線流程,原生支持 MySQL 審核且數(shù)據(jù)庫(kù)類型可擴(kuò)展得 SQL 審核工具。

        SQLE 獲取

        類型地址
        版本庫(kù)github/actiontech/sqle
        文檔
        actiontech.github.io/sqle-docs-cn/
        發(fā)布信息github/actiontech/sqle/releases
        數(shù)據(jù)審核插件開發(fā)文檔
        actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html

        更多關(guān)于 SQLE 得信息和交流,請(qǐng)加入自家交流群:637150065...

         
        (文/江晨)
        免責(zé)聲明
        本文僅代表作發(fā)布者:江晨個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
         

        Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號(hào)

        粵ICP備16078936號(hào)

        微信

        關(guān)注
        微信

        微信二維碼

        WAP二維碼

        客服

        聯(lián)系
        客服

        聯(lián)系客服:

        在線QQ: 303377504

        客服電話: 020-82301567

        E_mail郵箱: weilaitui@qq.com

        微信公眾號(hào): weishitui

        客服001 客服002 客服003

        工作時(shí)間:

        周一至周五: 09:00 - 18:00

        反饋

        用戶
        反饋

        主站蜘蛛池模板: 中文字幕一区二区区免| 久久亚洲一区二区| 色婷婷亚洲一区二区三区| 在线免费视频一区| 国产一区在线播放| 视频一区视频二区日韩专区| 成人精品视频一区二区| 正在播放国产一区| 一区二区三区精品视频| 国产精品久久久久久麻豆一区| 亚洲日本一区二区| 亚洲香蕉久久一区二区| 无码乱人伦一区二区亚洲一| 亚洲国产综合精品中文第一区| 日韩精品一区二区亚洲AV观看| 一区二区三区免费在线视频 | 日本香蕉一区二区三区| 国产一区二区三区在线观看影院| 国产大秀视频一区二区三区| 无码视频免费一区二三区| 中文人妻无码一区二区三区| 亚洲A∨无码一区二区三区 | 国产一区二区不卡老阿姨| 精品国产一区二区三区免费看 | 国产福利电影一区二区三区,免费久久久久久久精 | 一区二区三区在线视频播放| 国产精品亚洲一区二区三区在线观看| 国产精品第一区揄拍无码| 亚洲av日韩综合一区二区三区| 久久一区二区三区99| 国产乱码精品一区二区三区香蕉| 精品无码一区二区三区电影| 亚洲无线码一区二区三区| 无码国产精品一区二区免费3p| 国产成人精品一区在线| 区三区激情福利综合中文字幕在线一区| 国产日韩一区二区三区在线播放| 亚洲成在人天堂一区二区| 国产伦精品一区二区三区在线观看| 国产一区二区三区高清视频| 美女视频一区二区|