ป้ายกำกับ: Permissions

MySQL, MariaDB สร้าง user, สิทธิ์, DatabaseMySQL, MariaDB สร้าง user, สิทธิ์, Database

ในการเชื่อมต่อ MySQL และ MariaDB ความแตกต่างหลักในการเชื่อมต่อ ( Connection Type ) อ่านได้จาก เชื่อมต่อ MySQL, MariaDB สิทธิ์ วิธีไหนดี ที่นี้จะทำ script ที่ไว้สำหรับสร้าง user, สิทธิ์, Database
create_database_user_permission.sql

-- =============================================================================
-- MariaDB/MySQL Setup Script (Simplified for GUI Clients)
-- =============================================================================

-- 1. CONFIGURATION
SET @MODE = 'BOTH';
SET @DB_NAME = 'prototypes-laravel-Spatie';
SET @DB_USER = 'QQbPM5nzBuXQ';
SET @DB_PASS = 'ggzhUNbNTkcX';

-- -----------------------------------------------------------------------------
-- 2. Create Database
-- -----------------------------------------------------------------------------
SELECT CONCAT('CREATE DATABASE IF NOT EXISTS `', @DB_NAME, '` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci') INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- -----------------------------------------------------------------------------
-- 3. Create Users & Grants
-- -----------------------------------------------------------------------------

-- Create for LOCALHOST (Socket)
SET @sql_u = IF(@MODE IN ('BOTH', 'SOCKET'), 
 CONCAT('CREATE USER IF NOT EXISTS \'', @DB_USER, '\'@\'localhost\' IDENTIFIED BY \'', @DB_PASS, '\''), 
 'DO 0');
PREPARE stmt FROM @sql_u; EXECUTE stmt; DEALLOCATE PREPARE stmt;

SET @sql_g = IF(@MODE IN ('BOTH', 'SOCKET'), 
 CONCAT('GRANT ALL PRIVILEGES ON `', @DB_NAME, '`.* TO \'', @DB_USER, '\'@\'localhost\''), 
 'DO 0');
PREPARE stmt FROM @sql_g; EXECUTE stmt; DEALLOCATE PREPARE stmt;

-- Create for REMOTE/NETWORK (%)
SET @sql_u = IF(@MODE IN ('BOTH', 'TCP'), 
 CONCAT('CREATE USER IF NOT EXISTS \'', @DB_USER, '\'@\'%\' IDENTIFIED BY \'', @DB_PASS, '\''), 
 'DO 0');
PREPARE stmt FROM @sql_u; EXECUTE stmt; DEALLOCATE PREPARE stmt;

SET @sql_g = IF(@MODE IN ('BOTH', 'TCP'), 
 CONCAT('GRANT ALL PRIVILEGES ON `', @DB_NAME, '`.* TO \'', @DB_USER, '\'@\'%\''), 
 'DO 0');
PREPARE stmt FROM @sql_g; EXECUTE stmt; DEALLOCATE PREPARE stmt;

FLUSH PRIVILEGES;

-- -----------------------------------------------------------------------------
-- 4. Verification
-- -----------------------------------------------------------------------------
SELECT @MODE AS 'Mode', @DB_NAME AS 'DB', @DB_USER AS 'User';
SELECT User, Host FROM mysql.user WHERE User = @DB_USER;

การใช้งานแค่เปลี่ยน ตัวแปร

  • SET @MODE = ‘BOTH’; ว่าจะให้ connect อย่างไร ถ้าใช้จริง ๆ บน linux อย่างลืมตั้งเป็น ‘SOCKET’
  • SET @DB_NAME = ‘prototypes-laravel-Dev’; ชื่อ
  • SET @DB_USER = ‘QQbPM5nzBuXQ’; user name เราไม่ได้ใช้บ่อย ๆ สุ่มเถอะ
  • SET @DB_PASS = ‘ggzhUNbNTkcX’; password เราไม่ได้ใช้บ่อย ๆ สุ่มเถอะ อย่าง 1234 อะไรง่าย ๆ เลย

อ่านเพิ่มเติม