无法使用 DATA DIRECTORY 子句创建外部数据库表

问题描述 投票:0回答:1

我想在标准数据目录之外的外部文件中创建数据库表。

以下作品:

create table eh_extern (c1 integer)  engine=innodb data directory = '/tmp'; 

我在主目录下创建了一个 test 子目录,并将其权限设置为 777,所有者设置为 mysql:mysql

目录权限为:

drwxrwxrwx 2 mysql mysql 4096 Nov 17 09:55 test 

以下方法不起作用:

create table eh_extern (c1 integer)  engine=innodb data directory = '/home/tx-team/test'; 
错误是:

Can't create table 
eh
.
eh_extern
(errno: 168 "Unknown (generic) error from engine")

系统日志中的错误如下:

`11 月 17 日 09:56:39 txteam-PD14RI mariadbd[1149]: 2023-11-17 9:56:39 75 [错误] InnoDB:文件操作中操作系统错误编号 13。

Nov 17 09:56:39 txteam-PD14RI mariadbd[1149]: 2023-11-17 9:56:39 75 [ERROR] InnoDB: 该错误表示 mariadbd 没有目录的访问权限。 `

我可以做什么来防止错误发生?

操作系统是:Linux 5.15.0-88-generic (Ubuntu),服务器是:10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

permissions mariadb external-tables
1个回答
0
投票

Systemd 启动的服务无权访问 /home 目录。

systemctl 编辑 mariadb.service 并添加

[Service]
ProtectHome=false

参考:KB systemd

© www.soinside.com 2019 - 2024. All rights reserved.