Ubuntu 管理心得

搜尋此網誌

2023年5月6日 星期六

Create class databases and users for dam

Create the following sql file, say, createdam.sql, then run
mysql -u chiao -o mysql < createdam.sql

      --  createdam.sql, ------------------------------------------------------

DROP PROCEDURE IF EXISTS createUserDatabases;
DELIMITER //

CREATE PROCEDURE createUserDatabases()
BEGIN
  -- Create the users and their databases, and grant privileges
  SET @users = 'Team112, Monkey, WhileTrue, clear, DIEGO';
  SET @passwords = 'AA090078, AA090107, AA091227, AA091233, AA091223';
  SET @privileges = 'SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER';

  SET @delimiter = ', ';
  SET @count = 1;
  SET @total_users = LENGTH(@users) - LENGTH(REPLACE(@users, @delimiter, '')) + 1;

  WHILE @count <= @total_users DO
    SET @current_user = SUBSTRING_INDEX(SUBSTRING_INDEX(@users, @delimiter, @count), @delimiter, -1);
    SET @current_password = SUBSTRING_INDEX(SUBSTRING_INDEX(@passwords, @delimiter, @count), @delimiter, -1);
    SET @current_database = CONCAT('dam1112_', @current_user);
    SET @current_privileges = SUBSTRING_INDEX(SUBSTRING_INDEX(@privileges, @delimiter, @count), @delimiter, -1);

    -- Create the user and set the password
    SET @create_user_sql = CONCAT('CREATE USER IF NOT EXISTS \'', @current_user, '\' IDENTIFIED BY \'', @current_password, '\'');
    PREPARE createUserStmt FROM @create_user_sql;
    EXECUTE createUserStmt;
    DEALLOCATE PREPARE createUserStmt;

    -- Create the database and grant privileges
    SET @create_db_sql = CONCAT('CREATE DATABASE IF NOT EXISTS \`', @current_database, '\`');
    PREPARE createDbStmt FROM @create_db_sql;
    EXECUTE createDbStmt;
    DEALLOCATE PREPARE createDbStmt;

    SET @grant_privileges_sql = CONCAT('GRANT ', @current_privileges, ' ON \`', @current_database, '\`.* TO \'', @current_user, '\'');
    PREPARE grantPrivilegesStmt FROM @grant_privileges_sql;
    EXECUTE grantPrivilegesStmt;
    DEALLOCATE PREPARE grantPrivilegesStmt;

    SET @delete_fuzzyahp_sql = CONCAT('DELETE FROM \`fuzzyahp\`.\`fahpdatabase\` WHERE \`fahpdatabase\`.\`user\` = \'',  @current_user, '\' AND \`fahpdatabase\`.\`database\` = \'', @current_database, '\'');
    PREPARE deleteStmt FROM @delete_fuzzyahp_sql;
    EXECUTE deleteStmt;
    DEALLOCATE PREPARE deleteStmt;

    SET @insert_fuzzyahp_sql = CONCAT('INSERT INTO \`fuzzyahp\`.\`fahpdatabase\` (\`user\`, \`database\`) VALUES (\'', @current_user, '\', \'', @current_database, '\')');
    PREPARE insertStmt FROM @insert_fuzzyahp_sql;
    EXECUTE insertStmt;
    DEALLOCATE PREPARE insertStmt;

    SET @count = @count + 1;
  END WHILE;
END //

DELIMITER ;

CALL createUserDatabases();

--  createdam.sql, ------------------------------------------------------

沒有留言:

張貼留言

網誌存檔