尝试在系统配置期间创建数据库。我附上了下面的configuration.nix 文件的内容。运行 sudo nixos-rebuild switch 命令后,mariadb 服务将启动,数据库和具有给定密码的用户将被创建。但是,尽管我希望将 main.sql 文件的内容写入数据库,但数据库是空的。
配置.nix
let
statsConfig = {
db = "test1";
user = "stats";
password = "1";
};
in
{
services.mysql = {
package = pkgs.mariadb;
enable = true;
ensureDatabases = [
statsConfig.db
];
replication.role = "master";
replication.slaveHost = "127.0.0.1";
replication.masterUser = "${statsConfig.user}";
replication.masterPassword = "${statsConfig.password}";
initialDatabases = [{ name = "${statsConfig.db}"; schema = ./main.sql; }];
initialScript = ./main.sql;
ensureUsers = [
{
name = "${statsConfig.user}";
ensurePermissions = {
"${statsConfig.db}.*" = "ALL PRIVILEGES";
};
}
];
};
systemd.services.setdbpass = {
description = "MySQL database password setup";
wants = [ "mariadb.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.mariadb}/bin/mysql -e "grant all privileges on ${statsConfig.db}.* to ${statsConfig.user}@localhost identified by '${statsConfig.password}';" ${statsConfig.db}
'';
User = "root";
PermissionsStartOnly = true;
RemainAfterExit = true;
};
};
}
主.sql
create table tests
( Id INTEGER NOT NULL,
Name VARCHAR(255) NOT NULL,
primary key(Id)
);
insert into tests values (1, 'a');
最佳答案
您的 main.sql 没有被复制到/nix/store ,因此它将无法找到它。
和
有如何使用它的示例。
关于mariadb - NixOS 创建数据库(mysql、mariadb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75463299/