FiveM MySQL Host Is Not Allowed to Connect Error 1130 แก้อย่างไร? ตรวจ User@Host, Remote Access, bind-address และ Firewall ให้ถูกจุด
ปัญหา FiveM MySQL/MariaDB ขึ้น Host is not allowed to connect to this MariaDB server หรือ Error 1130 หมายความว่า MariaDB ไม่พบ Account ที่อนุญาตให้ Host ต้นทางนั้นเชื่อมต่อเข้ามา โดย MariaDB กำหนด Error 1130, SQLSTATE HY000 เป็น ER_HOST_NOT_PRIVILEGED.
ตัวอย่าง:
ERROR 1130 (HY000):Host '203.0.113.10' is not allowed to connect to this MariaDB server
สำหรับ FiveM ปัญหานี้พบได้มากเมื่อ:
- FiveM Server กับ MariaDB อยู่คนละเครื่อง
- ย้าย FiveM ไป VPS ใหม่
- IP ของ FiveM เปลี่ยน
-
Database User มีเฉพาะ
'user'@'localhost' - สร้าง User ถูกชื่อแต่ Host ไม่ตรง
- Remote Database Configuration ไม่ครบ
- Firewall ยังไม่อนุญาต FiveM Host
-
bind-addressไม่รองรับ Remote Connection - Production/Test Server ใช้ Credentials สลับกัน
- Database Account ถูกสร้างใหม่ไม่ตรงกับ Source Host
MariaDB กำหนด Account เป็นรูปแบบ 'username'@'hostname' ดังนั้น 'fivem'@'localhost' กับ 'fivem'@'203.0.113.10' ถือเป็นคนละ Account ในระบบสิทธิ์ของ MariaDB.
หลักการแก้จึงไม่ใช่เปิด Database ให้ทุก IP เข้ามาได้ แต่ควรเป็น:
หา FiveM Source Host↓ตรวจ MariaDB Account user@host↓ตรวจ SHOW GRANTS↓ตรวจ Remote Access↓ตรวจ bind-address↓ตรวจ Firewall↓สร้าง/แก้ Account ให้ตรง Host↓ทดสอบ Connection
① FiveM MySQL Error 1130 คืออะไร
MariaDB ระบุ Error 1130 ว่า:
1130HY000ER_HOST_NOT_PRIVILEGEDHost '%s' is not allowed to connect to this MariaDB server
หมายความว่า Host ต้นทางไม่มี MariaDB Account ที่อนุญาตให้ผ่านขั้นตอนนี้.
② จุดสำคัญมาก — MariaDB ใช้ User + Host
MariaDB ไม่ได้มอง Account จาก Username อย่างเดียว
รูปแบบคือ:
'user_name'@'host_name'
เช่น:
'fivem'@'localhost'
กับ:
'fivem'@'10.0.0.25'
เป็น Account คนละตัว.
③ ดังนั้นมี User fivem แล้วไม่ได้แปลว่า Remote FiveM เชื่อมได้
ถ้า Database มีเพียง:
'fivem'@'localhost'
Account นี้ถูกกำหนดสำหรับ Host localhost
Remote FiveM Host จะต้อง Match Account/Host ที่ MariaDB อนุญาต.
④ นี่คือสาเหตุยอดนิยมหลังย้าย FiveM ไป Server ใหม่
เดิม:
FiveM Server AIP = 10.0.0.10
Database Account อาจถูกตั้งให้ Host นั้น
แต่เมื่อย้ายเป็น:
FiveM Server BIP = 10.0.0.20
MariaDB Account เดิมอาจไม่ Match Source ใหม่อีกต่อไป
⑤ Error 1130 ต่างจาก Error 1129 อย่างไร
หัวข้อก่อนหน้า Error 1129 คือ:
Host is blocked because of many connection errors
คือ MariaDB Block Host เนื่องจาก Connection Errors ต่อเนื่อง.
ส่วน Error 1130 คือ:
Host is not allowed to connect
คือ Host ไม่มีสิทธิ์เข้าถึงตาม Account/Host Access Control.
⑥ จำง่าย ๆ
1129 = เคยเชื่อม แต่ Host ถูก Block จาก Errors1130 = Host ไม่ได้รับอนุญาตให้ Connect
⑦ FLUSH HOSTS แก้ Error 1130 ไหม
โดยทั่วไปไม่ใช่คำตอบของ Error 1130
FLUSH HOSTS ใช้กับ Host Cache/Blocked Hosts ซึ่งตรงกับสถานการณ์ 1129 มากกว่า ส่วน 1130 เกี่ยวกับ Host ACL/Account Permission.
⑧ Restart MariaDB ช่วยไหม
ไม่แก้ Account ที่กำหนด Host ผิด
ถ้า Account ยังเป็น:
'fivem'@'localhost'
แต่ FiveM มาจาก Remote Host เดิม Error สามารถกลับมาเหมือนเดิม
⑨ Restart FiveM ช่วยไหม
ไม่แก้ MariaDB Account Permission เช่นกัน
⑩ Clear FiveM Cache ช่วยไหม
ไม่ใช่จุดแก้ของ Error 1130 เพราะปัญหาอยู่ที่ Database Access Control/Remote Connection Configuration
⑪ MariaDB ตรวจ Host ก่อน Password บางกรณี
performance_schema.host_cache ของ MariaDB มี COUNT_HOST_ACL_ERRORS สำหรับ Connection Attempts ที่ไม่มี User จาก Host นั้นได้รับอนุญาต และเอกสารระบุว่า Attempt แบบนี้จะคืน Error 1130 และไม่เข้าสู่ Username/Password Authentication ต่อ.
⑫ นี่หมายความว่าอะไร
ถ้าขึ้น:
Host is not allowed to connect
อย่าเริ่มจากเปลี่ยน Password อย่างเดียว
เพราะ MariaDB อาจ Reject ตั้งแต่ Host Access Control
⑬ Error 1045 ต่างกันอย่างไร
Error 1045 มักเกี่ยวกับ:
Access denied
หลัง Authentication/Account Matching Context
ส่วน 1130 เน้น Host ไม่ได้รับอนุญาต.
⑭ วิธีตรวจ Account ที่มีอยู่
ผู้ดูแล Database สามารถตรวจ Accounts ที่อนุญาตไว้ตาม Environment
สิ่งที่ต้องสนใจคือ:
usernamehost
ไม่ใช่ Username อย่างเดียว
⑮ ตัวอย่าง
อาจพบ:
fivem@localhost
แต่ FiveM Server อยู่ที่:
192.168.1.50
นี่คือสิ่งที่ต้องตรวจ
⑯ SHOW GRANTS มีประโยชน์
MariaDB มี:
SHOW GRANTS FOR 'fivem'@'localhost';
เพื่อแสดงสิทธิ์ของ Account ที่ระบุ โดย Account Name ต้องระบุในรูปแบบ User/Host.
⑰ ถ้า Account Remote มีอยู่
เช่น:
'fivem'@'192.168.1.50'
ให้ตรวจ:
SHOW GRANTS FOR 'fivem'@'192.168.1.50';
⑱ อย่าเดา Host
ต้องใช้ Host ที่ MariaDB เห็นจริง
โดยเฉพาะเมื่อผ่าน:
- NAT
- Docker
- Private Network
- VPN
⑲ Public IP กับ MariaDB Source IP อาจไม่เหมือนกัน
ใน Infrastructure บางแบบ MariaDB อาจเห็น Source จาก Private/NAT Network
จึงควรดู Logs/Host Cache แทนการเดา
⑳ MariaDB Account รองรับ Host Patterns
MariaDB อธิบายว่า Account Names มี Username และ Hostname Components และ Host สามารถใช้ Pattern ตามไวยากรณ์ที่รองรับได้.
㉑ แล้วใช้ % ดีไหม
MariaDB Remote Access Guide แสดงตัวอย่างการอนุญาต Remote Users และอธิบายการกำหนด Account สำหรับ Hosts ต่าง ๆ.
แต่ Production FiveM ไม่ควรเปิด:
'fivem'@'%'
โดยอัตโนมัติเพียงเพราะง่าย หากสามารถจำกัด Source Host/IP ได้ชัดเจนกว่า
㉒ เพราะ % กว้างกว่า
ถ้า Account และ Firewall เปิดกว้างด้วย:
Attack Surface จะมากขึ้นโดยไม่จำเป็น
แนวทางที่ดีกว่าคือ Least Privilege:
- Host เท่าที่จำเป็น
- Database เท่าที่ต้องใช้
- Privileges เท่าที่ Resource ต้องใช้
㉓ อย่าใช้ root เพื่อแก้ Error 1130
FiveM ไม่ควรเชื่อม MariaDB ด้วย Root เพียงเพราะ Remote User เดิมใช้ไม่ได้
㉔ สร้าง Dedicated User ดีกว่า
เช่นแนวคิด:
FiveM application account↓เฉพาะ FiveM database↓เฉพาะ source host↓เฉพาะ privileges ที่ต้องการ
MariaDB Remote Access Guide แนะนำการ Grant Privileges ให้ Accounts สำหรับ Remote Hosts โดยเฉพาะ.
㉕ CREATE USER ใช้รูปแบบ User@Host
ตัวอย่างโครงสร้าง:
CREATE USER 'fivem'@'192.168.1.50'IDENTIFIED BY 'strong-password';
MariaDB ระบุ Account Names ในรูปแบบ 'user_name'@'host_name'.
㉖ แต่ห้าม Copy IP ตัวอย่างไปใช้
ต้องใส่ Source Host ของ FiveM Server จริง
㉗ แล้วให้สิทธิ์อย่างไร
ใช้ GRANT ตาม Database/Privileges ที่ Resource ต้องการ โดย MariaDB มี GRANT Statement สำหรับกำหนด Privileges ให้ Account ตาม User/Host.
㉘ อย่าให้ GRANT ALL ON *.* โดยไม่จำเป็น
FiveM ส่วนใหญ่ต้องใช้ Database ของตัวเอง
ไม่จำเป็นต้องให้สิทธิ์ Database ทั้ง Server หาก Resource ไม่ต้องใช้
㉙ ตัวอย่างแนวคิดที่จำกัด Scope
fivem user↓fivem database↓required privileges
ดีกว่าการให้สิทธิ์ทุก Database
㉚ ต้องรู้ Resource Requirement
บาง Resource ต้อง:
- SELECT
- INSERT
- UPDATE
- DELETE
และบางครั้ง Migration อาจต้อง Schema Privileges เพิ่ม
จึงไม่ควรเดา Permission Set แบบสากล
㉛ Production Account กับ Migration Account อาจแยกกัน
ในระบบที่ต้องการ Security มากขึ้น
Application Runtime อาจใช้สิทธิ์ต่ำกว่า Admin/Migration Account
แต่ขึ้นกับ Architecture
㉜ FiveM Paid Resource บางตัวขอ ALTER TABLE ตอน Start
ต้องตรวจ Documentation ของ Resource ก่อนลด Privileges
㉝ Error 1142 หลังแก้ 1130
ถ้า Host เชื่อมได้แล้วแต่ Account ไม่มีสิทธิ์ทำ Command:
อาจเจอ Error กลุ่ม:
command denied to user
แทน
นั่นหมายความว่าคุณผ่าน Host Connection Problem แล้ว แต่ Privilege บน Object/Command ยังไม่พอ.
㉞ นี่เป็น Progress
เดิม:
1130
หลังแก้:
1142
แสดงว่าปัญหาได้เลื่อนไปอีกขั้นหนึ่งแล้ว
㉟ อย่าเปิด Privileges ทั้งหมดทันที
อ่าน Command ที่ Denied แล้วเพิ่มเฉพาะ Permission ที่ Resource ต้องใช้
㊱ Remote MariaDB ต้อง Listen สำหรับ Remote Connection ด้วย
MariaDB Remote Connection Guide ระบุว่าการเปิด Remote Access ต้องพิจารณา Server Network Configuration เช่น bind-address ร่วมกับ User Privileges และ Firewall.
㊲ bind-address คืออะไร
ใช้กำหนด Network Interface/Address ที่ MariaDB Listen สำหรับ Connections
หาก MariaDB Bind เฉพาะ Local Interface:
Remote Client อาจไม่สามารถเข้า Database ผ่าน Network ได้.
㊳ แต่ถ้าขึ้น Error 1130 อยู่แล้ว
นี่หมายความว่า MariaDB ได้รับ Connection Attempt มากพอที่จะตอบ Host Privilege Error
ดังนั้น bind-address อาจไม่ใช่ Root Cause หลักในเคสนั้น
㊴ นี่สำคัญ
ถ้า Port เข้าไม่ได้เลย:
อาการอาจเป็น:
- Connection refused
- timeout
แทนที่จะเป็น MariaDB Error 1130
㊵ ดังนั้นอย่าแก้ bind-address ก่อนดู Error จริง
ถ้า MariaDB ตอบ Error 1130 ชัด:
ให้เริ่มที่ Account/Host ACL ก่อน
㊶ Firewall เป็นอีก Layer
MariaDB Remote Access Guide ระบุว่าต้องกำหนด Firewall ให้รองรับ Remote Connections ที่จำเป็นด้วย.
㊷ แต่ Error 1130 หมายความว่า Firewall ผ่านแล้วหรือไม่
ในหลายกรณี MariaDB ต้องได้รับ Connection ก่อนจึงตอบ Error นี้ได้
ดังนั้นถ้าเห็นข้อความ 1130 จาก MariaDB โดยตรง:
Host/Account Permission เป็นเบาะแสที่ชัดกว่า Firewall Block
㊸ อย่างไรก็ตามหลังแก้ Account
Firewall ยังต้องถูกต้องสำหรับ Connection Flow จริง
㊹ อย่าเปิด Port 3306 ให้ทุก IP
ถ้า Environment ใช้ Port นี้
ควรกำหนด Source ให้แคบที่สุดตาม Architecture
㊺ Port MariaDB ไม่จำเป็นต้องเป็น 3306 เสมอ
MariaDB Quickstart Connection Guide รองรับการระบุ Host/Port ตาม Connection Configuration จริง.
㊻ ตรวจ Connection String FiveM
ดู:
hostportuserpassworddatabase
ว่าเป็น Database Server ที่ตั้งใจจริง
㊼ Error หลังย้าย Database
Connection String อาจยังชี้:
old-db.example
แทน Database ใหม่
㊽ Error หลัง Clone Server
Test Server อาจถือ Production DB Connection String มาด้วย
เป็นเรื่องที่ต้องระวังมาก
㊾ Test Server อาจมาจาก Host ที่ MariaDB ไม่อนุญาต
จึงเจอ 1130
ซึ่งจริง ๆ อาจเป็น Protection ที่ดี
㊿ อย่าแก้โดยเปิด % ทันที
เพราะ Test Server ที่ไม่ควรเข้า Production DB จะกลับเข้าได้
51. ตรวจ Environment Variables
บาง FiveM Stack ใช้ Connection String ผ่าน Config/Environment
หลัง Migration อาจยังคง:
old userold hostold database
52. Error หลังเปลี่ยน Public IP
ถ้า FiveM VPS ได้ IP ใหม่:
MariaDB Account แบบผูก IP เดิมอาจไม่ Match
53. ต้องเปลี่ยน Account Host อย่างไร
อย่า DELETE User เดิมทันทีถ้ายังมี Production Service ใช้อยู่
อาจสร้าง Account ใหม่สำหรับ Host ใหม่ก่อน แล้วทดสอบ
54. หลัง Migration เสร็จ
ค่อยลบ Access เก่าที่ไม่ใช้งาน
เพื่อลด Attack Surface
55. อย่าปล่อย Old IP Access ไว้ตลอด
โดยเฉพาะถ้า IP เก่าไม่อยู่ในการควบคุมแล้ว
56. MariaDB ALTER USER ใช้แก้ Host ได้ไหม
MariaDB ALTER USER ใช้แก้ Properties ของ Existing Account แต่ Account Name ยังอ้าง User/Host Combination ตาม Account Model.
การเปลี่ยน Host Identity ของ Account ควรทำตาม Account-management method ที่เหมาะกับ MariaDB Version และ Environment ไม่ควรเดาคำสั่ง Production
57. วิธีที่ปลอดภัยกว่าในการ Migration
แนวคิด:
สร้าง account สำหรับ host ใหม่↓grant สิทธิ์ที่ต้องการ↓ทดสอบ↓ย้าย FiveM↓ตรวจ↓ลบ account host เก่าเมื่อไม่ใช้
58. ตรวจ Grants เดิม
ก่อนสร้าง Account ใหม่:
SHOW GRANTS FOR 'fivem'@'old-host';
สามารถใช้เป็น Reference ว่า Application เดิมต้องใช้ Privileges ใด.
59. อย่า Copy Grants โดยไม่ทบทวน
เพราะของเดิมอาจให้สิทธิ์กว้างเกินไปอยู่แล้ว
60. CURRENT_USER() มีประโยชน์อย่างไร
หลัง Connection สำเร็จ MariaDB CURRENT_USER() แสดง User/Host Combination ของ Account ที่ Server ใช้ Authenticate Client จริง.
ตัวอย่าง:
SELECT CURRENT_USER();
61. นี่ช่วยตรวจว่า MariaDB Match Account ตัวไหน
เช่นได้:
fivem@%
หรือ Account อื่นตาม Configurationจริง
62. USER() กับ CURRENT_USER() ต่างกันได้
MariaDB Documentation ระบุว่า CURRENT_USER() แสดง Account ที่ Server ใช้ Authenticate Client ซึ่งอาจแตกต่างจาก USER().
63. สำหรับ Debug Permission ใช้ CURRENT_USER() มีประโยชน์มาก
เพราะบอก Account จริงที่กำหนด Privileges
64. Error 1130 ยัง Connect ไม่สำเร็จ
จึงยัง Query CURRENT_USER() จาก Connection นั้นไม่ได้
ต้องใช้ Admin Session หรือหลังแก้ Connection แล้ว
65. Host Cache มีข้อมูล Error 1130
MariaDB performance_schema.host_cache มี:
COUNT_HOST_ACL_ERRORS
ซึ่งนับกรณีที่ไม่มี User จาก Host นั้นได้รับอนุญาตและ Connection ถูก Reject ด้วย Error 1130.
66. นี่ช่วยยืนยัน Root Cause
ถ้า Counter นี้เพิ่มตรง FiveM Host:
Host ACL/Account Matching เป็นจุดสำคัญ
67. ตรวจได้ด้วยแนวคิด
SELECT *FROM performance_schema.host_cache;
หาก Environment เปิดใช้ Table นี้
68. อย่า UPDATE host_cache เอง
มันเป็น Diagnostic Data
ใช้ Account Management Commands แก้สิทธิ์จริง
69. Error 1130 หลังเปลี่ยน Password
Password ใหม่อาจไม่ใช่สาเหตุหลัก
ถ้า Host ACL ไม่ Match MariaDB อาจ Reject ก่อน Password Authentication.
70. Error หลังสร้าง User ใหม่
อาจสร้าง:
'fivem'@'localhost'
แต่ตั้งใจให้ Remote FiveM ใช้
นี่เป็นความผิดพลาดที่พบบ่อยในแนวคิด Account Matching
71. ต้องสร้าง Remote Account ให้ถูก Host
MariaDB Remote Access Guide แสดงว่าการ Grant Remote Access ต้องระบุ User Accounts ที่อนุญาตสำหรับ Remote Host.
72. Hostname ใช้แทน IP ได้ไหม
MariaDB Account Names รองรับ Host Name Component.
แต่ Infrastructure ที่ใช้ Hostname ต้องพิจารณา DNS/Name Resolution อย่างถูกต้อง
73. IP เหมาะกว่าเสมอไหม
ไม่เสมอ
Managed/Cloud Environment อาจมี Hostnames ที่ออกแบบมาให้ใช้
จึงต้องเลือกตาม Infrastructure
74. Wildcard IP Pattern
MariaDB Hostname Pattern สามารถ Match หลาย Hosts ได้ แต่ควรใช้เท่าที่จำเป็น ไม่ควรขยาย Scope โดยไม่มีเหตุผล.
75. Docker Network
FiveM กับ MariaDB อาจใช้:
container service nameprivate IP
แทน Public IP
76. อย่า Grant ให้ Public IP ถ้า MariaDB เห็น Docker Private Address
ต้องดู Source ที่ MariaDB รับจริง
77. Kubernetes/Container Environment
Pod/Container Addresses อาจเปลี่ยน
จึงต้องใช้ Network/Account Design ที่เหมาะกับ Platform
ไม่ควร Hard-code IP สุ่มจาก Container หนึ่งตัว
78. FiveM Server ทั่วไปบน VPS
ถ้าใช้ Remote DB แบบ Static IP:
การจำกัด Account/Firewall ตาม FiveM Source IP สามารถทำ Security ได้ง่ายกว่า
79. Shared NAT
หลาย Applications อาจออกด้วย IP เดียวกัน
MariaDB จะเห็น Host ตาม Network Path ที่มาถึงจริง
80. การ Grant Host จึงต้องเข้าใจ NAT
ไม่ใช่ดู IP บนเครื่อง FiveM อย่างเดียว
81. VPN
ถ้า FiveM เชื่อม DB ผ่าน VPN:
MariaDB อาจเห็น VPN Address
ต้อง Match Address นั้น
82. Error หลังเปิด VPN
ถ้า Source Address เปลี่ยน:
Account เดิมอาจไม่ Match
83. Error หลังปิด VPN
เหตุผลเดียวกัน
Source Host อาจเปลี่ยนกลับ
84. Cloud Firewall / Security Group
Remote Connection ต้องผ่าน Infrastructure Firewall ด้วย และ MariaDB Guide แนะนำให้เปิดเฉพาะ Port/Source ที่จำเป็น.
85. อย่าแก้ Error1130ด้วยปิด Firewallทั้งหมด
เพราะ MariaDB ตอบ Error นี้ได้อยู่แล้วแสดงว่า Connectionไปถึง Serverในกรณีดังกล่าว
86. Errorหลังเปลี่ยน DNS
ถ้า Connection Stringใช้ Hostnameและ DNSชี้ Databaseใหม่:
Databaseใหม่อาจไม่มี Accountสำหรับ FiveM Host
87. ดังนั้นดูปลายทางจริง
ไม่ใช่ดูเพียง Domain Name
88. ตรวจ Database Server ที่เชื่อมอยู่
เพราะ Dev/Prod Hostnamesอาจคล้ายกัน
89. Errorหลัง Restore MariaDB Users
ถ้า Restoreเฉพาะ Application Database แต่ไม่ได้ย้าย Account/Privilegesเหมือน Environmentเดิม:
Dataอาจอยู่ครบแต่ Remote Userยังเชื่อมไม่ได้
90. Database Data กับ MariaDB Accounts เป็นคนละส่วนของ Administration
อย่าคิดว่า Restore Tableแล้ว Users/Grantsทุกอย่างต้องตรงอัตโนมัติ
91. Errorหลัง Migration MariaDB ไปเครื่องใหม่
Checklist สำคัญ:
database datadatabase accountaccount hostgrantsbind-addressfirewallconnection string
92. ขาดเพียง Account Host
ก็เจอ Error1130ได้
93. ขาด Firewall
มักจะเข้า MariaDBไม่ได้ตั้งแต่ Network Layer
94. ขาด Grant
อาจเชื่อมสำเร็จแล้วเจอ Permission Errorตอน Query
95. Debug ตาม Layer
ดีที่สุด:
Network↓MariaDB listener↓Host ACL↓Authentication↓Database privileges↓SQL query
96. Error1130 อยู่ตรงไหน
ตรง Host ACL/Account Matching เป็นหลัก.
97. อย่าแก้ SQL Query
เพราะ Query ยังไม่ได้เริ่มทำงาน
98. ALTER TABLE ไม่ช่วย
เพราะปัญหาเกิดก่อน Applicationเข้าถึง Table
99. Repair Table ไม่ช่วย
ไม่เกี่ยวกับ Table Corruption
100. max_connections ไม่ช่วย
Error1040คือ Connection Limit
1130คือ Host Access
101. max_connect_errors ไม่ช่วย
นั่นเกี่ยวกับ Error1129/Host Blocking จาก Failed Connections ไม่ใช่ Host Account Authorization ของ1130
102. max_allowed_packet ไม่ช่วย
Packet Sizeเกิดหลัง Connection/Communication ไปไกลกว่า Host Access Stage
103. wait_timeout ไม่ช่วย
Connectionยังไม่ได้ผ่าน Host Authorization
104. net_read_timeout ไม่ช่วย
เป็นคนละ Stage
105. net_write_timeout ไม่ช่วย
เช่นเดียวกัน
106. FiveM Database Wrapper เปลี่ยน IP ได้ไหม
ตัว Wrapperไม่ได้เปลี่ยน Public Source IPโดยทั่วไป แต่การย้าย Server, Container, NATหรือNetwork Routingสามารถเปลี่ยน Hostที่ MariaDBเห็นได้
107. Errorหลังย้าย oxmysql ไปอีก Machine
ถ้า Database Client Processออกจาก Hostใหม่:
MariaDBจะเห็น Sourceตาม Networkใหม่
108. Resourceทุกตัว Errorพร้อมกัน
ถ้าใช้ Wrapperกลาง:
มีโอกาสสูงว่า Core Database Connectionถูก Reject
109. Resourceเดียว Error1130
อาจมี Resourceนั้นใช้ Database Connection Stringแยกจาก Core
110. ตัวอย่าง
Core:
db-main
Phone Resource:
db-phone
ถ้า Phoneต่อ Databaseอีก Hostหนึ่งและ Userไม่ได้รับอนุญาต:
Phoneอาจ Errorอยู่ตัวเดียว
111. อย่าคิดว่าทุก Resourceใช้ DBเดียว
ตรวจ Config Resourceนั้น
112. Errorหลังติด Phone Script
Paid Phoneบางตัวอาจต้อง Database Configurationของตัวเอง
ใช้ Documentationของ Resourceจริง
113. Errorหลังติด Logs Service
เช่นเดียวกัน
114. External API Server
ถ้า APIต้องเชื่อม MariaDBโดยตรง:
API Hostต้องมี Account/Firewallที่เหมาะ
115. แต่ควรให้ External Serviceเข้าถึง DBโดยตรงไหม
ขึ้นกับ Architecture
ไม่ควรเปิด MariaDBกว้างเพียงเพื่อทำ Integrationง่ายขึ้น
116. Application Serverเป็น Layerได้
ในระบบที่ต้องการ Securityมากขึ้น
แต่ไม่จำเป็นต้อง Rewrite FiveM Architectureเพื่อแก้1130
117. Errorเกิดบน phpMyAdmin แต่ FiveMปกติ
phpMyAdminอาจมาจาก Host/Userคนละ Context
อย่าแก้ FiveM Accountถ้า FiveMไม่ได้มีปัญหา
118. Errorจาก Workbench/Admin Tool ก็เช่นกัน
Hostต้นทางต่างกัน
119. ดูข้อความ %s
MariaDB Error 1130 ระบุ Hostที่ไม่อนุญาตในข้อความ
Hostนั้นคือเบาะแสหลัก.
120. Compare กับ FiveM Source
ถ้าข้อความเป็น:
Host '10.10.0.15'
ดูว่าเป็น FiveM Hostจริงหรือ:
- Docker Gateway
- NAT
- Proxy
- Admin PC
121. ถ้าไม่ใช่ FiveM
อย่าแก้ FiveM
122. Errorหลัง ISP เปลี่ยน Public IP
ถ้า FiveM Hostมี Dynamic Public IPและ Remote DB Grantแบบเจาะ IP:
Accessอาจเสียเมื่อ IPเปลี่ยน
123. Production Serverควรมี Stable Network Identityเมื่อเป็นไปได้
โดยเฉพาะระบบที่ใช้ IP Allowlisting
124. Dynamic IP + Remote DB มีความซับซ้อน
อาจต้องใช้:
- VPN/private network
- stable network
- managed connectivity
ตาม Infrastructure
125. อย่าใช้ % เพื่อแก้ Dynamic IPทันที
เพราะจะขยาย Access Scopeมาก
126. Firewall Defense-in-Depth
แม้ Accountจำกัด Hostแล้ว:
Firewallที่จำกัด Sourceเพิ่มอีกชั้นได้.
127. Database Passwordยังต้องแข็งแรง
Host Restrictionไม่แทน Authentication
128. อย่าใส่ Passwordลง GitHub
Connection Stringควรถูกจัดการเป็น Secret
129. อย่าโพสต์ Connection Stringเต็มใน Discord
Mask:
userpasswordhost
ตามความเหมาะสม
130. Error1130ไม่ได้ต้องการ Passwordเพื่อขอความช่วยเหลือ
สิ่งที่มีประโยชน์คือ:
- Error
- Source Host
- MariaDB Account Host
- Network Architecture
131. วิธีทดสอบหลังแก้
จาก FiveM Hostจริง:
ทดสอบ Connection ด้วย MariaDB Client/Connectorที่เหมาะกับ Environment
MariaDB Quickstart Connection Guide รองรับการระบุ Host/User/Password/Protocol เพื่อทดสอบ Connection.
132. อย่าทดสอบจาก Laptop แล้วสรุปว่า FiveMต้องผ่าน
LaptopกับFiveM Serverเป็นคนละ Host
133. ทดสอบจาก Sourceจริง
นี่สำคัญมาก
134. ถ้าทดสอบ Command Lineผ่าน แต่ FiveMยังไม่ผ่าน
ตรวจ FiveM Connection String
อาจใช้:
- Userคนละตัว
- Hostคนละตัว
- Portคนละตัว
135. ถ้า CLIก็ Error1130
Account/Host Accessยังไม่ถูก
136. ถ้า CLIขึ้น1045
Host Accessอาจผ่านแล้วแต่ Authentication/Credentialsมีปัญหา
137. ถ้า CLI Connection Refused
กลับไปตรวจ:
- listener
- bind-address
- firewall
- port
138. แยก Errorให้ถูกช่วยลดเวลามาก
1130 → host ACL1045 → authentication1040 → connection capacity1129 → host blocked
139. Errorหลังแก้แล้วเป็น1142
แปลว่า Connect/Authenticateผ่านขึ้นมาอีกขั้น แต่ Permission Queryยังไม่พอ.
140. ใช้ SHOW GRANTS
เพื่อดูสิทธิ์ Accountปัจจุบันแทนการเดา.
141. อย่าเพิ่ม Privilegesทีละมั่ว
อ่าน Resource Requirements
142. Production Migration Checklist
① หา FiveM source IP/host② ตรวจ database host③ ตรวจ user@host④ ตรวจ grants⑤ ตรวจ bind-address⑥ ตรวจ firewall⑦ ทดสอบจาก FiveM host⑧ เปิด FiveM wrapper⑨ ดู console⑩ ลบ old access หลัง migration
143. Errorหลังติด Test Server
ตรวจว่า Testกำลังชี้ Production Databaseหรือไม่
144. ถ้าใช่
อาจไม่ควรแก้1130ให้ Testเข้าถึง Productionเลย
ควรใช้ Test Databaseแยก
145. Staging Database
ช่วยลดความเสี่ยงจาก:
- SQL Migration
- Resource Testing
- Destructive Commands
146. อย่า Grant Dev Hostเข้าถึง Productionเพียงเพื่อสะดวก
ถ้าไม่จำเป็น
147. Error1130อาจเป็น Security Featureที่กำลังทำงานถูกต้อง
ในบางกรณี Hostที่ไม่ควรเข้า Databaseถูกปฏิเสธตามที่ตั้งใจ
148. ก่อนแก้ถามว่า Hostนี้ควรเข้าได้จริงไหม
สำคัญมาก
149. ถ้า Hostไม่รู้จัก
อย่า Grantทันที
ตรวจว่าเป็นใครก่อน
150. Error Logจาก Unknown IP
อาจเป็น Internet Scanถ้า Databaseเปิด Public
แต่ Error1130เพียงตัวเดียวไม่พิสูจน์การโจมตี
151. ถ้า DBไม่จำเป็นต้อง Public
ใช้ Firewallจำกัด Sourceอย่างเหมาะสม.
152. อย่าทำ skip-grant-tables
เพื่อแก้1130
โหมดนี้ Bypass Privilege System และ MariaDB Documentation เองเตือนให้ใช้ด้วยความระมัดระวังอย่างมากในสถานการณ์ Recovery เฉพาะ.
153. นี่เป็น Fixที่อันตรายเกินความจำเป็น
Error1130แก้ได้ด้วย Account/Remote Access Configurationที่ถูกต้อง
154. อย่าปิด Authentication
เด็ดขาด
155. อย่าใช้ root remoteโดยไม่จำเป็น
สร้าง Application Accountเฉพาะ FiveMดีกว่า
156. สิ่งที่ไม่ควรทำ
- เปิด MariaDB ให้ทุก IP
- ใช้ root เพื่อแก้เร็ว
-
GRANT ALL ON *.*แบบไม่จำเป็น - ปิด Firewall
-
ใช้
skip-grant-tables - Clear FiveM Cache
- Restart MariaDBซ้ำ
- ลบ Database
- ALTER Tables
-
เปลี่ยน
max_connect_errors
157. FiveM MySQL Error 1130 FAQ
FiveM Host is not allowed to connect คืออะไร
MariaDB Error1130 / SQLSTATE HY000 / ER_HOST_NOT_PRIVILEGED หมายถึง Hostต้นทางไม่มีสิทธิ์เชื่อม MariaDB ตาม Host ACL/Account Configuration.
MariaDB User มีอยู่แล้วทำไมยังเข้าไม่ได้
เพราะ MariaDB Accountsประกอบด้วยทั้ง UsernameและHostname เช่น 'user'@'host'; Userชื่อเดียวกันจากต่าง Hostอาจ Match Accountคนละตัวหรือไม่ Matchเลย.
'fivem'@'localhost' ใช้จาก Remote VPS ได้ไหม
Account localhost ถูกกำหนดสำหรับ Hostนั้น ไม่ได้หมายความว่า Remote Hostทุกตัวจะได้รับสิทธิ์; Remote Accessต้องมี Account/Grantที่ Match Remote Hostตาม Configuration.
Error1130กับ1129ต่างกันอย่างไร
1129คือ Hostถูก Blockจาก Connection Errors ส่วน1130คือ Hostไม่ได้รับอนุญาตให้ Connect.
FLUSH HOSTS ช่วยไหม
ไม่ใช่ Fixหลักของ1130 เพราะ Host Cacheระบุว่า1130เกิดจาก Host ACL ไม่มี Accountที่อนุญาต ส่วน Host Blockingเป็นอีกกรณี.
Error1130กับ1045ต่างกันอย่างไร
1130เกิดที่ Host Access Control ส่วน1045เกี่ยวกับ Access Denied/Authentication Contextหลังจากนั้นใน Connection Flow
Error1130กับ1130หลังย้าย VPSทำอย่างไร
ตรวจ Source IPใหม่กับ MariaDB Account 'user'@'host' และ Firewall/Remote Access Configuration.
ดูสิทธิ์ Userอย่างไร
ใช้:
SHOW GRANTS FOR 'user'@'host';
ตาม Accountจริง.
ดู Accountที่ Authenticateจริงอย่างไร
หลัง Connectionสำเร็จ:
SELECT CURRENT_USER();
MariaDBระบุว่า Functionนี้คืน User/Host Combinationของ Accountที่ใช้ Authenticate Clientจริง.
% คืออะไร
เป็น Host Patternที่สามารถ Match Hostsกว้างขึ้น แต่ควรใช้เท่าที่ Security Architectureจำเป็น.
ใช้ 'fivem'@'%' ดีไหม
อาจใช้งานได้ตาม Account Configuration แต่ไม่ควรเลือกเป็น Defaultเพียงเพราะสะดวก หากสามารถจำกัด FiveM Hostได้
ต้องเปิด Port3306 ให้ทุกคนไหม
ไม่ MariaDB Remote Connection Guide แนะนำการตั้ง Firewallสำหรับ Remote Connections และควรเปิดเฉพาะ Sourceที่จำเป็น.
bind-addressเกี่ยวไหม
เกี่ยวกับการให้ MariaDB Listenบน Network Interfaceสำหรับ Remote Connections.
ถ้าขึ้น1130แล้ว bind-addressยังผิดได้ไหม
ถ้า MariaDBตอบ1130ได้ Connectionได้ถึง Serverระดับหนึ่งแล้ว จึงควรตรวจ Host ACLก่อน แต่ Configurationทั้งหมดควรถูกตรวจใน Remote Setup
Firewallเกี่ยวไหม
เกี่ยวกับ Remote Access Layer แต่ถ้า MariaDBตอบ1130ชัด Account/Host ACLเป็นเบาะแสตรงกว่า
Passwordผิดทำ1130ไหม
Host Cache Documentationระบุว่า1130เกิดก่อน Username/Password Authenticationเมื่อไม่มี Userจาก Hostนั้นได้รับอนุญาต.
เปลี่ยน Passwordช่วยไหม
ไม่ หาก Root Causeคือ Host Accountไม่ Match
ใช้ rootช่วยไหม
ไม่ควร ควรแก้ Dedicated Application Accountให้ถูกต้อง
Resourceเดียวขึ้น1130ทำไม
Resourceนั้นอาจใช้ Connection String/Databaseอีกชุดต่างจาก Core FiveM
ทุก Resourceขึ้น1130ทำไม
หากทั้งหมดใช้ Wrapperกลาง Shared Database Connectionก็มีโอกาสเป็น Core Account/Host Configuration
Errorหลังเปิด Test Serverทำอย่างไร
ตรวจว่า Test Serverกำลังพยายามเข้า Production Databaseหรือไม่ก่อน Grant Access
Errorหลังเปลี่ยน IPทำอย่างไร
ปรับ Account/Firewallให้ Sourceใหม่ตาม Security Design และนำ Accessเก่าออกเมื่อเลิกใช้
Dockerเกี่ยวไหม
MariaDBอาจเห็น Source Hostจาก Container Network ไม่ใช่ Public IP จึงต้องตรวจ Hostจริงที่ Serverเห็น
VPNเกี่ยวไหม
ได้ เพราะ VPNสามารถเปลี่ยน Source Addressที่ MariaDBเห็น
NATเกี่ยวไหม
ได้เพราะ Source Addressอาจถูก Translateก่อนถึง MariaDB
Error1130หมายความว่าโดน Hackไหม
ไม่ Errorนี้เพียงบอกว่า Hostไม่ได้รับอนุญาต
Unknown Hostควร Grantไหม
ไม่ ควรตรวจ Identityของ Hostก่อน
ต้องใช้ skip-grant-tables ไหม
ไม่ MariaDBระบุว่าโหมดนี้ Bypass Privilege Systemและควรใช้ด้วยความระมัดระวังมากใน Recovery Cases ไม่ใช่ Fixปกติของ1130.
ต้อง Restart MariaDBไหม
โดยทั่วไปการแก้ Account/Grantไม่ควรเริ่มจาก Restart Database
Clear FiveM Cacheช่วยไหม
ไม่
ต้องลบ Databaseไหม
ไม่
ต้อง Repair Tableไหม
ไม่
ต้องแก้ Schemaไหม
ไม่
ต้องเพิ่ม max_connectionsไหม
ไม่
ต้องเพิ่ม max_connect_errorsไหม
ไม่ เพราะนั่นเกี่ยวกับ Host Blocking/1129มากกว่า
ต้อง Backupไหม
ถ้าแก้เพียง Account/Grantไม่ต้องแก้ Player Data แต่ก่อน Migration Database, Schema Changeหรือ Destructive Operationsก็ควร Backupตามปกติ
สรุป FiveM MySQL Host Is Not Allowed to Connect Error 1130
FiveM MySQL/MariaDB Error 1130 Host is not allowed to connect to this MariaDB server เกิดเมื่อ MariaDB ไม่พบ Account ที่อนุญาตให้ Host ต้นทางนั้น Connect โดย MariaDB Accounts ใช้รูปแบบ 'username'@'hostname' ดังนั้น Userชื่อเดียวกันจาก Hostต่างกันไม่ได้หมายความว่าจะมีสิทธิ์เหมือนกัน.
ให้ไล่ตรวจตามนี้:
Error 1130↓ดู Host ใน Error↓Host นี้คือ FiveM จริงหรือไม่↓ตรวจ MariaDB user@host↓ตรวจ SHOW GRANTS↓ตรวจ Remote Access↓ตรวจ bind-address↓ตรวจ Firewall↓แก้ Account ให้ Match Host จริง↓ทดสอบจาก FiveM Server↓ตรวจ CURRENT_USER หลังเชื่อมสำเร็จ
สิ่งที่ comsiam แนะนำคืออย่าแก้ Error1130ด้วยการสร้าง 'fivem'@'%', เปิด Database Portให้ทุก IPหรือใช้ rootทันที เพราะ MariaDBมี Account Modelแบบ User+Host และ Remote Accessควรถูกจำกัดให้เฉพาะ Sourceที่ต้องใช้งานจริง หาก FiveMมี Static IP การกำหนด AccountและFirewallให้ตรง Sourceนั้นจะปลอดภัยกว่าเปิดกว้างโดยไม่จำเป็น.
อีกหลักที่ comsiam แนะนำคือหลัง Migration Serverให้ตรวจครบทั้ง Connection String → Source IP → MariaDB User@Host → SHOW GRANTS → bind-address → Firewall ถ้า Command-line Testจาก FiveM Hostผ่านแต่ Resourceยัง Error ให้กลับไปตรวจ Connection Stringของ Resource/Wrapper เพราะมีโอกาสสูงว่า FiveMกำลังใช้ User, HostหรือDatabaseคนละชุดกับที่เพิ่งทดสอบ
Comments
Post a Comment