我想在标准数据目录之外的外部文件中创建数据库表。
以下作品:
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
Systemd 启动的服务无权访问 /home 目录。
systemctl 编辑 mariadb.service 并添加
[Service]
ProtectHome=false
参考:KB systemd