[{"data":1,"prerenderedAt":1945},["ShallowReactive",2],{"navigation_docs":3,"-tu-hoc-database-mysql-gioi-thieu-cai-dat":420,"-tu-hoc-database-mysql-gioi-thieu-cai-dat-surround":1940},[4,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Phỏng vấn .NET","i-lucide-briefcase","\u002Fphong-van","1.phong-van",[10,27,66,111,128],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":26},"Tổng quan","i-lucide-compass","\u002Fphong-van\u002Ftong-quan","1.phong-van\u002F1.tong-quan",[16,21],{"title":17,"path":18,"stem":19,"icon":20},"Thị trường HCM","\u002Fphong-van\u002Ftong-quan\u002Fthi-truong","1.phong-van\u002F1.tong-quan\u002F1.thi-truong","i-lucide-trending-up",{"title":22,"path":23,"stem":24,"icon":25},"Lộ trình 7 ngày","\u002Fphong-van\u002Ftong-quan\u002Flo-trinh","1.phong-van\u002F1.tong-quan\u002F2.lo-trinh","i-lucide-calendar-days",false,{"title":22,"icon":25,"path":28,"stem":29,"children":30,"page":26},"\u002Fphong-van\u002Flo-trinh","1.phong-van\u002F2.lo-trinh",[31,36,41,46,51,56,61],{"title":32,"path":33,"stem":34,"icon":35},"Ngày 1 — C# cơ bản","\u002Fphong-van\u002Flo-trinh\u002Fngay-1-csharp-co-ban","1.phong-van\u002F2.lo-trinh\u002F1.ngay-1-csharp-co-ban","i-lucide-1",{"title":37,"path":38,"stem":39,"icon":40},"Ngày 2 — OOP và SOLID","\u002Fphong-van\u002Flo-trinh\u002Fngay-2-oop-solid","1.phong-van\u002F2.lo-trinh\u002F2.ngay-2-oop-solid","i-lucide-2",{"title":42,"path":43,"stem":44,"icon":45},"Ngày 3 — C# nâng cao","\u002Fphong-van\u002Flo-trinh\u002Fngay-3-csharp-nang-cao","1.phong-van\u002F2.lo-trinh\u002F3.ngay-3-csharp-nang-cao","i-lucide-3",{"title":47,"path":48,"stem":49,"icon":50},"Ngày 4 — Database và SQL","\u002Fphong-van\u002Flo-trinh\u002Fngay-4-database-sql","1.phong-van\u002F2.lo-trinh\u002F4.ngay-4-database-sql","i-lucide-4",{"title":52,"path":53,"stem":54,"icon":55},"Ngày 5 — ASP.NET Core và EF Core","\u002Fphong-van\u002Flo-trinh\u002Fngay-5-aspnet-efcore","1.phong-van\u002F2.lo-trinh\u002F5.ngay-5-aspnet-efcore","i-lucide-5",{"title":57,"path":58,"stem":59,"icon":60},"Ngày 6 — DSA coding","\u002Fphong-van\u002Flo-trinh\u002Fngay-6-dsa","1.phong-van\u002F2.lo-trinh\u002F6.ngay-6-dsa","i-lucide-6",{"title":62,"path":63,"stem":64,"icon":65},"Ngày 7 — Mock và HR","\u002Fphong-van\u002Flo-trinh\u002Fngay-7-mock-interview","1.phong-van\u002F2.lo-trinh\u002F7.ngay-7-mock-interview","i-lucide-7",{"title":67,"icon":68,"path":69,"stem":70,"children":71,"page":26},"Ngân hàng câu hỏi","i-lucide-database","\u002Fphong-van\u002Fngan-hang-cau-hoi","1.phong-van\u002F3.ngan-hang-cau-hoi",[72,77,82,87,92,97,102,107],{"title":73,"path":74,"stem":75,"icon":76},"C# (60+ câu)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fcsharp","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F1.csharp","i-lucide-hash",{"title":78,"path":79,"stem":80,"icon":81},"OOP và SOLID (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Foop","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F2.oop","i-lucide-shapes",{"title":83,"path":84,"stem":85,"icon":86},"SQL (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fsql","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F3.sql","i-lucide-database-zap",{"title":88,"path":89,"stem":90,"icon":91},"ASP.NET và EF (50+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-ef","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F4.aspnet-ef","i-lucide-server",{"title":93,"path":94,"stem":95,"icon":96},"DSA và Coding (30+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdsa-coding","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F5.dsa-coding","i-lucide-binary",{"title":98,"path":99,"stem":100,"icon":101},"HR và Soft skill (25+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fhr-behavior","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F6.hr-behavior","i-lucide-users",{"title":103,"path":104,"stem":105,"icon":106},"Design Pattern (55+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdesign-pattern","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F7.design-pattern","i-lucide-puzzle",{"title":108,"path":109,"stem":110,"icon":91},"ASP.NET MVC và Web API","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-mvc-webapi","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F8.aspnet-mvc-webapi",{"title":112,"itle":113,"icon":114,"path":115,"stem":116,"children":117,"page":26},"Tai Lieu","Tài liệu và Cheat sheet","i-lucide-book-marked","\u002Fphong-van\u002Ftai-lieu","1.phong-van\u002F4.tai-lieu",[118,123],{"title":119,"path":120,"stem":121,"icon":122},"Cheat Sheet","\u002Fphong-van\u002Ftai-lieu\u002Fcheatsheet","1.phong-van\u002F4.tai-lieu\u002F1.cheatsheet","i-lucide-clipboard-list",{"title":124,"path":125,"stem":126,"icon":127},"Nguồn tham khảo","\u002Fphong-van\u002Ftai-lieu\u002Fnguon","1.phong-van\u002F4.tai-lieu\u002F2.nguon","i-lucide-link",{"title":129,"icon":130,"path":131,"stem":132,"children":133,"page":26},"Phỏng vấn English","i-lucide-globe","\u002Fphong-van\u002Fenglish-interview","1.phong-van\u002F5.english-interview",[134,138,143,148],{"title":135,"path":136,"stem":137,"icon":130},"Tổng quan English","\u002Fphong-van\u002Fenglish-interview\u002Ftong-quan","1.phong-van\u002F5.english-interview\u002F1.tong-quan",{"title":139,"path":140,"stem":141,"icon":142},"Vocabulary","\u002Fphong-van\u002Fenglish-interview\u002Fvocabulary","1.phong-van\u002F5.english-interview\u002F2.vocabulary","i-lucide-book-a",{"title":144,"path":145,"stem":146,"icon":147},"Technical Q và A (EN)","\u002Fphong-van\u002Fenglish-interview\u002Ftechnical-en","1.phong-van\u002F5.english-interview\u002F3.technical-en","i-lucide-code",{"title":149,"path":150,"stem":151,"icon":152},"Behavioral (EN)","\u002Fphong-van\u002Fenglish-interview\u002Fbehavioral-en","1.phong-van\u002F5.english-interview\u002F4.behavioral-en","i-lucide-message-square-text",{"title":154,"icon":155,"path":156,"stem":157,"children":158},"Tự học","i-lucide-graduation-cap","\u002Ftu-hoc","2.tu-hoc",[159,161,287,310,333,357,384],{"title":154,"path":156,"stem":160,"icon":155},"2.tu-hoc\u002Findex",{"title":162,"icon":68,"path":163,"stem":164,"children":165},"Database","\u002Ftu-hoc\u002Fdatabase","2.tu-hoc\u002F1.database\u002Findex",[166,167,197,222,243,248],{"title":162,"path":163,"stem":164,"icon":68},{"title":168,"icon":91,"path":169,"stem":170,"children":171,"page":26},"SQL Server","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server","2.tu-hoc\u002F1.database\u002F2.sql-server",[172,177,182,187,192],{"title":173,"path":174,"stem":175,"icon":176},"1. Giới thiệu và Cài đặt","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F1.gioi-thieu-cai-dat","i-lucide-play-circle",{"title":178,"path":179,"stem":180,"icon":181},"2. Cú pháp cơ bản","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F2.cu-phap-co-ban","i-lucide-code-2",{"title":183,"path":184,"stem":185,"icon":186},"3. Truy vấn nâng cao","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F3.truy-van-nang-cao","i-lucide-git-merge",{"title":188,"path":189,"stem":190,"icon":191},"4. Đặc thù và Performance","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F4.dac-thu-performance","i-lucide-gauge",{"title":193,"path":194,"stem":195,"icon":196},"5. Q và A phỏng vấn","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F5.cau-hoi-phong-van","i-lucide-message-circle-question",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":26},"PostgreSQL","i-simple-icons-postgresql","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql","2.tu-hoc\u002F1.database\u002F3.postgresql",[203,206,209,212,215,218],{"title":173,"path":204,"stem":205,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":207,"stem":208,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F2.cu-phap-co-ban",{"title":183,"path":210,"stem":211,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F3.truy-van-nang-cao",{"title":188,"path":213,"stem":214,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F4.dac-thu-performance",{"title":193,"path":216,"stem":217,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F5.cau-hoi-phong-van",{"title":219,"path":220,"stem":221,"icon":96},"6. Tích hợp C# và Postgres","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftich-hop-csharp","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F6.tich-hop-csharp",{"title":223,"icon":224,"path":225,"stem":226,"children":227,"page":26},"MySQL","i-simple-icons-mysql","\u002Ftu-hoc\u002Fdatabase\u002Fmysql","2.tu-hoc\u002F1.database\u002F4.mysql",[228,231,234,237,240],{"title":173,"path":229,"stem":230,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F4.mysql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":232,"stem":233,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F4.mysql\u002F2.cu-phap-co-ban",{"title":183,"path":235,"stem":236,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F4.mysql\u002F3.truy-van-nang-cao",{"title":188,"path":238,"stem":239,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F4.mysql\u002F4.dac-thu-performance",{"title":193,"path":241,"stem":242,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F4.mysql\u002F5.cau-hoi-phong-van",{"title":244,"path":245,"stem":246,"icon":247},"So sánh 3 RDBMS","\u002Ftu-hoc\u002Fdatabase\u002Fso-sanh","2.tu-hoc\u002F1.database\u002F5.so-sanh","i-lucide-columns-3",{"title":249,"path":250,"stem":251,"children":252,"icon":254},"Supabase (BaaS)","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002Findex",[253,255,259,264,269,274,278,283],{"title":249,"path":250,"stem":251,"icon":254},"i-simple-icons-supabase",{"title":256,"path":257,"stem":258,"icon":68},"1. Database","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fdatabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002F1.database",{"title":260,"path":261,"stem":262,"icon":263},"2. Authentication","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fauthentication","2.tu-hoc\u002F1.database\u002F6.supabase\u002F2.authentication","i-lucide-key",{"title":265,"path":266,"stem":267,"icon":268},"3. Storage & Realtime","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fstorage-realtime","2.tu-hoc\u002F1.database\u002F6.supabase\u002F3.storage-realtime","i-lucide-zap",{"title":270,"path":271,"stem":272,"icon":273},"4. Edge Functions & AI","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Ffunctions-ai","2.tu-hoc\u002F1.database\u002F6.supabase\u002F4.functions-ai","i-lucide-brain",{"title":275,"path":276,"stem":277,"icon":181},"5. API & SDKs","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fapi-sdk","2.tu-hoc\u002F1.database\u002F6.supabase\u002F5.api-sdk",{"title":279,"path":280,"stem":281,"icon":282},"6. Platform & Deploy","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fplatform-deploy","2.tu-hoc\u002F1.database\u002F6.supabase\u002F6.platform-deploy","i-lucide-cloud",{"title":284,"path":285,"stem":286,"icon":196},"7. Interview & Q&A","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Finterview","2.tu-hoc\u002F1.database\u002F6.supabase\u002F7.interview",{"title":288,"icon":289,"path":290,"stem":291,"children":292},"TypeScript","i-simple-icons-typescript","\u002Ftu-hoc\u002Ftypescript","2.tu-hoc\u002F2.typescript\u002Findex",[293,294,297,301,306],{"title":288,"path":290,"stem":291,"icon":289},{"title":173,"path":295,"stem":296,"icon":176},"\u002Ftu-hoc\u002Ftypescript\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F2.typescript\u002F1.gioi-thieu-cai-dat",{"title":298,"path":299,"stem":300,"icon":81},"2. Type System","\u002Ftu-hoc\u002Ftypescript\u002Ftype-system","2.tu-hoc\u002F2.typescript\u002F2.type-system",{"title":302,"path":303,"stem":304,"icon":305},"3. Advanced types","\u002Ftu-hoc\u002Ftypescript\u002Fadvanced-types","2.tu-hoc\u002F2.typescript\u002F3.advanced-types","i-lucide-braces",{"title":307,"path":308,"stem":309,"icon":196},"4. Q và A phỏng vấn","\u002Ftu-hoc\u002Ftypescript\u002Fcau-hoi-phong-van","2.tu-hoc\u002F2.typescript\u002F4.cau-hoi-phong-van",{"title":311,"icon":81,"path":312,"stem":313,"children":314},"OOP","\u002Ftu-hoc\u002Foop","2.tu-hoc\u002F3.oop\u002Findex",[315,316,321,326,330],{"title":311,"path":312,"stem":313,"icon":81},{"title":317,"path":318,"stem":319,"icon":320},"1. Bốn tính chất","\u002Ftu-hoc\u002Foop\u002F4-tinh-chat","2.tu-hoc\u002F3.oop\u002F1.4-tinh-chat","i-lucide-circle-dot",{"title":322,"path":323,"stem":324,"icon":325},"2. SOLID","\u002Ftu-hoc\u002Foop\u002Fsolid","2.tu-hoc\u002F3.oop\u002F2.solid","i-lucide-shield",{"title":327,"path":328,"stem":329,"icon":106},"3. Design Pattern","\u002Ftu-hoc\u002Foop\u002Fdesign-pattern","2.tu-hoc\u002F3.oop\u002F3.design-pattern",{"title":307,"path":331,"stem":332,"icon":196},"\u002Ftu-hoc\u002Foop\u002Fcau-hoi-phong-van","2.tu-hoc\u002F3.oop\u002F4.cau-hoi-phong-van",{"title":334,"icon":305,"path":335,"stem":336,"children":337},"Generic","\u002Ftu-hoc\u002Fgeneric","2.tu-hoc\u002F4.generic\u002Findex",[338,339,344,349,354],{"title":334,"path":335,"stem":336,"icon":305},{"title":340,"path":341,"stem":342,"icon":343},"1. Khái niệm và cú pháp","\u002Ftu-hoc\u002Fgeneric\u002Fkhai-niem","2.tu-hoc\u002F4.generic\u002F1.khai-niem","i-lucide-book",{"title":345,"path":346,"stem":347,"icon":348},"2. Constraint và Variance","\u002Ftu-hoc\u002Fgeneric\u002Fconstraint-variance","2.tu-hoc\u002F4.generic\u002F2.constraint-variance","i-lucide-filter",{"title":350,"path":351,"stem":352,"icon":353},"3. C# vs TS","\u002Ftu-hoc\u002Fgeneric\u002Fso-sanh","2.tu-hoc\u002F4.generic\u002F3.so-sanh","i-lucide-git-compare",{"title":307,"path":355,"stem":356,"icon":196},"\u002Ftu-hoc\u002Fgeneric\u002Fcau-hoi-phong-van","2.tu-hoc\u002F4.generic\u002F4.cau-hoi-phong-van",{"title":358,"icon":359,"path":360,"stem":361,"children":362},"Nuxt 4","i-simple-icons-nuxt","\u002Ftu-hoc\u002Fnuxt-4","2.tu-hoc\u002F5.nuxt-4\u002Findex",[363,364,367,372,376,379],{"title":358,"path":360,"stem":361,"icon":359},{"title":173,"path":365,"stem":366,"icon":176},"\u002Ftu-hoc\u002Fnuxt-4\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F5.nuxt-4\u002F1.gioi-thieu-cai-dat",{"title":368,"path":369,"stem":370,"icon":371},"2. Routing và Rendering","\u002Ftu-hoc\u002Fnuxt-4\u002Frouting-rendering","2.tu-hoc\u002F5.nuxt-4\u002F2.routing-rendering","i-lucide-route",{"title":373,"path":374,"stem":375,"icon":91},"3. Data và Server","\u002Ftu-hoc\u002Fnuxt-4\u002Fdata-server","2.tu-hoc\u002F5.nuxt-4\u002F3.data-server",{"title":307,"path":377,"stem":378,"icon":196},"\u002Ftu-hoc\u002Fnuxt-4\u002Fcau-hoi-phong-van","2.tu-hoc\u002F5.nuxt-4\u002F4.cau-hoi-phong-van",{"title":380,"path":381,"stem":382,"icon":383},"5. Practical Todo App","\u002Ftu-hoc\u002Fnuxt-4\u002Fpractical-todo-app","2.tu-hoc\u002F5.nuxt-4\u002F5.practical-todo-app","i-lucide-check-square",{"title":385,"path":386,"stem":387,"children":388,"icon":390},"Tailwind CSS","\u002Ftu-hoc\u002Ftailwindcss","2.tu-hoc\u002F6.tailwindcss\u002Findex",[389,391,396,401,406,411,416],{"title":385,"path":386,"stem":387,"icon":390},"i-simple-icons-tailwindcss",{"title":392,"path":393,"stem":394,"icon":395},"1. Layout & Spacing","\u002Ftu-hoc\u002Ftailwindcss\u002Flayout-spacing","2.tu-hoc\u002F6.tailwindcss\u002F1.layout-spacing","i-lucide-layout",{"title":397,"path":398,"stem":399,"icon":400},"2. Typography & Colors","\u002Ftu-hoc\u002Ftailwindcss\u002Ftypography-colors","2.tu-hoc\u002F6.tailwindcss\u002F2.typography-colors","i-lucide-type",{"title":402,"path":403,"stem":404,"icon":405},"3. Interactive & Effects","\u002Ftu-hoc\u002Ftailwindcss\u002Finteractive-effects","2.tu-hoc\u002F6.tailwindcss\u002F3.interactive-effects","i-lucide-sparkles",{"title":407,"path":408,"stem":409,"icon":410},"4. Responsive & Dark Mode","\u002Ftu-hoc\u002Ftailwindcss\u002Fresponsive-darkmode","2.tu-hoc\u002F6.tailwindcss\u002F4.responsive-darkmode","i-lucide-monitor-smartphone",{"title":412,"path":413,"stem":414,"icon":415},"5. Customization & Theme","\u002Ftu-hoc\u002Ftailwindcss\u002Fcustomization","2.tu-hoc\u002F6.tailwindcss\u002F5.customization","i-lucide-settings-2",{"title":417,"path":418,"stem":419,"icon":181},"6. Practical Projects","\u002Ftu-hoc\u002Ftailwindcss\u002Fpractical-projects","2.tu-hoc\u002F6.tailwindcss\u002F6.practical-projects",{"id":421,"title":422,"body":423,"description":1933,"extension":1934,"links":1935,"meta":1936,"navigation":1937,"path":229,"seo":1938,"stem":230,"__hash__":1939},"docs\u002F2.tu-hoc\u002F1.database\u002F4.mysql\u002F1.gioi-thieu-cai-dat.md","Giới thiệu và Cài đặt MySQL 8.4 LTS \u002F 9.7 LTS",{"type":424,"value":425,"toc":1912},"minimark",[426,431,435,452,457,517,542,546,594,624,628,688,692,696,841,845,875,878,907,911,935,939,976,1003,1094,1098,1172,1176,1302,1306,1413,1417,1488,1548,1552,1555,1611,1614,1634,1660,1664,1731,1768,1789,1793,1900,1908],[427,428,430],"h2",{"id":429},"_1-chọn-bản-mysql-nào","1. Chọn bản MySQL nào?",[432,433,434],"p",{},"MySQL có 2 nhánh release song song:",[436,437,438,446],"ul",{},[439,440,441,445],"li",{},[442,443,444],"strong",{},"LTS"," (Long Term Support): ổn định, fix bug & security ~8 năm.",[439,447,448,451],{},[442,449,450],{},"Innovation",": cập nhật feature mới mỗi quý, support ngắn.",[453,454,456],"h3",{"id":455},"các-bản-lts-hiện-hành","Các bản LTS hiện hành",[458,459,460,476],"table",{},[461,462,463],"thead",{},[464,465,466,470,473],"tr",{},[467,468,469],"th",{},"Bản",[467,471,472],{},"Release",[467,474,475],{},"EOL",[477,478,479,493,506],"tbody",{},[464,480,481,487,490],{},[482,483,484],"td",{},[442,485,486],{},"MySQL 9.7 LTS",[482,488,489],{},"21\u002F04\u002F2026",[482,491,492],{},"~2034",[464,494,495,500,503],{},[482,496,497],{},[442,498,499],{},"MySQL 8.4 LTS",[482,501,502],{},"04\u002F2024",[482,504,505],{},"04\u002F2032",[464,507,508,511,514],{},[482,509,510],{},"MySQL 8.0 (cuối cùng support)",[482,512,513],{},"2018",[482,515,516],{},"04\u002F2026 (đã EOL)",[518,519,522,528],"callout",{"color":520,"icon":521},"warning","i-lucide-star",[432,523,524,525],{},"⭐ ",[442,526,527],{},"Khuyến nghị 2026:",[436,529,530,536],{},[439,531,532,533,535],{},"Project mới: ",[442,534,486],{}," (mới nhất, Hypergraph optimizer vào Community Edition, JS in-database, PBKDF2+SHA512).",[439,537,538,539,541],{},"Project cũ đang chạy: ",[442,540,499],{}," vẫn OK (support đến 2032). Nếu đang dùng 8.0 — migrate ngay vì đã EOL 04\u002F2026.",[453,543,545],{"id":544},"highlight-mysql-97-lts","Highlight MySQL 9.7 LTS",[547,548,549,567,576,580,584,589],"card-group",{},[550,551,553,554,557,558,561,562,566],"card",{"icon":268,"title":552},"Hypergraph Optimizer (🔥 Community!)","Query planner mới dùng DPhyp algorithm — JOIN-heavy analytics nhanh ",[442,555,556],{},"2–5x"," so với optimizer cũ. Từ 9.7, ",[442,559,560],{},"vào luôn Community Edition"," (trước đây chỉ có Enterprise). Bật bằng ",[563,564,565],"code",{},"SET optimizer_switch=\"hypergraph=on\"",".",[550,568,571,572,575],{"icon":569,"title":570},"i-lucide-shield-check","PBKDF2 + SHA512","Hashing password nâng cao với ",[563,573,574],{},"caching_sha2_password"," + PBKDF2 — chống brute-force tốt hơn SHA256. Khuyến nghị cho mọi user mới.",[550,577,579],{"icon":147,"title":578},"JavaScript In-Database","Viết stored procedure \u002F function bằng JavaScript chạy trực tiếp trong MySQL nhờ GraalVM engine. Không cần compile, linh hoạt hơn SQL thuần.",[550,581,583],{"icon":263,"title":582},"OpenID Authentication","Login bằng IdP OIDC (Okta, Azure AD, Google...) — không cần password lưu trong DB. Native support từ 9.7.",[550,585,588],{"icon":586,"title":587},"i-lucide-radio","Telemetry Component (Community)","Công cụ monitoring & diagnostics từng chỉ có Enterprise — giờ vào Community. Thu thập metrics, slow query insight mà không cần tool ngoài.",[550,590,593],{"icon":591,"title":592},"i-lucide-file-json","DML on JSON Duality Views","INSERT\u002FUPDATE\u002FDELETE trực tiếp trên JSON Duality View — kết hợp sức mạnh relational + document trong cùng 1 câu lệnh. Community Edition.",[518,595,596,606],{"color":520,"icon":521},[432,597,524,598,601,602],{},[442,599,600],{},"Câu PV:"," ",[603,604,605],"em",{},"\"Hypergraph Optimizer là gì? Khi nào nên bật?\"",[607,608,609],"blockquote",{},[432,610,611,612,615,616,619,620,623],{},"\"Hypergraph Optimizer là query planner mới của MySQL dùng thuật toán DPhyp thay vì greedy search của optimizer cũ. ",[442,613,614],{},"Mạnh nhất với query JOIN 3+ bảng"," (subquery, derived table), nhanh 2-5x. Từ MySQL 9.7 có sẵn trong Community Edition. Bật linh hoạt ở 4 cấp: session (",[563,617,618],{},"SET SESSION optimizer_switch=\"hypergraph=on\"","), global, persisted (my.cnf), hoặc per-statement (",[563,621,622],{},"SELECT \u002F*+ SET_VAR(optimizer_switch='hypergraph=on') *\u002F ...","). Nên test kỹ trước khi bật global vì không phải query nào cũng được lợi.\"",[453,625,627],{"id":626},"một-số-tính-năng-khác-của-97","Một số tính năng khác của 9.7",[518,629,632,637],{"color":630,"icon":631},"primary","i-lucide-info",[432,633,634],{},[442,635,636],{},"Các cải tiến đáng chú ý trong MySQL 9.7 LTS:",[436,638,639,645,651,657,667,673,679],{},[439,640,641,644],{},[442,642,643],{},"cpuset cgroup support"," — Phát hiện chính xác số CPU trong container (Docker\u002FK8s), tránh over-subscribe thread pool.",[439,646,647,650],{},[442,648,649],{},"FTS index memory optimization"," — Giảm memory khi build full-text search index.",[439,652,653,656],{},[442,654,655],{},"Parallel reader fixes"," — Ổn định hơn cho parallel query execution.",[439,658,659,662,663,666],{},[442,660,661],{},"Downward replication"," — Cho phép replicate từ source bản cao hơn xuống replica bản thấp hơn (",[563,664,665],{},"replica_allow_higher_version_source","). Hữu ích khi upgrade dần.",[439,668,669,672],{},[442,670,671],{},"Clone plugin"," hỗ trợ cloning giữa các bản LTS liên tiếp (8.4 → 9.7).",[439,674,675,678],{},[442,676,677],{},"PGO"," (Profile Guided Optimization) cho RPM builds — hiệu suất runtime tốt hơn.",[439,680,681,601,684,687],{},[442,682,683],{},"Dynamic Data Masking",[603,685,686],{},"(Enterprise only)"," — Che dữ liệu nhạy cảm (PII) ở cấp cột bằng masking policy.",[427,689,691],{"id":690},"_2-cài-đặt-3-cách","2. Cài đặt — 3 cách",[453,693,695],{"id":694},"cách-1-khuyên-dùng-docker","Cách 1 (khuyên dùng) — Docker",[697,698,703],"pre",{"className":699,"code":700,"language":701,"meta":702,"style":702},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# MySQL 9.7 LTS (khuyên dùng cho project mới)\ndocker run --name mysql97 \\\n  -e MYSQL_ROOT_PASSWORD=mysecretpw \\\n  -e MYSQL_DATABASE=learnmysql \\\n  -p 3306:3306 \\\n  -v mysqldata:\u002Fvar\u002Flib\u002Fmysql \\\n  -d mysql:9.7\n\n# MySQL 8.4 LTS (cho project đang chạy 8.x)\ndocker run --name mysql84 \\\n  -e MYSQL_ROOT_PASSWORD=mysecretpw \\\n  -p 3307:3306 \\\n  -d mysql:8.4\n","bash","",[563,704,705,714,735,746,756,767,778,787,794,800,814,823,833],{"__ignoreMap":702},[706,707,710],"span",{"class":708,"line":709},"line",1,[706,711,713],{"class":712},"sHwdD","# MySQL 9.7 LTS (khuyên dùng cho project mới)\n",[706,715,717,721,725,728,731],{"class":708,"line":716},2,[706,718,720],{"class":719},"sBMFI","docker",[706,722,724],{"class":723},"sfazB"," run",[706,726,727],{"class":723}," --name",[706,729,730],{"class":723}," mysql97",[706,732,734],{"class":733},"sTEyZ"," \\\n",[706,736,738,741,744],{"class":708,"line":737},3,[706,739,740],{"class":723},"  -e",[706,742,743],{"class":723}," MYSQL_ROOT_PASSWORD=mysecretpw",[706,745,734],{"class":733},[706,747,749,751,754],{"class":708,"line":748},4,[706,750,740],{"class":723},[706,752,753],{"class":723}," MYSQL_DATABASE=learnmysql",[706,755,734],{"class":733},[706,757,759,762,765],{"class":708,"line":758},5,[706,760,761],{"class":723},"  -p",[706,763,764],{"class":723}," 3306:3306",[706,766,734],{"class":733},[706,768,770,773,776],{"class":708,"line":769},6,[706,771,772],{"class":723},"  -v",[706,774,775],{"class":723}," mysqldata:\u002Fvar\u002Flib\u002Fmysql",[706,777,734],{"class":733},[706,779,781,784],{"class":708,"line":780},7,[706,782,783],{"class":723},"  -d",[706,785,786],{"class":723}," mysql:9.7\n",[706,788,790],{"class":708,"line":789},8,[706,791,793],{"emptyLinePlaceholder":792},true,"\n",[706,795,797],{"class":708,"line":796},9,[706,798,799],{"class":712},"# MySQL 8.4 LTS (cho project đang chạy 8.x)\n",[706,801,803,805,807,809,812],{"class":708,"line":802},10,[706,804,720],{"class":719},[706,806,724],{"class":723},[706,808,727],{"class":723},[706,810,811],{"class":723}," mysql84",[706,813,734],{"class":733},[706,815,817,819,821],{"class":708,"line":816},11,[706,818,740],{"class":723},[706,820,743],{"class":723},[706,822,734],{"class":733},[706,824,826,828,831],{"class":708,"line":825},12,[706,827,761],{"class":723},[706,829,830],{"class":723}," 3307:3306",[706,832,734],{"class":733},[706,834,836,838],{"class":708,"line":835},13,[706,837,783],{"class":723},[706,839,840],{"class":723}," mysql:8.4\n",[453,842,844],{"id":843},"cách-2-native-install","Cách 2 — Native install",[436,846,847,853,862],{},[439,848,849,852],{},[442,850,851],{},"Windows",": tải MySQL Installer từ dev.mysql.com.",[439,854,855,858,859,566],{},[442,856,857],{},"macOS",": ",[563,860,861],{},"brew install mysql",[439,863,864,858,867,870,871,874],{},[442,865,866],{},"Ubuntu",[563,868,869],{},"sudo apt install mysql-server-9.7"," (hoặc ",[563,872,873],{},"mysql-server-8.4",").",[432,876,877],{},"Sau install:",[697,879,881],{"className":699,"code":880,"language":701,"meta":702,"style":702},"sudo mysql_secure_installation       # set password, disable remote root\nsudo systemctl start mysql\n",[563,882,883,894],{"__ignoreMap":702},[706,884,885,888,891],{"class":708,"line":709},[706,886,887],{"class":719},"sudo",[706,889,890],{"class":723}," mysql_secure_installation",[706,892,893],{"class":712},"       # set password, disable remote root\n",[706,895,896,898,901,904],{"class":708,"line":716},[706,897,887],{"class":719},[706,899,900],{"class":723}," systemctl",[706,902,903],{"class":723}," start",[706,905,906],{"class":723}," mysql\n",[453,908,910],{"id":909},"cách-3-managed-cloud","Cách 3 — Managed cloud",[436,912,913,919,924,930],{},[439,914,915,918],{},[442,916,917],{},"PlanetScale"," (Vitess-based, MySQL-compatible, free tier).",[439,920,921,566],{},[442,922,923],{},"AWS RDS \u002F Aurora MySQL",[439,925,926,929],{},[442,927,928],{},"MySQL HeatWave"," (Oracle).",[439,931,932,566],{},[442,933,934],{},"Google Cloud SQL for MySQL",[427,936,938],{"id":937},"_3-storage-engine","3. Storage engine",[518,940,941,947],{"color":630,"icon":631},[432,942,943,946],{},[442,944,945],{},"MySQL có nhiều storage engine."," Default & 99% case dùng:",[436,948,949,958,964,970],{},[439,950,951,954,955],{},[442,952,953],{},"InnoDB"," — transactional, ACID, FK, row-locking, MVCC. ",[442,956,957],{},"Mặc định nên dùng.",[439,959,960,963],{},[442,961,962],{},"MyISAM"," — non-transactional, full-text search cũ. Legacy, tránh.",[439,965,966,969],{},[442,967,968],{},"Memory"," — in-RAM, cho cache.",[439,971,972,975],{},[442,973,974],{},"CSV, Archive, Federated"," — niche.",[697,977,981],{"className":978,"code":979,"language":980,"meta":702,"style":702},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    email VARCHAR(150) NOT NULL UNIQUE\n) ENGINE = InnoDB;\n","sql",[563,982,983,988,993,998],{"__ignoreMap":702},[706,984,985],{"class":708,"line":709},[706,986,987],{},"CREATE TABLE users (\n",[706,989,990],{"class":708,"line":716},[706,991,992],{},"    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n",[706,994,995],{"class":708,"line":737},[706,996,997],{},"    email VARCHAR(150) NOT NULL UNIQUE\n",[706,999,1000],{"class":708,"line":748},[706,1001,1002],{},") ENGINE = InnoDB;\n",[518,1004,1005,1013,1088],{"color":520,"icon":521},[432,1006,524,1007,601,1010],{},[442,1008,1009],{},"Câu PV cốt lõi:",[603,1011,1012],{},"\"InnoDB vs MyISAM khác gì?\"",[458,1014,1015,1025],{},[461,1016,1017],{},[464,1018,1019,1021,1023],{},[467,1020],{},[467,1022,953],{},[467,1024,962],{},[477,1026,1027,1038,1048,1058,1068,1079],{},[464,1028,1029,1032,1035],{},[482,1030,1031],{},"Transaction",[482,1033,1034],{},"✅ ACID",[482,1036,1037],{},"❌",[464,1039,1040,1043,1046],{},[482,1041,1042],{},"Foreign key",[482,1044,1045],{},"✅",[482,1047,1037],{},[464,1049,1050,1053,1055],{},[482,1051,1052],{},"Row-level lock",[482,1054,1045],{},[482,1056,1057],{},"❌ (table lock)",[464,1059,1060,1063,1065],{},[482,1061,1062],{},"Crash recovery",[482,1064,1045],{},[482,1066,1067],{},"⚠️ Yếu",[464,1069,1070,1073,1076],{},[482,1071,1072],{},"Full-text",[482,1074,1075],{},"✅ (5.6+)",[482,1077,1078],{},"✅ (legacy)",[464,1080,1081,1084,1086],{},[482,1082,1083],{},"Default",[482,1085,1045],{},[482,1087,1037],{},[432,1089,1090,1093],{},[442,1091,1092],{},"Luôn dùng InnoDB."," MyISAM chỉ còn cho legacy schema.",[427,1095,1097],{"id":1096},"_4-tool-quản-lý","4. Tool quản lý",[458,1099,1100,1110],{},[461,1101,1102],{},[464,1103,1104,1107],{},[467,1105,1106],{},"Tool",[467,1108,1109],{},"Ghi chú",[477,1111,1112,1122,1132,1142,1152,1162],{},[464,1113,1114,1119],{},[482,1115,1116],{},[442,1117,1118],{},"MySQL Workbench",[482,1120,1121],{},"Chính chủ Oracle, free, all-platform.",[464,1123,1124,1129],{},[482,1125,1126],{},[442,1127,1128],{},"DBeaver",[482,1130,1131],{},"Free, đa DB.",[464,1133,1134,1139],{},[482,1135,1136],{},[442,1137,1138],{},"TablePlus",[482,1140,1141],{},"UI đẹp, free version giới hạn.",[464,1143,1144,1149],{},[482,1145,1146],{},[442,1147,1148],{},"phpMyAdmin",[482,1150,1151],{},"Web-based, classic LAMP stack.",[464,1153,1154,1159],{},[482,1155,1156],{},[442,1157,1158],{},"DataGrip",[482,1160,1161],{},"JetBrains, trả phí.",[464,1163,1164,1169],{},[482,1165,1166],{},[442,1167,1168],{},"mysql CLI",[482,1170,1171],{},"Built-in.",[427,1173,1175],{"id":1174},"_5-cli-cơ-bản","5. CLI cơ bản",[697,1177,1179],{"className":699,"code":1178,"language":701,"meta":702,"style":702},"# Kết nối\nmysql -h localhost -P 3306 -u root -p\n\n# In một câu lệnh\nmysql -u root -p -e \"SHOW DATABASES;\"\n\n# Import file\nmysql -u root -p learnmysql \u003C schema.sql\n\n# Export\nmysqldump -u root -p learnmysql > backup.sql\n",[563,1180,1181,1186,1213,1217,1222,1246,1250,1255,1274,1278,1283],{"__ignoreMap":702},[706,1182,1183],{"class":708,"line":709},[706,1184,1185],{"class":712},"# Kết nối\n",[706,1187,1188,1191,1194,1197,1200,1204,1207,1210],{"class":708,"line":716},[706,1189,1190],{"class":719},"mysql",[706,1192,1193],{"class":723}," -h",[706,1195,1196],{"class":723}," localhost",[706,1198,1199],{"class":723}," -P",[706,1201,1203],{"class":1202},"sbssI"," 3306",[706,1205,1206],{"class":723}," -u",[706,1208,1209],{"class":723}," root",[706,1211,1212],{"class":723}," -p\n",[706,1214,1215],{"class":708,"line":737},[706,1216,793],{"emptyLinePlaceholder":792},[706,1218,1219],{"class":708,"line":748},[706,1220,1221],{"class":712},"# In một câu lệnh\n",[706,1223,1224,1226,1228,1230,1233,1236,1240,1243],{"class":708,"line":758},[706,1225,1190],{"class":719},[706,1227,1206],{"class":723},[706,1229,1209],{"class":723},[706,1231,1232],{"class":723}," -p",[706,1234,1235],{"class":723}," -e",[706,1237,1239],{"class":1238},"sMK4o"," \"",[706,1241,1242],{"class":723},"SHOW DATABASES;",[706,1244,1245],{"class":1238},"\"\n",[706,1247,1248],{"class":708,"line":769},[706,1249,793],{"emptyLinePlaceholder":792},[706,1251,1252],{"class":708,"line":780},[706,1253,1254],{"class":712},"# Import file\n",[706,1256,1257,1259,1261,1263,1265,1268,1271],{"class":708,"line":789},[706,1258,1190],{"class":719},[706,1260,1206],{"class":723},[706,1262,1209],{"class":723},[706,1264,1232],{"class":723},[706,1266,1267],{"class":723}," learnmysql",[706,1269,1270],{"class":1238}," \u003C",[706,1272,1273],{"class":723}," schema.sql\n",[706,1275,1276],{"class":708,"line":796},[706,1277,793],{"emptyLinePlaceholder":792},[706,1279,1280],{"class":708,"line":802},[706,1281,1282],{"class":712},"# Export\n",[706,1284,1285,1288,1290,1292,1294,1296,1299],{"class":708,"line":816},[706,1286,1287],{"class":719},"mysqldump",[706,1289,1206],{"class":723},[706,1291,1209],{"class":723},[706,1293,1232],{"class":723},[706,1295,1267],{"class":723},[706,1297,1298],{"class":1238}," >",[706,1300,1301],{"class":723}," backup.sql\n",[453,1303,1305],{"id":1304},"lệnh-trong-mysql-cli","Lệnh trong mysql CLI",[458,1307,1308,1318],{},[461,1309,1310],{},[464,1311,1312,1315],{},[467,1313,1314],{},"Lệnh",[467,1316,1317],{},"Tác dụng",[477,1319,1320,1329,1339,1349,1363,1373,1383,1393,1403],{},[464,1321,1322,1326],{},[482,1323,1324],{},[563,1325,1242],{},[482,1327,1328],{},"List DB",[464,1330,1331,1336],{},[482,1332,1333],{},[563,1334,1335],{},"USE dbname;",[482,1337,1338],{},"Chọn DB",[464,1340,1341,1346],{},[482,1342,1343],{},[563,1344,1345],{},"SHOW TABLES;",[482,1347,1348],{},"List table trong DB hiện tại",[464,1350,1351,1360],{},[482,1352,1353,1356,1357],{},[563,1354,1355],{},"DESCRIBE tbl;"," \u002F ",[563,1358,1359],{},"DESC tbl;",[482,1361,1362],{},"Xem schema bảng",[464,1364,1365,1370],{},[482,1366,1367],{},[563,1368,1369],{},"SHOW CREATE TABLE tbl;",[482,1371,1372],{},"Xem CREATE statement",[464,1374,1375,1380],{},[482,1376,1377],{},[563,1378,1379],{},"SHOW INDEX FROM tbl;",[482,1381,1382],{},"List index",[464,1384,1385,1390],{},[482,1386,1387],{},[563,1388,1389],{},"\\q",[482,1391,1392],{},"Quit",[464,1394,1395,1400],{},[482,1396,1397],{},[563,1398,1399],{},"\\!",[482,1401,1402],{},"Run shell command",[464,1404,1405,1410],{},[482,1406,1407],{},[563,1408,1409],{},"STATUS;",[482,1411,1412],{},"Connection info",[427,1414,1416],{"id":1415},"_6-tạo-database-đầu-tiên","6. Tạo database đầu tiên",[697,1418,1420],{"className":978,"code":1419,"language":980,"meta":702,"style":702},"CREATE DATABASE learnmysql\n    CHARACTER SET utf8mb4\n    COLLATE utf8mb4_0900_ai_ci;\nUSE learnmysql;\n\nCREATE TABLE greetings (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    text VARCHAR(200) NOT NULL,\n    created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n) ENGINE = InnoDB;\n\nINSERT INTO greetings (text) VALUES ('Xin chào MySQL 9.7!');\n\nSELECT * FROM greetings;\n",[563,1421,1422,1427,1432,1437,1442,1446,1451,1455,1460,1465,1469,1473,1478,1482],{"__ignoreMap":702},[706,1423,1424],{"class":708,"line":709},[706,1425,1426],{},"CREATE DATABASE learnmysql\n",[706,1428,1429],{"class":708,"line":716},[706,1430,1431],{},"    CHARACTER SET utf8mb4\n",[706,1433,1434],{"class":708,"line":737},[706,1435,1436],{},"    COLLATE utf8mb4_0900_ai_ci;\n",[706,1438,1439],{"class":708,"line":748},[706,1440,1441],{},"USE learnmysql;\n",[706,1443,1444],{"class":708,"line":758},[706,1445,793],{"emptyLinePlaceholder":792},[706,1447,1448],{"class":708,"line":769},[706,1449,1450],{},"CREATE TABLE greetings (\n",[706,1452,1453],{"class":708,"line":780},[706,1454,992],{},[706,1456,1457],{"class":708,"line":789},[706,1458,1459],{},"    text VARCHAR(200) NOT NULL,\n",[706,1461,1462],{"class":708,"line":796},[706,1463,1464],{},"    created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n",[706,1466,1467],{"class":708,"line":802},[706,1468,1002],{},[706,1470,1471],{"class":708,"line":816},[706,1472,793],{"emptyLinePlaceholder":792},[706,1474,1475],{"class":708,"line":825},[706,1476,1477],{},"INSERT INTO greetings (text) VALUES ('Xin chào MySQL 9.7!');\n",[706,1479,1480],{"class":708,"line":835},[706,1481,793],{"emptyLinePlaceholder":792},[706,1483,1485],{"class":708,"line":1484},14,[706,1486,1487],{},"SELECT * FROM greetings;\n",[518,1489,1490,1495],{"color":630,"icon":268},[432,1491,1492],{},[442,1493,1494],{},"MySQL conventions:",[436,1496,1497,1508,1514,1520,1530,1536,1542],{},[439,1498,1499,1500,1503,1504,1507],{},"Default ",[563,1501,1502],{},"utf8mb4"," (full Unicode bao gồm emoji). Tránh ",[563,1505,1506],{},"utf8"," cũ (3 byte, không emoji).",[439,1509,1510,1511,566],{},"Identifier với backtick ",[563,1512,1513],{},"`Name`",[439,1515,1516,1519],{},[563,1517,1518],{},"AUTO_INCREMENT"," (1 từ, không space) cho auto-id.",[439,1521,1522,1525,1526,1529],{},[563,1523,1524],{},"DATETIME"," vs ",[563,1527,1528],{},"TIMESTAMP",": TIMESTAMP convert UTC, DATETIME lưu nguyên giá trị.",[439,1531,1532,1535],{},[563,1533,1534],{},"LIMIT N OFFSET M",", không có TOP.",[439,1537,1538,1539,566],{},"Lệnh kết thúc ",[563,1540,1541],{},";",[439,1543,1544,1545,566],{},"Không có ",[563,1546,1547],{},"GO",[427,1549,1551],{"id":1550},"_7-character-set-collation","7. Character set & collation",[432,1553,1554],{},"⭐ Cực kỳ quan trọng — sai charset là gốc lỗi tiếng Việt:",[697,1556,1558],{"className":978,"code":1557,"language":980,"meta":702,"style":702},"-- Xem charset hiện tại\nSHOW VARIABLES LIKE 'character_set%';\nSHOW VARIABLES LIKE 'collation%';\n\n-- Cấp database\nALTER DATABASE learnmysql\n    CHARACTER SET utf8mb4\n    COLLATE utf8mb4_0900_ai_ci;\n\n-- Cấp bảng\nALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;\n",[563,1559,1560,1565,1570,1575,1579,1584,1589,1593,1597,1601,1606],{"__ignoreMap":702},[706,1561,1562],{"class":708,"line":709},[706,1563,1564],{},"-- Xem charset hiện tại\n",[706,1566,1567],{"class":708,"line":716},[706,1568,1569],{},"SHOW VARIABLES LIKE 'character_set%';\n",[706,1571,1572],{"class":708,"line":737},[706,1573,1574],{},"SHOW VARIABLES LIKE 'collation%';\n",[706,1576,1577],{"class":708,"line":748},[706,1578,793],{"emptyLinePlaceholder":792},[706,1580,1581],{"class":708,"line":758},[706,1582,1583],{},"-- Cấp database\n",[706,1585,1586],{"class":708,"line":769},[706,1587,1588],{},"ALTER DATABASE learnmysql\n",[706,1590,1591],{"class":708,"line":780},[706,1592,1431],{},[706,1594,1595],{"class":708,"line":789},[706,1596,1436],{},[706,1598,1599],{"class":708,"line":796},[706,1600,793],{"emptyLinePlaceholder":792},[706,1602,1603],{"class":708,"line":802},[706,1604,1605],{},"-- Cấp bảng\n",[706,1607,1608],{"class":708,"line":816},[706,1609,1610],{},"ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;\n",[432,1612,1613],{},"Suffix collation:",[436,1615,1616,1622,1628],{},[439,1617,1618,1621],{},[563,1619,1620],{},"_ai_ci",": accent-insensitive, case-insensitive (\"a\" = \"A\" = \"á\").",[439,1623,1624,1627],{},[563,1625,1626],{},"_as_cs",": accent-sensitive, case-sensitive.",[439,1629,1630,1633],{},[563,1631,1632],{},"_bin",": binary, sensitive tất cả.",[518,1635,1636,1643],{"color":520,"icon":521},[432,1637,524,1638,601,1640],{},[442,1639,600],{},[603,1641,1642],{},"\"utf8 và utf8mb4 khác gì?\"",[607,1644,1645],{},[432,1646,1647,1648,1650,1651,1653,1654,1659],{},"\"",[563,1649,1506],{}," của MySQL chỉ là 3-byte UTF-8 (không bao emoji, không bao 1 số ký tự Asian). ",[563,1652,1502],{}," là 4-byte UTF-8 đầy đủ chuẩn. ",[442,1655,1656,1657],{},"Luôn dùng ",[563,1658,1502],{}," cho mọi project mới. Default từ MySQL 8.0.\"",[427,1661,1663],{"id":1662},"_8-cấu-hình-user-quyền","8. Cấu hình user & quyền",[697,1665,1667],{"className":978,"code":1666,"language":980,"meta":702,"style":702},"-- Tạo user (9.7: mặc định PBKDF2+SHA512 qua caching_sha2_password)\nCREATE USER 'appuser'@'%' IDENTIFIED BY 'apppwd';\n\n-- Grant quyền\nGRANT SELECT, INSERT, UPDATE, DELETE ON learnmysql.* TO 'appuser'@'%';\nFLUSH PRIVILEGES;\n\n-- Đổi password\nALTER USER 'appuser'@'%' IDENTIFIED BY 'newpwd';\n\n-- Tạo user với plugin auth cũ (chỉ khi cần legacy app)\nCREATE USER 'olduser'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';\n-- ⚠️ 8.4+ phải bật mysql_native_password explicit trong my.cnf\n",[563,1668,1669,1674,1679,1683,1688,1693,1698,1702,1707,1712,1716,1721,1726],{"__ignoreMap":702},[706,1670,1671],{"class":708,"line":709},[706,1672,1673],{},"-- Tạo user (9.7: mặc định PBKDF2+SHA512 qua caching_sha2_password)\n",[706,1675,1676],{"class":708,"line":716},[706,1677,1678],{},"CREATE USER 'appuser'@'%' IDENTIFIED BY 'apppwd';\n",[706,1680,1681],{"class":708,"line":737},[706,1682,793],{"emptyLinePlaceholder":792},[706,1684,1685],{"class":708,"line":748},[706,1686,1687],{},"-- Grant quyền\n",[706,1689,1690],{"class":708,"line":758},[706,1691,1692],{},"GRANT SELECT, INSERT, UPDATE, DELETE ON learnmysql.* TO 'appuser'@'%';\n",[706,1694,1695],{"class":708,"line":769},[706,1696,1697],{},"FLUSH PRIVILEGES;\n",[706,1699,1700],{"class":708,"line":780},[706,1701,793],{"emptyLinePlaceholder":792},[706,1703,1704],{"class":708,"line":789},[706,1705,1706],{},"-- Đổi password\n",[706,1708,1709],{"class":708,"line":796},[706,1710,1711],{},"ALTER USER 'appuser'@'%' IDENTIFIED BY 'newpwd';\n",[706,1713,1714],{"class":708,"line":802},[706,1715,793],{"emptyLinePlaceholder":792},[706,1717,1718],{"class":708,"line":816},[706,1719,1720],{},"-- Tạo user với plugin auth cũ (chỉ khi cần legacy app)\n",[706,1722,1723],{"class":708,"line":825},[706,1724,1725],{},"CREATE USER 'olduser'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';\n",[706,1727,1728],{"class":708,"line":835},[706,1729,1730],{},"-- ⚠️ 8.4+ phải bật mysql_native_password explicit trong my.cnf\n",[518,1732,1734,1746],{"color":520,"icon":1733},"i-lucide-alert-triangle",[432,1735,1736,601,1739,601,1742,1745],{},[442,1737,1738],{},"MySQL 8.4+ bẫy:",[563,1740,1741],{},"mysql_native_password",[442,1743,1744],{},"disabled mặc định",". Nếu app cũ dùng plugin này → connection lỗi. Bật lại:",[697,1747,1751],{"className":1748,"code":1749,"language":1750,"meta":702,"style":702},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# \u002Fetc\u002Fmysql\u002Fmy.cnf\n[mysqld]\nmysql_native_password = ON\n","ini",[563,1752,1753,1758,1763],{"__ignoreMap":702},[706,1754,1755],{"class":708,"line":709},[706,1756,1757],{},"# \u002Fetc\u002Fmysql\u002Fmy.cnf\n",[706,1759,1760],{"class":708,"line":716},[706,1761,1762],{},"[mysqld]\n",[706,1764,1765],{"class":708,"line":737},[706,1766,1767],{},"mysql_native_password = ON\n",[518,1769,1770,1777],{"color":520,"icon":521},[432,1771,524,1772,601,1774],{},[442,1773,600],{},[603,1775,1776],{},"\"caching_sha2_password ở 8.4 và 9.7 khác gì?\"",[607,1778,1779],{},[432,1780,1781,1782,1784,1785,1788],{},"\"Từ 8.4, ",[563,1783,574],{}," là auth plugin mặc định dùng SHA256. Từ ",[442,1786,1787],{},"MySQL 9.7, nâng cấp lên PBKDF2+SHA512"," — thêm salt rounds và key stretching, chống brute-force mạnh hơn đáng kể. Khi tạo user mới trên 9.7, password tự động được hash bằng PBKDF2. User migrate từ 8.4 lên 9.7 vẫn dùng SHA256 cũ cho đến khi đổi password.\"",[427,1790,1792],{"id":1791},"_9-đặc-thù-mysql-cần-biết-ngay","9. Đặc thù MySQL cần biết ngay",[518,1794,1795],{"color":630,"icon":631},[436,1796,1797,1814,1823,1836,1845,1860,1868,1880,1888,1894],{},[439,1798,1799,1802,1803,1805,1806,1809,1810,1813],{},[442,1800,1801],{},"Identifier",": backtick ",[563,1804,1513],{}," (vs ",[563,1807,1808],{},"[]"," SQL Server, ",[563,1811,1812],{},"\"\""," Postgres).",[439,1815,1816,858,1819,1822],{},[442,1817,1818],{},"String",[563,1820,1821],{},"'text'"," UTF-8 (utf8mb4).",[439,1824,1825,858,1828,1831,1832,1835],{},[442,1826,1827],{},"Concat",[563,1829,1830],{},"CONCAT(a, b, c)"," — ",[563,1833,1834],{},"+"," là cộng số, không nối chuỗi!",[439,1837,1838,858,1841,1844],{},[442,1839,1840],{},"Boolean",[563,1842,1843],{},"TINYINT(1)"," (0\u002F1) — không có BOOLEAN thật.",[439,1846,1847,858,1850,1853,1854,1853,1857,566],{},[442,1848,1849],{},"Now",[563,1851,1852],{},"NOW()",", ",[563,1855,1856],{},"CURRENT_TIMESTAMP",[563,1858,1859],{},"UTC_TIMESTAMP()",[439,1861,1862,858,1865,1867],{},[442,1863,1864],{},"Auto-increment",[563,1866,1518],{}," (1 từ).",[439,1869,1870,858,1873,1876,1877,566],{},[442,1871,1872],{},"Limit",[563,1874,1875],{},"LIMIT n OFFSET m"," hoặc ",[563,1878,1879],{},"LIMIT m, n",[439,1881,1882,858,1885,566],{},[442,1883,1884],{},"UPSERT",[563,1886,1887],{},"INSERT ... ON DUPLICATE KEY UPDATE ...",[439,1889,1890,1893],{},[442,1891,1892],{},"Schema = Database"," — không tách như Postgres\u002FSQL Server.",[439,1895,1896,1899],{},[442,1897,1898],{},"Case sensitivity",": Linux phân biệt hoa thường (case-sensitive identifier), Windows không.",[518,1901,1903,1904],{"color":630,"icon":1902},"i-lucide-arrow-right","Tiếp theo: ",[1905,1906,1907],"a",{"href":232},"Cú pháp MySQL cơ bản",[1909,1910,1911],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":702,"searchDepth":716,"depth":716,"links":1913},[1914,1919,1924,1925,1926,1929,1930,1931,1932],{"id":429,"depth":716,"text":430,"children":1915},[1916,1917,1918],{"id":455,"depth":737,"text":456},{"id":544,"depth":737,"text":545},{"id":626,"depth":737,"text":627},{"id":690,"depth":716,"text":691,"children":1920},[1921,1922,1923],{"id":694,"depth":737,"text":695},{"id":843,"depth":737,"text":844},{"id":909,"depth":737,"text":910},{"id":937,"depth":716,"text":938},{"id":1096,"depth":716,"text":1097},{"id":1174,"depth":716,"text":1175,"children":1927},[1928],{"id":1304,"depth":737,"text":1305},{"id":1415,"depth":716,"text":1416},{"id":1550,"depth":716,"text":1551},{"id":1662,"depth":716,"text":1663},{"id":1791,"depth":716,"text":1792},"MySQL — RDBMS open-source phổ biến nhất. Bản 9.7 LTS mới (04\u002F2026, đến ~2034) với Hypergraph Optimizer vào Community, PBKDF2+SHA512, JavaScript in-database.","md",null,{},{"title":173,"icon":176},{"title":422,"description":1933},"oSRuwcCrq7gY-dkz-nNSZ79oy9qcctgpCFGuLTYiYkY",[1941,1943],{"title":219,"path":220,"stem":221,"description":1942,"icon":96,"children":-1},"Hướng dẫn toàn diện kết nối PostgreSQL từ C# dùng Npgsql — CRUD, transaction, gọi function\u002Fstored procedure, import CSV. Dành cho dev .NET.",{"title":178,"path":232,"stem":233,"description":1944,"icon":181,"children":-1},"Kiểu dữ liệu, DDL, DML, UPSERT (ON DUPLICATE KEY), function — gốc MySQL 8.4 \u002F 9.x.",1783490366340]