MySQL需要具備哪些權限才能完成數據傳輸?
在使用DTS執行MySQL的數據傳輸時,需要區分是遷移還是同步任務,MySQL是源庫還是目標庫,根據不同的情況,來準備相關的權限。
- 數據遷移
數據庫 所需權限 參考賦權語句 源庫 源庫為MySQL5.7時:
對MySQL庫的SELECT權限。
對待遷移庫的SELECT,EVENT,TRIGGER權限。
?部分全局權限:
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
PROCESS
如果是整實例遷移,需要對所有數據庫的查詢權限。
源庫為MySQL8.0時:
對MySQL庫的SELECT權限。
對待遷移庫的SELECT,?EXECUTE,?EVENT,TRIGGER權限。
?部分全局權限:
PROCESS
LOCK TABLES
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
SHOW_ROUTINE
如果是整實例遷移,需要對所有數據庫的查詢權限。
源庫為MySQL5.7時: GRANT SELECT ON mysql.* TO '遷移賬號'@'%';
GRANT SELECT, EVENT,TRIGGER ON 待遷移的庫.* TO '遷移賬號'@'%';
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON *.* TO? '遷移賬號'@'%';
源庫為MySQL8.0時:
GRANT?SELECT?ON mysql.*?TO?'遷移賬號'@'%';
GRANT?SELECT,?EXECUTE,?EVENT,?TRIGGER?ON?待遷移的庫.*?TO?'遷移賬號'@'%';
GRANT PROCESS, REPLICATION?SLAVE,?REPLICATION?CLIENT,?SHOW?VIEW,?SHOW_ROUTINE?ON?*.*?TO?'遷移賬號'@'%';
目標庫
以下全局權限:
ALTER
ALTER ROUTINE
CREATE
CREATE ROUTINE
CREATE TEMPORARY TABLES
CREATE USER
CREATE VIEW
DELETE
DROP
EVENT
EXECUTE
INDEX
INSERT
PROCESS
REFERENCES
SELECT
SHOW DATABASES
SHOW VIEW
TRIGGER
UPDATEGRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE ON *.* TO '遷移賬號'@'%';
- 數據同步
數據庫 所需權限 參考賦權語句 源庫 源庫為MySQL5.7時:
對MySQL庫的SELECT權限。
對待同步庫的SELECT,EVENT,TRIGGER權限。
?部分全局權限:
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
PROCESS
如果是整庫同步,需要對所有數據庫的查詢權限。
源庫為MySQL8.0時:
對MySQL庫的SELECT權限。
對待同步庫的SELECT,?EXECUTE,?EVENT,TRIGGER權限。
?部分全局權限:
PROCESS
REPLICATION CLIENT
REPLICATION SLAVE
SHOW VIEW
SHOW_ROUTINE
如果是整庫同步,需要對所有數據庫的查詢權限。
源庫為MySQL5.7時: GRANT SELECT ON mysql.* TO '同步賬號'@'%';
GRANT SELECT , EVENT,TRIGGER ON 待同步的庫.* TO '同步賬號'@'%';
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, PROCESS ON *.* TO '同步賬號'@'%';
源庫為MySQL8.0時:
GRANT?SELECT?ON mysql.*?TO?'同步賬號'@'%';
GRANT?SELECT,?EXECUTE,?EVENT,?TRIGGER?ON?待同步的庫.*?TO?'同步賬號'@'%';
GRANT PROCESS, REPLICATION?SLAVE,?REPLICATION?CLIENT,?SHOW?VIEW,?SHOW_ROUTINE?ON *.* TO '同步賬號'@'%';
目標庫
以下全局權限:
ALTER
ALTER ROUTINE
CREATE
CREATE ROUTINE
CREATE TEMPORARY TABLES
CREATE USER
CREATE VIEW
DELETEDROP
EVENTEXECUTE
INDEX
INSERTPROCESS
REFERENCESSELECT
SHOW DATABASES
SHOW VIEW
TRIGGER
UPDATE
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE ON *.* TO '同步賬號'@'%';
注意如果待遷移/同步對象包含用戶自定義function,則在滿足上述權限的基礎上,目標端數據庫同時需將log_bin_trust_function_creators設置為1,參考語句如下:
set?global?log_bin_trust_function_creators?=?1;
定時任務是否需要特定權限的用戶才可以執行?
天翼云DTS支持配置遷移/同步任務時,按需開啟定時任務,用戶可以配置在特定的時間節點啟動任務。定時任務的開啟/關閉,和當前登錄賬號權限無關。也即所有天翼云官網門戶經過實名認證的個人/企業賬號均可以在配置DTS任務時按需開啟定時功能。
DTS任務運行過程中為什么提示賬號權限不足?
DTS要正常完成數據遷移/同步,需要遷移/同步賬號具備一定的權限。一旦賬號權限不足,就可能導致數據傳輸失敗。為確保數據傳輸正常進行,請給待遷移/同步賬號賦予特定的權限,具體可參照:
將MySQL遷移到MySQL的【數據庫賬號及權限】部分內容。
將PostgreSQL遷移到PostgreSQL的【數據庫賬號及權限】部分內容。
將DDS/MongoDB副本集遷移到DDS/MongoDB副本集的【數據庫賬號及權限】部分內容。
將DDS/MongoDB分片集群遷移到DDS/MongoDB分片集群的【數據庫賬號及權限】部分內容。
將DDS/MongoDB副本集遷移到DDS/MongoDB分片集群的【數據庫賬號及權限】部分內容。
將SQL Server遷移到SQL Server的【數據庫賬號及權限】部分內容。
將MySQL同步到MySQL的【數據庫賬號及權限】部分內容。
MySQL實例間的雙向同步的【數據庫賬號及權限】部分內容。
將PostgreSQL同步到PosgreSQL的【數據庫賬號及權限】部分內容。
PostgreSQL實例間的雙向同步的【數據庫賬號及權限】部分內容。
將SQL Server同步到SQL Server的【數據庫賬號及權限】部分內容。