亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Shell腳本進(jìn)行MySql權(quán)限修改的實現(xiàn)教程

 更新時間:2024年03月26日 11:47:34   作者:彩虹海。  
原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過腳本實現(xiàn)白名單列表中的ip添加權(quán)限允許訪問數(shù)據(jù)庫,本文給大家介紹了使用Shell腳本進(jìn)行MySql權(quán)限修改的實現(xiàn)教程,需要的朋友可以參考下

背景:

原先數(shù)據(jù)配置文件中有bind-address=127.0.0.1,注釋掉此配置后,原數(shù)據(jù)庫中默認(rèn)帶%root的權(quán)限,現(xiàn)在需要通過腳本實現(xiàn)白名單列表中的ip添加權(quán)限允許訪問數(shù)據(jù)庫,白名單之外的ip沒有權(quán)限訪問數(shù)據(jù)庫。

以下是過程中記錄的一些問題。

問題

1、能否直接通過將%@root替換成白名單中ip@root權(quán)限?

答:不能。

在 MySQL 中,無法將 %@root 直接更新為 whitelisted_ip@root 的權(quán)限。權(quán)限授予是基于用戶和主機(jī)的,而不是根據(jù)特定的用戶和權(quán)限項。這意味著不能直接更改權(quán)限項的主機(jī)部分。
相反,應(yīng)該創(chuàng)建一個新的用戶,并僅授予該用戶特定主機(jī)的訪問權(quán)限。然后,撤銷原始的 %@root 用戶的權(quán)限,以確保只有指定白名單中的 IP 地址能夠訪問數(shù)據(jù)庫。

因此,在 MySQL 中創(chuàng)建新用戶并設(shè)置僅限白名單 IP 地址訪問數(shù)據(jù)庫,然后刪除默認(rèn)的 %root 用戶權(quán)限,是最安全和推薦的做法。

2、WITH GRANT OPTION 參數(shù)使用

WITH GRANT OPTION 是 MySQL 權(quán)限系統(tǒng)中的一種選項,它允許授予的用戶將他們擁有的權(quán)限授予其他用戶,即委派權(quán)限。具體而言,當(dāng)你向用戶授予權(quán)限時,可以選擇是否包括 WITH GRANT OPTION,其含義如下:

授予權(quán)限:授予權(quán)限意味著該用戶可以執(zhí)行被授予的操作(例如 SELECT、INSERT、UPDATE 等)。
WITH GRANT OPTION:如果同時指定了 WITH GRANT OPTION,則被授予權(quán)限的用戶除了可以執(zhí)行這些操作外,還可以將相同的權(quán)限授予其他用戶,即委派權(quán)限。

換句話說,具有 WITH GRANT OPTION 權(quán)限的用戶可以再次使用 GRANT 命令將他們擁有的權(quán)限授予給其他用戶,而不需要直接訪問權(quán)限的所有者。這樣的設(shè)置可以在需要委派權(quán)限給其他用戶時非常有用。但同時也要注意,授予 WITH GRANT OPTION 權(quán)限可能增加安全風(fēng)險,因為權(quán)限可能會被濫用或誤用。

因此,在為用戶分配權(quán)限時,應(yīng)謹(jǐn)慎考慮是否使用 WITH GRANT OPTION,并確保了解委派權(quán)限可能帶來的安全影響。

3、執(zhí)行 REVOKE ALL PRIVILEGES ON . FROM ‘root’@‘%’;后,為什么查詢user表依然包含此用戶信息?

當(dāng)使用 REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%'; 命令來撤銷 root@% 用戶的所有權(quán)限時,這只是取消了該用戶對數(shù)據(jù)庫的訪問權(quán)限,并沒有刪除該用戶的賬戶信息。因此,即使撤銷了 root@% 的權(quán)限,仍然可以在 mysql.user 表中查詢到該用戶的記錄。

要完全刪除 root@% 用戶的賬戶信息,可以使用以下步驟:

-- 使用 REVOKE 命令撤銷 root@% 用戶的所有權(quán)限:
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
FLUSH PRIVILEGES;
--- 刪除 root@% 用戶的賬戶:
DROP USER 'root'@'%';

通過上述步驟,可以撤銷 root@% 用戶的所有權(quán)限,并從 mysql.user 表中刪除該用戶的賬戶信息。
請注意,刪除 root@% 用戶可能會影響到數(shù)據(jù)庫的管理和維護(hù),因此在執(zhí)行此操作之前,請確保有其他具備管理員權(quán)限的用戶賬戶。

4、部分細(xì)節(jié)參考

添加用戶權(quán)限時如果用戶權(quán)限不存在才添加;

刪除用戶權(quán)限時如果用戶權(quán)限存在則刪除;

不做添加刪除判斷,可能會執(zhí)行報錯。

數(shù)據(jù)連接相關(guān)信息存儲在一個配置文件中test_config.sh;

test_config.sh文件參考

#!/bin/bash

export DBCMD=/usr/local/Test/database/bin/mysql
export DBUSER=root
export DBPWD=123456
export DBHOST=127.0.0.1
export DBPORT=3306
export WHITEIP=192.168.22.1

test_permission.sh文件參考

#!/bin/bash
pushd `dirname $0` >/dev/null 2>&1

. test_config.sh

# 檢查白名單用戶權(quán)限是否存在
existing_user=`$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -Ns -e "SELECT user FROM mysql.user WHERE user='root' AND host='${WHITEIP}'"`
if [ -z "$existing_user" ]; then
	# 如果用戶權(quán)限不存在,則添加權(quán)限
	$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -e "create user 'root'@'${WHITEIP}' identified by '123456';grant all privileges on *.* to 'root'@'${WHITEIP}' identified by '123456' with GRANT OPTION;flush privileges;"
	# 記錄時間、輸出到日志文件
	echo `date "+%F %T"` "${WHITEIP} grant all privileges" >> ../test.log
else
	echo `date "+%F %T"` "${WHITEIP} is exist, no need to add" >> ../test.log
fi

# 檢查root@%用戶權(quán)限是否存在
existing_user=`$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h $DBHOST -Ns -e "SELECT user FROM mysql.user WHERE user='root' AND host='%'"`
if [ -z "$existing_user" ]; then
	echo `date "+%F %T"` "root@% is not exist, no need to del" >> ../test.log
else
	# 如果用戶權(quán)限存在,則刪除權(quán)限
	$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -e "REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'root'@'%';DROP USER 'root'@'%';flush privileges;"
	echo `date "+%F %T"` "root@% rmvoke all privileges" >> ../test.log
fi

popd >/dev/null 2>&1

到此這篇關(guān)于使用Shell腳本進(jìn)行MySql權(quán)限修改的實現(xiàn)教程的文章就介紹到這了,更多相關(guān)Shell腳本修改MySql權(quán)限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 清理MySQL Binlog二進(jìn)制日志的三種方式

    清理MySQL Binlog二進(jìn)制日志的三種方式

    Binlog日志非常重要,但是占用的磁盤空間也很大,我們也需要定期的去清理二進(jìn)制日志,在MySQL數(shù)據(jù)庫中,提供了自動清理Binlog日志的參數(shù),本文給大家介紹了清理MySQL Binlog二進(jìn)制日志的三種方式,文中通過代碼講解非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境的使用詳解

    MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境的使用詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境使用的相關(guān)資料,并給大家分享了解決mysql sql_safe_updates不支持子查詢更新的方法,分享出來供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-11-11
  • 淺談MySQL在cmd和python下的常用操作

    淺談MySQL在cmd和python下的常用操作

    下面小編就為大家?guī)硪黄獪\談MySQL在cmd和python下的常用操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Windows 64 位 mysql 5.7以上版本包解壓中沒有data目錄和my-default.ini及服務(wù)無法啟動的快速解決辦法(問題小結(jié))

    Windows 64 位 mysql 5.7以上版本包解壓中沒有data目錄和my-default.ini及服務(wù)無法啟動

    這篇文章主要介紹了Windows 64 位 mysql 5.7以上版本包解壓中沒有data目錄和my-default.ini及服務(wù)無法啟動的快速解決辦法(問題小結(jié)),需要的朋友可以參考下
    2018-03-03
  • mysql sql99語法 內(nèi)連接非等值連接詳解

    mysql sql99語法 內(nèi)連接非等值連接詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于mysql sql99語法 內(nèi)連接非等值連接的相關(guān)知識點文章,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • mysql字符串格式化方式

    mysql字符串格式化方式

    這篇文章主要介紹了mysql字符串格式化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解MySQL InnoDB的索引擴(kuò)展

    詳解MySQL InnoDB的索引擴(kuò)展

    這篇文章主要介紹了MySQL InnoDB的索引擴(kuò)展的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • 一步步教你MySQL密碼忘記了該如何操作

    一步步教你MySQL密碼忘記了該如何操作

    最近要用到本地的MySQL,結(jié)果把密碼忘記了,下面這篇文章主要給大家介紹了關(guān)于MySQL密碼忘記了該如何操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • mysql存儲過程實現(xiàn)split示例

    mysql存儲過程實現(xiàn)split示例

    這篇文章主要介紹了mysql存儲過程實現(xiàn)split示例,需要的朋友可以參考下
    2014-05-05
  • MySQL Workbench基本用法超詳細(xì)教程

    MySQL Workbench基本用法超詳細(xì)教程

    本文詳細(xì)講解了MySQL Workbench基本用法,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評論