mariadb - NixOS 创建数据库(mysql、mariadb)

标签 mariadb nix nixos

尝试在系统配置期间创建数据库。我附上了下面的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');

最佳答案

关于mariadb - NixOS 创建数据库(mysql、mariadb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75463299/

相关文章:

java - 如何从 mysql-connector 切换到 mariadb?

nix - 如何获取更新的 Nixpkgs stdenv 版本来为 'libav' 设置 NIX_CFLAGS/NIX_LDFLAGS?

mysql - 相似字符的唯一约束违规

java - 串联sql语句插入

mysql - 对于 django 测试,我如何将 keepdb 与 mariadb 一起使用

alias - 如何在 nixos 中设置别名?

Haskell Stack 不在 Nixos 上构建 postgresql-libpq

Nix:如何使用覆盖全局覆盖 stdenv.cc?

haskell - 如何缓存 Haskell 依赖项以加快编译时间?

c++ - Nix Gradle dist - 无法为 Linux amd64 加载 native 库 'libnative-platform.so'