{"id":709,"date":"2026-07-30T08:57:13","date_gmt":"2026-07-30T01:57:13","guid":{"rendered":"https:\/\/komunitech.com\/blog\/?p=709"},"modified":"2026-07-30T08:57:13","modified_gmt":"2026-07-30T01:57:13","slug":"cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis","status":"publish","type":"post","link":"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/","title":{"rendered":"Cara Kasih OpenClaw Akses Database (MySQL\/PostgreSQL) buat AI Agent Bisnis"},"content":{"rendered":"<p>tl;dr: Biar OpenClaw bisa baca data bisnismu langsung dari database (MySQL\/PostgreSQL) \u2014 misal cek stok, rekap penjualan, atau jawab &#8220;berapa order hari ini&#8221; \u2014 kamu kasih agent akses lewat koneksi database yang aman. Kuncinya: pakai user database read-only khusus buat agent (bukan user admin), simpan kredensial di environment variable (bukan di prompt), dan batasi agent cuma ke tabel yang perlu. Artikel ini jelasin cara amannya + kenapa jangan asal kasih akses penuh.<\/p>\n<p>Chatbot biasa cuma bisa jawab dari yang kamu ketik. Tapi AI agent yang beneran berguna buat bisnis harus bisa <strong>baca data nyata<\/strong> \u2014 stok barang, riwayat order, data pelanggan. Nah, data itu biasanya ada di database (MySQL atau PostgreSQL). Pertanyaannya: gimana cara ngasih OpenClaw akses ke database tanpa bikin lubang keamanan?<\/p>\n<p>Ini tutorial yang jarang dibahas \u2014 kebanyakan panduan OpenClaw berhenti di &#8220;cara install&#8221; atau &#8220;balas chat&#8221;. Padahal akses database inilah yang bikin agent naik level dari mainan jadi alat bisnis beneran. Kalau kamu udah paham cara ngasih agent akses ke layanan luar (kayak di <a href=\"https:\/\/komunitech.com\/blog\/tutorial\/tutorial-cara-kasih-akses-openclaw-biar-bisa-baca-tulis-google-drive-docs-dan-sheets-2026\/\">tutorial akses Google Drive<\/a>), konsepnya mirip \u2014 tapi database butuh kehati-hatian ekstra.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<label for=\"ez-toc-cssicon-toggle-item-6aad0f385b5e0\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"ez-toc-cssicon\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6aad0f385b5e0\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Kenapa_agent_perlu_akses_database\" >Kenapa agent perlu akses database?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Aturan_emas_jangan_asal_kasih_akses_penuh\" >Aturan emas: jangan asal kasih akses penuh<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Langkah_1_Buat_user_database_read-only_khusus_agent\" >Langkah 1: Buat user database read-only khusus agent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Langkah_2_Simpan_kredensial_database_dengan_aman\" >Langkah 2: Simpan kredensial database dengan aman<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Langkah_3_Beri_OpenClaw_kemampuan_query_database\" >Langkah 3: Beri OpenClaw kemampuan query database<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Langkah_4_Batasi_pantau_lapisan_aman_tambahan\" >Langkah 4: Batasi &amp; pantau (lapisan aman tambahan)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Kenapa_self-hosted_bikin_ini_lebih_aman\" >Kenapa self-hosted bikin ini lebih aman<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Pertanyaan_yang_Sering_Ditanya\" >Pertanyaan yang Sering Ditanya<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Apakah_aman_memberi_AI_agent_akses_ke_database_bisnis\" >Apakah aman memberi AI agent akses ke database bisnis?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Kenapa_harus_pakai_user_read-only_untuk_agent\" >Kenapa harus pakai user read-only untuk agent?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Di_mana_menyimpan_password_database_untuk_OpenClaw\" >Di mana menyimpan password database untuk OpenClaw?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Apakah_OpenClaw_bisa_menulis_atau_mengubah_data_di_database\" >Apakah OpenClaw bisa menulis atau mengubah data di database?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/komunitech.com\/blog\/tutorial\/cara-kasih-openclaw-akses-database-mysql-postgresql-buat-ai-agent-bisnis\/#Database_apa_yang_didukung_untuk_integrasi_seperti_ini\" >Database apa yang didukung untuk integrasi seperti ini?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Kenapa_agent_perlu_akses_database\"><\/span>Kenapa agent perlu akses database?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Contoh nyata yang langsung kepakai:<\/p>\n<ul>\n<li>&#8220;Berapa total penjualan minggu ini?&#8221; \u2192 agent query database, jawab dengan angka riil.<\/li>\n<li>&#8220;Stok produk X masih ada berapa?&#8221; \u2192 agent cek tabel inventory.<\/li>\n<li>&#8220;Kirim laporan order pending tiap pagi&#8221; \u2192 agent baca database, rangkum, kirim ke Telegram.<\/li>\n<\/ul>\n<p>Tanpa akses database, agent cuma bisa nebak atau minta kamu copas data manual. Dengan akses, dia jadi asisten yang tahu kondisi bisnismu real-time.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Aturan_emas_jangan_asal_kasih_akses_penuh\"><\/span>Aturan emas: jangan asal kasih akses penuh<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ini bagian paling penting, dan yang paling sering dilewat orang. Database itu jantung data bisnismu \u2014 kalau agent (atau seseorang yang nyalahgunakan agent) punya akses tulis\/hapus penuh, satu perintah salah bisa hapus data pelanggan atau kacauin transaksi. Prinsipnya:<\/p>\n<ul>\n<li><strong>Buat user database khusus buat agent<\/strong> \u2014 jangan pakai user root\/admin.<\/li>\n<li><strong>Kasih izin READ-ONLY<\/strong> (cuma SELECT) kalau agent cuma perlu baca. Ini nutup risiko agent gak sengaja ngubah\/hapus data.<\/li>\n<li><strong>Batasi ke tabel\/database yang perlu aja<\/strong> \u2014 agent gak perlu akses ke seluruh database kalau cuma butuh tabel order &amp; inventory.<\/li>\n<\/ul>\n<p>Prinsip ini namanya <em>least privilege<\/em>: kasih akses seminimal yang diperlukan, gak lebih.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Langkah_1_Buat_user_database_read-only_khusus_agent\"><\/span>Langkah 1: Buat user database read-only khusus agent<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Di MySQL\/PostgreSQL, buat user baru yang cuma punya izin SELECT ke tabel yang dibutuhkan. Contoh konsepnya (sesuaikan sama database-mu):<\/p>\n<ul>\n<li>Buat user baru, misal <code>openclaw_reader<\/code>, dengan password kuat.<\/li>\n<li>Kasih izin <code>SELECT<\/code> aja, ke database\/tabel spesifik (misal cuma tabel <code>orders<\/code> dan <code>products<\/code>).<\/li>\n<li>Jangan kasih <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>, <code>DROP<\/code> \u2014 kecuali kamu memang butuh agent nulis data (dan itu pun harus super hati-hati).<\/li>\n<\/ul>\n<p>Dengan user read-only, meski ada perintah aneh yang lolos ke agent, dia gak bisa ngerusak data \u2014 paling banter cuma baca.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Langkah_2_Simpan_kredensial_database_dengan_aman\"><\/span>Langkah 2: Simpan kredensial database dengan aman<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kredensial database (host, nama database, user, password) harus disimpan di <strong>environment variable<\/strong> di server OpenClaw \u2014 <strong>bukan<\/strong> ditulis di prompt atau di file yang gampang ke-share.<\/p>\n<ul>\n<li>Simpan di file konfigurasi environment server (yang aksesnya terbatas), bukan di teks percakapan.<\/li>\n<li>Jangan pernah masukin password database ke dalam prompt yang dikirim ke model AI \u2014 model gak perlu tahu passwordnya, cuma perlu hasil query-nya.<\/li>\n<li>Batasi permission file config biar gak kebaca sembarangan.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Langkah_3_Beri_OpenClaw_kemampuan_query_database\"><\/span>Langkah 3: Beri OpenClaw kemampuan query database<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>OpenClaw menjalankan tugas lewat kemampuan eksekusi (exec) dan tools. Untuk akses database, prinsipnya: agent menjalankan query lewat client database (atau skrip kecil) yang membaca kredensial dari environment variable, mengeksekusi query yang dibutuhkan, lalu mengembalikan hasilnya ke agent buat diproses\/dijawab.<\/p>\n<p>Alur amannya:<\/p>\n<ol>\n<li>Kamu tanya agent sesuatu (&#8220;berapa order hari ini?&#8221;).<\/li>\n<li>Agent menyusun query SELECT yang sesuai.<\/li>\n<li>Query dijalankan pakai user read-only + kredensial dari environment.<\/li>\n<li>Hasilnya dibalikin ke agent, agent rangkum jadi jawaban natural.<\/li>\n<\/ol>\n<p>Karena user-nya read-only, sejauh apapun query yang disusun agent, dia gak bisa ngubah data.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Langkah_4_Batasi_pantau_lapisan_aman_tambahan\"><\/span>Langkah 4: Batasi &amp; pantau (lapisan aman tambahan)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Whitelist query kalau bisa<\/strong> \u2014 untuk kasus sensitif, batasi agent cuma ke query\/tabel tertentu yang udah kamu setujui, bukan bebas query apa aja.<\/li>\n<li><strong>Audit log<\/strong> \u2014 catat query apa yang dijalankan agent, biar ada jejak kalau ada yang aneh.<\/li>\n<li><strong>Anonimkan data sensitif<\/strong> \u2014 kalau hasil query mengandung data pribadi (NIK, no HP, email), pertimbangkan menyaringnya sebelum diproses model, apalagi kalau pakai model eksternal.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Kenapa_self-hosted_bikin_ini_lebih_aman\"><\/span>Kenapa self-hosted bikin ini lebih aman<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>OpenClaw yang jalan self-hosted (di server sendiri) ngasih kamu kontrol penuh: kredensial database gak pernah keluar dari servermu, dan kamu bisa atur agent + database di jaringan yang sama tanpa expose ke internet. Ini beda dari layanan SaaS yang datanya lewat server pihak ketiga \u2014 buat data bisnis sensitif, kontrol ini penting. Konsep menjaga data aman saat pakai AI kami bahas lebih dalam di <a href=\"https:\/\/komunitech.com\/blog\/karyawan-ai\/cara-menjaga-data-perusahaan-aman-saat-menggunakan-api-ai-agent-pihak-ketiga\/\">panduan menjaga data perusahaan tetap aman<\/a>.<\/p>\n<p>Merancang agent yang aman baca database bisnis itu skill yang berharga. Kalau kamu mau belajar bikin agent seperti ini dengan pendampingan, konsepnya diajarin di <a href=\"https:\/\/komunitech.com\/blog\/karyawan-ai\/cara-membuat-karyawan-ai-untuk-bisnis-langkah-demi-langkah-2026\/\">panduan membuat Karyawan AI langkah demi langkah<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Pertanyaan_yang_Sering_Ditanya\"><\/span>Pertanyaan yang Sering Ditanya<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Apakah_aman_memberi_AI_agent_akses_ke_database_bisnis\"><\/span>Apakah aman memberi AI agent akses ke database bisnis?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aman jika dilakukan dengan benar: gunakan user database read-only khusus untuk agent (bukan user admin), batasi aksesnya hanya ke tabel yang diperlukan, simpan kredensial di environment variable, dan jangan pernah memasukkan password ke dalam prompt. Prinsip least privilege ini memastikan agent tidak bisa merusak data meski ada perintah yang tidak diinginkan.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kenapa_harus_pakai_user_read-only_untuk_agent\"><\/span>Kenapa harus pakai user read-only untuk agent?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Karena dengan izin SELECT saja (read-only), agent hanya bisa membaca data dan tidak bisa mengubah, menghapus, atau merusak isi database. Ini pengaman utama: sejauh apapun query yang disusun agent, dampak terburuknya cuma membaca data, bukan menghancurkannya.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Di_mana_menyimpan_password_database_untuk_OpenClaw\"><\/span>Di mana menyimpan password database untuk OpenClaw?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Simpan di environment variable pada server OpenClaw, di file konfigurasi dengan permission terbatas. Jangan menulis password di dalam prompt percakapan atau file yang mudah diakses. Model AI tidak perlu tahu passwordnya, cuma perlu hasil query-nya.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Apakah_OpenClaw_bisa_menulis_atau_mengubah_data_di_database\"><\/span>Apakah OpenClaw bisa menulis atau mengubah data di database?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Secara teknis bisa jika kamu memberi izin tulis, tapi sangat tidak disarankan untuk kebanyakan kasus. Untuk keamanan, mulai dengan akses read-only. Jika memang butuh agent menulis data, terapkan pengaman ekstra seperti whitelist query, konfirmasi manusia sebelum eksekusi, dan audit log.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Database_apa_yang_didukung_untuk_integrasi_seperti_ini\"><\/span>Database apa yang didukung untuk integrasi seperti ini?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Prinsipnya berlaku untuk database relasional umum seperti MySQL dan PostgreSQL, selama ada client atau cara menjalankan query dari server tempat OpenClaw berjalan. Yang penting bukan jenis database-nya, tapi penerapan prinsip keamanan: user read-only, kredensial aman, dan akses terbatas.<\/p>\n<hr>\n<p><em>Disclaimer: Artikel ini bersifat edukasi tentang prinsip keamanan integrasi. Detail perintah dan konfigurasi database bisa berbeda per versi dan sistem \u2014 verifikasi ke dokumentasi resmi MySQL\/PostgreSQL dan OpenClaw, serta konsultasikan dengan tim IT\/DBA untuk implementasi di sistem produksi.<\/em><\/p>\n<p><strong>Referensi:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/docs.openclaw.ai\/\" target=\"_blank\" rel=\"noopener nofollow\">Dokumentasi OpenClaw<\/a><\/li>\n<li><a href=\"https:\/\/dev.mysql.com\/doc\/\" target=\"_blank\" rel=\"noopener nofollow\">MySQL Documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.postgresql.org\/docs\/\" target=\"_blank\" rel=\"noopener nofollow\">PostgreSQL Documentation<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>tl;dr: Biar OpenClaw bisa baca data bisnismu langsung dari database (MySQL\/PostgreSQL) \u2014 misal cek stok, rekap penjualan, atau jawab &#8220;berapa order hari ini&#8221; \u2014 kamu kasih agent akses lewat koneksi database yang aman. Kuncinya: pakai user database read-only khusus buat agent (bukan user admin), simpan kredensial di environment variable (bukan di prompt), dan batasi agent [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":711,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[75],"tags":[],"class_list":["post-709","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial"],"_links":{"self":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/comments?post=709"}],"version-history":[{"count":2,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"predecessor-version":[{"id":712,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/posts\/709\/revisions\/712"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media\/711"}],"wp:attachment":[{"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/komunitech.com\/blog\/wp-json\/wp\/v2\/tags?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}