2011-05-10 28 views
0

我想通過php腳本備份mysql數據庫表中的sql文件。是否需要通過php腳本備份mysql表的所有權限

我正在使用下面的代碼。

mysql_query("SELECT * INTO OUTFILE 'backupfile.sql' FROM tablename"); 

它給了我以下錯誤:

Access denied for user 'username'@'localhost' (using password: YES) 

「用戶名」具有這些權限:

SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, LOCK TABLES, REFERENCES, CREATE ROUTINE, CREATE TEMPORARY TABLES 

我只是想知道有沒有執行select * into outfile所需的任何額外的許可,相同的爲LOAD DATA INFILE 'filename' INTO TABLE tablename

+0

不,連接到數據庫時沒有問題。即使我已經嘗試通過在同一腳本中運行具有相同數據庫和相同連接參數的另一個查詢,除了「SELECT * INTO OUTFILE」外,所有工作都正常 – 2011-05-10 06:08:53

+0

啊,夠公平的 - 當我嘗試做某件事情時,我想起了一個不同的錯誤在您的特權之外。 – 2011-05-10 06:13:31

回答

0

您需要FILE特權使用SELECT ... INTO OUTFILE,因爲該命令將在MySQL服務器主機上創建文件

我也認爲你的查詢是錯誤的。這應該是根據手冊正確的順序:

SELECT * FROM tablename INTO OUTFILE 'backupfile.sql'; 
+0

對於FILE特權有一個特殊的副作用,它應該被允許用於整個數據庫服務器**,但它不能只應用於一個數據庫。 – regilero 2011-05-10 06:38:27

+0

regilero,好點。 FILE權限只應賦予服務器管理員,因爲它可以訪問服務器上的寫入和讀取文件。 – 2011-05-10 06:40:09

+0

你說得對。我需要FILE權限。 但我使用的查詢是正確的。 Rgith syntex備份talbe如下所示: 「SELECT * INTO OUTFILE'backupFile.sql'FROM tableName」 – 2011-05-10 06:40:48