sunders/utils/create_db.php

76 lines
1.9 KiB
PHP

<?php
// Admin credentials (must have privileges to create DB/users)
$dbHost = getenv('MYSQL_HOST');
$dbAdmin = getenv('MYSQL_USER');
$dbPassword = getenv('MYSQL_PASSWORD');
$dbName = getenv('MYSQL_DB');
// Variables for new users
$cameraUser = getenv('CAMERA_USER');
$cameraPassword = getenv('CAMERA_USER_PASSWORD');
$camSelectUser = getenv('CAMERA_SELECT_USER');
$camSelectPassword = getenv('CAMERA_SELECT_USER_PASSWORD');
// Connect to MySQL
$conn = new mysqli($dbHost, $dbAdmin, $dbPassword);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (!$conn->query("CREATE DATABASE IF NOT EXISTS $dbName")) {
echo "Error creating database: " . $conn->error . "\n";
}
if (!$conn->select_db($dbName)) {
die("Error selecting database: " . $conn->error);
}
// Create camera user
$conn->query("CREATE USER IF NOT EXISTS '$cameraUser'@'%' IDENTIFIED BY '$cameraPassword'");
$conn->query("GRANT ALL PRIVILEGES ON $dbName.* TO '$cameraUser'@'%'");
// Create camselect user
$conn->query("CREATE USER IF NOT EXISTS '$camSelectUser'@'%' IDENTIFIED BY '$camSelectPassword'");
$conn->query("GRANT SELECT ON $dbName.* TO '$camSelectUser'@'%'");
// position table
$conn->query("
CREATE TABLE IF NOT EXISTS position (
id BIGINT PRIMARY KEY,
latitude INT,
longitude INT
)
");
// tag table
$conn->query("
CREATE TABLE IF NOT EXISTS tag (
id BIGINT,
k VARCHAR(100),
v VARCHAR(10000),
PRIMARY KEY (id, k),
CONSTRAINT fk_position FOREIGN KEY (id) REFERENCES `position`(id) ON DELETE CASCADE
)
");
$conn->query("CREATE INDEX IF NOT EXISTS LatLon ON position (latitude, longitude)");
// sync_state table
$conn->query("
CREATE TABLE IF NOT EXISTS sync_state (
k VARCHAR(100),
v VARCHAR(100)
)
");
$conn->query("INSERT INTO sync_state (k, v) VALUES ('sequenceNumber', '0');");
echo "Database, users, and tables created successfully.\n";
$conn->close();
?>