欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

背景:

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

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

問題

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

答:不能。

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

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

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

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

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

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

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

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

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

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

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

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

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

添加用戶權限時如果用戶權限不存在才添加;

刪除用戶權限時如果用戶權限存在則刪除;

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

數(shù)據(jù)連接相關信息存儲在一個配置文件中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

# 檢查白名單用戶權限是否存在
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
	# 如果用戶權限不存在,則添加權限
	$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@%用戶權限是否存在
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
	# 如果用戶權限存在,則刪除權限
	$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

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

相關文章

  • 清理MySQL Binlog二進制日志的三種方式

    清理MySQL Binlog二進制日志的三種方式

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

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

    這篇文章主要給大家介紹了關于MySQL中參數(shù)sql_safe_updates在生產(chǎn)環(huán)境使用的相關資料,并給大家分享了解決mysql sql_safe_updates不支持子查詢更新的方法,分享出來供大家參考學習,需要的朋友們下面來一起看看吧。
    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及服務無法啟動的快速解決辦法(問題小結)

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

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

    mysql sql99語法 內連接非等值連接詳解

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

    mysql字符串格式化方式

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

    詳解MySQL InnoDB的索引擴展

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

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

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

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

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

    MySQL Workbench基本用法超詳細教程

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

最新評論