解決select ... into outfile '..' mysql寫檔案許可權問題
select * from test into outfile '/home/user/test.txt' 在linux(centos)下 ,啟動了mysql 並給使用者檔案讀寫的權利 grant file on *.* to [email protected]; 在linux系統上,目錄的許可權全部是 rwxrwxrwx chmod 777 ... /home/user/test drwxrwxrwx 4 root root 4096 Sep 3 18:42 home drwxrwxrwx 10 mapuser mapuser 4096 Sep 4 03:41 user drwxrwxrwx 5 mapuser mapuser 4096 Sep 3 17:57 test 在mysql下輸入 select * from test into outfile '/home/user/test.txt' 出現錯誤資訊: ERROR 1 (HY000): Can't create/write to file '/home/user/test.txt' (Errcode: 13) 當時如果是tmp目錄的話就不會有這個錯誤 select * from test into outfile '/tmp/test.txt' Query OK, 0 rows test(0.00 sec) 難道只能是tmp目錄嗎? 有什麼地方可以修改的嗎? 後來吧home的所有者改成了mysql drwxrwxrwx 5 mysql mysql 4096 Sep 4 10:08 home select * from test into outfile '/home/test.txt' ERROR 1 (HY000): Can't create/write to file '/home/test.txt' (Errcode: 13) 也是同樣出錯。 這個有什麼辦法可以寫入home目錄下面嗎?或者其他什麼目錄,只要不是tmp目錄,有人說先寫入tmp目錄,再cp到想要的 目錄,這樣做是可以,不過比較麻煩,檔案比較大,2-3G呢, 修改mysql的配置能實現嗎?還是修改檔案的許可權,這個是什麼問題呢? select * from test into outfile '/tmp/test.txt' Query OK, 0 rows test(0.00 sec) 看一下產生的這個檔案的owner 是誰。 [
[email protected] /]# ls -l drwxrwxrwx 4 root root 4096 9月 4 21:03 home drwxrwxrwt 10 root root 4096 9月 4 21:03 tmp [[email protected] /]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 27 Server version: 5.1.14-beta MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user from user; +--------+ | user | +--------+ | system | | root | +--------+ 2 rows in set (0.03 sec) mysql> select user from user into outfile '/home/test.txt'; Query OK, 2 rows affected (0.02 sec) [[email protected] home]# ls -l -rw-rw-rw- 1 mysql mysql 12 9月 4 21:12 test.txt [[email protected] home]# cat /home/test.txt system root select * from test into outfile '/home/test.txt' ERROR 1 (HY000): Can't create/write to file '/home/test.txt' (Errcode: 13) ------------------------ 從Errcode: 13來看是沒許可權 你執行上面語句時,是用什麼使用者執行的呢?檢查下這個使用者是否有許可權吧 估計和許可權沒關係,因為已經是777了。 看看是不是selinux打開了,如果沒什麼特別需要的話,關了為好。 非root使用者,在mysql下執行的select * from test into outfile '/home/user/test.txt' select * from test into outfile '/home/user/test.txt'該語句產生的檔案是 -rw-rw-rw- 1 mysql mysql 12 9月 4 21:12 test.txt mysql組的mysql使用者的。 貌似和許可權沒什麼關係,我用root使用者登陸系統,執行mysql的語句,其結果還是一樣,寫入/home目錄時 select * from test into outfile '/home/test.txt' ERROR 1 (HY000): Can't create/write to file '/home/test.txt' (Errcode: 13) 還是有這個問題。 selinux會阻止其他程式寫入操作?? 具體怎麼改變一下selinx的配置呢 我理清是什麼問題了。 在red hat系列的linux中selinux對哪些daemon可以進行怎麼樣的操作是有限制的,mysql的select into outfile的命令是mysql的daemon來負責寫檔案操作的。寫檔案之前當然要具有寫檔案的許可權。而selinux對這個許可權做了限制。如果 selinux是關閉的吧,這個命令執行是沒有問題的 mysql> select user from user into outfile '/home/test.txt'; Query OK, 2 rows affected (0.02 sec) 當時selinux開啟時 selinux對mysql的守護程序mysqld進行了限制。 mysql> select user from user into outfile '/home/test.txt'; ERROR 1 (HY000): Can't create/write to file '/home/test.txt' (Errcode: 13) 出現了沒有許可權寫的error。 解決方法,可以關閉selinux。 可以在/etc/selinux中找到config root使用者, shell>vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=enforcing 修改SELINUX=disabled關閉selinux就可以了,這個問題就可以解決了。 不過全部關閉SELINUX有帶來一些安全問題。 當然也可以,單獨給mysql的守護程序許可權, shell>getsebool -a可以檢視當前的對系統一系列守護程序的許可權情況。 lpd_disable_trans --> off mail_read_content --> off mailman_mail_disable_trans --> off mdadm_disable_trans --> off mozilla_read_content --> off mysqld_disable_trans --> off nagios_disable_trans --> off named_disable_trans --> off named_write_master_zones --> off nfs_export_all_ro --> on nfs_export_all_rw --> on nfsd_disable_trans --> off nmbd_disable_trans --> off nrpe_disable_trans --> off shell>setsebool -P mysqld_disable_trans=1 開啟對mysql守護程序的許可權,這樣 mysql> select user from user into outfile '/home/test.txt'; 寫入到自定義的目錄就沒有問題了。 -P表示 是永久性設定,否則重啟之後又恢復預設值。 getsebool setsebool命令在root使用者下有許可權。 除了對selinux的許可權,當然首先要保證該目錄擁有讀寫許可權。 在ubuntu下 ,可以對AppArmor(/etc/apparmor.d/usr.sbin.mysqld) 修改,類似selinux。 新增/etc/squid/lists/eighties.txt w,類似。
相關推薦
解決select ... into outfile '..' mysql寫檔案許可權問題
select * from test into outfile '/home/user/test.txt' 在linux(centos)下 ,啟動了mysql 並給使用者檔案讀寫的權利 grant file on *.* to [email protected]
解決:CentOS下MySQL執行select ... into outfile ...: Can't create/write to file '...' (Errcode: 13)
原因:selinux阻止寫入操作 解決:vi /etc/selinux/config # This file controls the state of SELinux on the system.
mysql select into outfile報無許可權,訪問被拒絕
再使用into outfile的時候,報了下面的錯誤 ERROR 1045 (28000) at line 1: Access denied for user ‘ait_read’@’xx.xx.xx
MySQL select into outfile用法
SELECT INTO…OUTFILE語句把表資料匯出到一個文字檔案中,並用LOAD DATA …INFILE語句恢復資料。但是這種方法只能匯出或匯入資料的內容,不包括表的結構,如果表的結構檔案損壞,則必須先恢復原來的表的結構。 一、SELECT INTO…OUTF
翻譯:select into outfile(已提交到MariaDB官方手冊)
系列 targe mil utf 網站 https mariadb bsp color 本文為mariadb官方手冊:SELECT INTO OUTFILE的譯文。 原文:https://mariadb.com/kb/en/select-into-outfile/ 我
select … into outfile 備份恢復(load data)以及mysqldump時間對比
IE sele 文本文 root 實現 default sin while con select … into outfile ‘path‘ 備份 此種方式恢復速度非常快,比insert的插入速度要快的多,他跟有備份功能豐富的mysqldump不同的是,他只能備份表中的數據
解決在 Win10沒有修改 hosts檔案許可權問題
當遇到有hosts檔案不能編輯或者修改了沒辦法儲存,以及需要許可權等問題: 1、win+R 2、進入hosts的檔案所在目錄,點選‘’檔案‘’按鈕 3、點選Windows PowerShell ,在點選以管理員身份開啟 4、彈出一個視窗,輸入
解決在Windows10沒有修改hosts檔案許可權
當遇到有hosts檔案不會編輯或者,修改了沒辦法儲存”,以及需要許可權等問題如圖: 我學了一招,先在交給你: 1、win+R 2、進入hosts的檔案所在目錄: 3、我們開始如何操作才能不出現許可權問題那? 3.1、點選‘’檔案‘’
Android的讀寫檔案許可權
/**測試沒通過 * 寫檔案 * @param str */ public void write(String str){ File file = new File(Environment.getExternalStorageDirectory()+"/
解決Mac下使用root 許可權依舊無法讀寫檔案的問題
當時在學習selenium的時候,需要配合使用chromedriver 和phantomjs 進行瀏覽器的自動化測試.. chromedriver下載結束後。無法移動到/user/bin下面 會提示許可權不夠,可明明是root,使用者,居然也許可權不夠??? 提示Operation not
MySQL不支援 SELECT INTO FROM 語句解決方法
今天備份mysql 資料表的時候,發現mysql 竟然不支援select * into bk from user,執行sql 一直報錯 ,錯誤程式碼:1327 Undeclared variable 備份表名,查詢資料才發現 原來mysql 不支援 select into
MySQL SELECT xxx INTO OUTFILE用法
重啟數據庫 rmi sta off -s int select value sid 1、導出數據報錯 mysql> SELECT * INTO OUTFILE ‘/tmp/t.txt‘ FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLO
sqlmap進行mysql注入root許可權讀寫檔案
1.在BT5 R2下[email protected]:/sqlmap# python sqlmap.py -u http://www.wepost.com.hk/article.php?id=276 -f -b --current-user --curren
mysql load_file()和 into outfile
mysql服務器 init 數據導出 code httpd sel .com 12px host 0x00 load_file() 條件: 1. 要有file_priv權限 2. 知道文件絕對路徑 3. 能使用union 4. 對web目錄有讀權限 註:若過濾
linux下操作mysql、nginx,vim操作,檔案許可權設定等
inux下操作mysql、nginx,vim操作,檔案許可權設定等 #在Linux系統下,預設所有系統配置檔案都在/etc這個路徑下的 #Linux環境下安裝mysql資料庫 ##1、切換到root許可權下,採用yum命令安裝 同時安裝mariadb的客戶端和服務端
Linux 檔案和目錄的讀寫執行許可權詳解
首先了解一個ls -l 檔案的每列含義 [[email protected] ~]# ls -l a -rw-r–rw- 1 test002 tester 279103 9月 2 13:21 a 下面介紹每列含義: (1)第一列:檔案型別和許可權,這部分稍後重
開啟MySQL遠端訪問許可權允許遠端連線(解決Host is not allowed to connect to this MySQL server問題)
登陸mysql資料庫 [[email protected] data]# mysql -uroot -p123456 檢視user表 mysql> select host,user,password from user;
Java讀寫檔案,中文亂碼解決
讀檔案:使用new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); StringBuffer strBuf = new StringBuffer(); BufferedRead
Mysql解決SELECT list is not in GROUP BY clause and contains nonaggregated column 問題
轉自:https://blog.csdn.net/u011676300/article/details/79564446 在使用GROUP BY對Mysql的資料表進行查詢時如果出現以下錯誤 select * from user group by age; ERROR 1055 (420
Linux系統下inode滿了導致無法寫檔案的解決思路
解決思路1:刪除無用的臨時檔案,釋放inode 進入/tmp目錄,執行find -exec命令 find /tmp -type f -exec rm {} \; 遍歷尋找0位元組的檔案,並