程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 【MySQL實踐經驗】LOAD DATA INFILE報錯ERROR 1148 (42000)或ERROR 1045 (

【MySQL實踐經驗】LOAD DATA INFILE報錯ERROR 1148 (42000)或ERROR 1045 (

編輯:MySQL綜合教程

【MySQL實踐經驗】LOAD DATA INFILE報錯ERROR 1148 (42000)或ERROR 1045 (28000)的解決辦法     在部署在不同機器上的mysql數據庫之間導數據時,load data infile是一個很高效的命令,從host1的db1.table1通過select ... into outfile將數據導入文本文件,然後通過load data infile將數據導入host2的db2.table1。           使用過程中碰到一些典型問題及並最終找到解決方法。作為筆記,記錄與此。   1. root用戶(這裡只mysql的root,非Linux系統的root)在mysql server部署機器通過load data infile命令導入數據時,只要文件路徑指定正確,一般不會有問題   2. 非root用戶在mysql server部署機器通過load data infile命令導入數據時,報錯:        ERROR 1045 (28000): Access denied for user 'xxx'@'xxx' (using password: YES)        可能原因:這個一般是因為非root用戶沒有FILE Privilege,可以通過show grants查看當前登陸用戶的權限,也可以通過select mysql.user查看某用戶的權限,一般情況下,normal user是無FILE權限的      解決辦法:    1)命令加local參數,用load data local infile 'filename' into table xxx.xxx來導數據(推薦使用)    2)給normal user開通FILE Privilege,注意:FILE權限與SELECE/DELETE/UPDATE等不同,後者是可以具體指定到某個db的某個表的,而FILE則是全局的,即只能通過grant FILE on *.* to 'xxx'@'xxx'才能使FILE權限對所有db的所有tables生效。通過grant all on db.* to 'xxx'@'xxx'不能使指定的user在指定的db上具有FILE權限        根據最小權限原則(操作系統安全的概念),這個方法並不安全       3)修改.my.cnf中的配置,具體方法見官網  http://www.markhneedham.com/blog/2011/01/18/mysql-the-used-command-is-not-allowed-with-this-mysql-version/   3. 非root用戶從client機器load data local infile至remote mysql server時,報錯:        ERROR 1148 (42000): The used command is not allowed with this MySQL version        可能原因(from mysql reference manual):    If LOAD DATA LOCALis disabled, either in the server or the client, a client that attempts to issue such a statement receives the fol-lowing error message:      ERROR 1148: The used command is not allowed with this MySQL version      可見,出於安全考慮,默認是不允許從client host遠程通過load data命令導數據的      解決辦法:      For the mysql command-line client, enable LOAD DATA LOCAL by specifying the --local-infile[=1]option, or disable it with the --local-infile=0 option     也即,在需要從client host導數據的情況下,登陸mysql時,需用--local-infile[=1]顯式指定參數,典型命令形式為:         mysql --local-infile -u user -ppasswd     登陸成功後,執行load data infile 'filename' into table xxx.xxx即可

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved