Mysql into outfile导出的文件其他用户不可读
时间: 2023-12-05 08:06:16 浏览: 49
默认情况下,使用MySQL的`INTO OUTFILE`语句导出的文件权限设置为默认文件权限。这意味着,如果当前用户有写入该文件的权限,那么其他用户也将能够读取该文件。
如果你想让导出的文件仅限于当前用户可读,可以在`INTO OUTFILE`语句中指定文件的权限模式,例如:
```
SELECT *
INTO OUTFILE '/path/to/file'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
MODE 600; -- 设置文件权限为600
```
在上面的代码中,`MODE 600`指定了导出文件的权限模式为600,这意味着只有当前用户拥有读取和写入该文件的权限,其他用户无法读取该文件。
如果你想让其他用户也能读取该文件,但不希望其他用户修改该文件,可以将权限模式设置为`640`,这样当前用户和同组用户可以读取该文件,其他用户无法读取和修改该文件。
```
SELECT *
INTO OUTFILE '/path/to/file'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
MODE 640; -- 设置文件权限为640
```
相关问题
Mysql8.0中 into outfile导出的文件其他用户不可读
在 MySQL 8.0 中,`INTO OUTFILE` 导出的文件默认权限为 0600,即只有当前用户可以读写该文件,其他用户无法读取该文件。
如果需要让其他用户也能够读取该文件,可以使用以下方法:
1.修改文件权限:使用 `chmod` 命令修改文件权限为 0644 或更高权限,例如:
```
chmod 0644 /path/to/file
```
2.修改 umask 权限掩码:在当前用户的 shell 环境中执行以下命令,将 umask 权限掩码修改为 0022 或更小的值。
```
umask 0022
```
这样,在执行 `INTO OUTFILE` 导出文件时,默认权限就会为 0644 或更高权限,其他用户也能够读取该文件。
注意:如果需要将导出的文件放置在其他目录中,需要确保当前用户对该目录具有写入权限。
普通用户没有对mysql into outfile导出文件的权限
是的,普通用户默认情况下没有对 MySQL `INTO OUTFILE` 导出文件的权限,因为这个操作需要访问服务器文件系统,而这个权限通常只授予给具有管理员权限的用户。如果你想让普通用户也能够导出文件,可以按照以下步骤进行操作:
1. 修改 MySQL 配置文件
在 MySQL 配置文件中添加以下语句:
```
secure_file_priv = /path/to/export/dir
```
其中 `/path/to/export/dir` 是一个目录路径,用来指定允许导出文件的目录。这个目录应该具有足够的写入权限,以便 MySQL 用户可以在其中创建文件。
2. 创建 MySQL 用户
创建一个专门用于导出文件的 MySQL 用户,并授予该用户 `SELECT` 和 `FILE` 权限。例如:
```
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, FILE ON dbname.* TO 'exporter'@'localhost';
```
这个命令会创建一个名为 `exporter` 的 MySQL 用户,并授予该用户在 `dbname` 数据库中执行 `SELECT` 和 `FILE` 操作的权限。如果你想让该用户在所有数据库中都具有这些权限,可以将 `dbname.*` 改为 `*.*`。
3. 使用 MySQL 导出文件
现在,你可以切换到 `exporter` 用户,并使用 `INTO OUTFILE` 导出文件了。例如:
```
mysql -u exporter -p dbname -e "SELECT * FROM tablename" INTO OUTFILE '/path/to/export/dir/filename.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';
```
这个命令会将 `dbname` 数据库中的 `tablename` 表的数据导出到 `/path/to/export/dir/filename.csv` 文件中,使用逗号作为字段分隔符,双引号作为字段引用符,换行符作为行分隔符。
注意:在执行这个命令之前,请确保导出文件的目录已经存在,并且具有足够的写入权限。否则会导致导出文件失败。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)