วัน: 12 สิงหาคม 2023

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

ในการเชื่อมต่อ MySQL และ MariaDB ความแตกต่างหลักในการเชื่อมต่อ อ่านได้จาก เชื่อมต่อ 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 อะไรง่าย ๆ เลย

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