Bagaimana cara saya melindungi kata sandi mysql?

Keamanan basis data mencakup mengizinkan atau melarang tindakan pengguna pada basis data dan objek di dalamnya. Ketika Anda akan membuat aplikasi database, kebijakan keamanan adalah langkah pertama. Kebijakan keamanan aplikasi adalah daftar persyaratan dan aturan keamanan aplikasi yang mengatur akses pengguna ke objek database. Bab ini membahas aspek keamanan aplikasi dan fitur-fitur Database MySQL yang berisi topik berikut

Isi

Masalah keamanan umum MySQL

Pedoman Keamanan

  • Kecuali akun root MySQL tidak mengizinkan siapa pun untuk mengakses tabel pengguna di database MySQL
  • Gunakan pernyataan GRANT dan REVOKE untuk mengontrol akses ke MySQL. Jangan memberikan hak istimewa yang tidak perlu dan jangan pernah memberikan hak istimewa kepada semua host
  • Jangan pernah menyimpan kata sandi teks sederhana di database Anda. Simpan nilai hash menggunakan fungsi  SHA2(), SHA1(), MD5() atau fungsi hashing lainnya dengan cara berbeda. Coba gunakan kata sandi yang rumit
  • Coba gunakan firewall dan letakkan MySQL di belakang firewall
  • 3306 adalah port pengguna default MySQL dan port ini tidak boleh diakses dari host yang tidak dipercaya. Anda dapat memindai port dari Internet menggunakan alat seperti nmap. Dari mesin jarak jauh Anda dapat memeriksa apakah port terbuka atau tidak dengan perintah ini. shell> telnet server_host 3306. Jika telnet hang atau koneksi ditolak, port diblokir. Jika Anda mendapatkan koneksi dan beberapa karakter sampah, port tersebut terbuka dan harus ditutup pada firewall atau router Anda, kecuali jika Anda benar-benar memiliki alasan yang kuat untuk tetap membukanya
  • Beberapa aplikasi mengakses database MySQL untuk tujuan yang berbeda. Jangan pernah mempercayai data input yang dimasukkan oleh pengguna dan harus memvalidasi dengan benar sebelum mengakses database
  • Jangan mengirimkan data yang tidak terenkripsi melalui Internet. Gunakan protokol terenkripsi seperti SSL (MySQL mendukung koneksi SSL internal) atau SSH
  • Gunakan utilitas tcpdump dan string. Dengan mengeluarkan perintah ini shell> tcpdump -l -i eth0 -w - src atau dst port 3306. string Anda dapat memeriksa apakah aliran data MySQL tidak terenkripsi atau tidak

Menjaga Kata Sandi Aman

  • Pedoman Pengguna Akhir untuk Keamanan Kata Sandi
    • Gunakan opsi -p atau --password pada baris perintah tanpa nilai kata sandi yang ditentukan. Ini perintahnya

      shell> mysql -u user_id -p database_name
      Masukkan kata kunci. ***********
      Ketika Anda memasukkan kata sandi, itu tidak akan terlihat

    • Simpan kata sandi Anda dalam file opsi. Misalnya Unix Anda dapat mencantumkan kata sandi Anda di bagian [klien] dari. -ku. cnf di direktori home Anda dan untuk menjaga keamanan kata sandi, setel mode akses file ke 400 atau 600
  • Panduan Administrator untuk Keamanan Kata Sandi. MySQL menyimpan sandi untuk akun pengguna di mysql. tabel pengguna. Oleh karena itu, tabel ini tidak boleh diakses oleh akun nonadministratif mana pun. Kata sandi akun pengguna harus diatur ulang dari waktu ke waktu
  • Kata Sandi dan Pencatatan. Kata sandi dapat ditulis sebagai teks biasa dalam pernyataan SQL seperti CREATE USER, GRANT, dan SET PASSWORD, atau pernyataan yang menggunakan fungsi PASSWORD(). Jika pernyataan ini dicatat oleh server MySQL seperti yang tertulis, kata sandi tersebut tersedia bagi siapa saja yang memiliki akses ke log. Dimulai dengan MySQL 5. 6. 3, pencatatan pernyataan dimodifikasi sehingga kata sandi tidak muncul dalam teks biasa untuk pernyataan berikut. CREATE USER .. IDENTIFIED BY ...GRANT .. IDENTIFIED BY ...SET PASSWORD ...SLAVE START .. PASSWORD = .. (as of 5.6.4)CREATE SERVER .. OPTIONS(.. PASSWORD ...) (as of 5.6.9)ALTER SERVER .. OPTIONS(.. PASSWORD ...) (as of 5.6.9) Kata sandi dalam pernyataan tersebut ditulis ulang agar tidak muncul secara harfiah dalam teks pernyataan, untuk log kueri umum, log kueri lambat, dan log biner. Penulisan ulang tidak berlaku untuk pernyataan lain
  • Hash kata sandi di MySQL. MySQL mencantumkan akun pengguna di tabel pengguna dari database MySQL. Setiap akun MySQL dapat diberi kata sandi, meskipun tabel pengguna tidak menyimpan versi teks-jelas dari kata sandi, tetapi nilai hash dihitung darinya
  • Implikasi Perubahan Hashing Kata Sandi di MySQL 4. 1 untuk Program Aplikasi. Upgrade ke MySQL versi 4. 1 atau lebih baru dapat menyebabkan masalah kompatibilitas untuk aplikasi yang menggunakan PASSWORD() untuk menghasilkan kata sandi untuk tujuannya sendiri. Aplikasi seharusnya tidak melakukan ini, karena PASSWORD() hanya boleh digunakan untuk mengelola kata sandi untuk akun MySQL
  • Plugin validasi_kata sandi (tersedia pada MySQL 5. 6. 6) dapat digunakan untuk menguji kata sandi dan meningkatkan keamanan

Membuat MySQL Aman Terhadap Penyerang

Untuk membuat sistem MySQL aman, Anda harus mempertahankan saran berikut

  • Wajibkan semua akun MySQL untuk memiliki kata sandi
  • Pastikan bahwa satu-satunya akun pengguna Unix dengan hak baca atau tulis di direktori database adalah akun yang digunakan untuk menjalankan mysqld
  • Jangan pernah menjalankan server MySQL sebagai pengguna root Unix
  • Jangan berikan hak istimewa FILE kepada pengguna nonadministratif
  • Jangan izinkan penggunaan symlink ke tabel
  • Program dan tampilan tersimpan harus ditulis menggunakan pedoman keamanan
  • Jika Anda tidak mempercayai DNS Anda, Anda harus menggunakan alamat IP daripada nama host di tabel hibah
  • Jika Anda ingin membatasi jumlah koneksi yang diizinkan untuk satu akun, Anda dapat melakukannya dengan mengatur variabel max_user_connections di mysqld

Opsi dan Variabel mysqld Terkait Keamanan

Tabel berikut menunjukkan opsi mysqld dan variabel sistem yang memengaruhi keamanan

NameDescriptionCmd-LineOption fileSystem VarVar ScopeDynamic

izinkan-mencurigakan-udfs

 

Opsi ini mengontrol apakah fungsi yang ditentukan pengguna yang hanya memiliki simbol xxx untuk fungsi utama dapat dimuat. Secara default,YesYes   automatic_sp_privilegesBila variabel ini memiliki nilai 1 (default), server secara otomatis memberikan hak istimewa EXECUTE dan ALTER ROUTINE kepada pembuat rutinitas yang disimpan, jika pengguna belum dapat menjalankan dan mengubah atau menghentikan rutinitas. (Hak istimewa MENGUBAH RUTIN diperlukan untuk menghentikan rutinitas. ) Server juga secara otomatis menghapus hak istimewa tersebut dari pembuatnya saat rutinitas dihapus. Jika automatic_sp_privileges adalah 0, server tidak secara otomatis menambah atau menghapus hak istimewa ini. YesGlobalYeschrootLetakkan server mysqld di lingkungan tertutup selama startup dengan menggunakan panggilan sistem chroot(). YaYa   des-key-fileBaca kunci DES default dari file ini. Kunci ini digunakan oleh fungsi DES_ENCRYPT() dan DES_DECRYPT(). YaYa   local_infileApakah LOCAL didukung untuk pernyataan LOAD DATA INFILE. Jika variabel ini dinonaktifkan, klien tidak dapat menggunakan LOKAL dalam pernyataan LOAD DATA. YesGlobalYesold_passwordsVariabel ini menentukan jenis hashing kata sandi yang dilakukan oleh fungsi dan pernyataan PASSWORD() seperti CREATE USER dan GRANT. YesBothYessafe-user-createJika opsi ini diaktifkan, pengguna tidak dapat membuat pengguna MySQL baru dengan menggunakan pernyataan GRANT kecuali jika pengguna memiliki hak istimewa INSERT untuk mysql. tabel pengguna atau kolom apa pun dalam tabel. IYesYes   secure-authOpsi ini menyebabkan server memblokir koneksi oleh klien yang mencoba menggunakan akun yang memiliki sandi yang disimpan di versi lama (sebelum 4. 1) format. Gunakan itu untuk mencegah semua penggunaan kata sandi menggunakan format lama (dan karenanya komunikasi tidak aman melalui jaringan). YaYa GlobalYa- Variabel. secure_authJika variabel ini diaktifkan, server memblokir koneksi oleh klien yang mencoba menggunakan akun yang memiliki kata sandi yang disimpan di versi lama (pra-4. 1) format. YesGlobalYessecure-file-privSecara default, variabel ini kosong. Jika disetel ke nama direktori, ini membatasi efek fungsi LOAD_FILE() dan LOAD DATA dan SELECT. Pernyataan INTO OUTFILE hanya berfungsi dengan file di direktori itu. YaYa GlobalTidak- Variabel. secure_file_priv   YesGlobalNoskip-grant-tablesOpsi ini menyebabkan server memulai tanpa menggunakan sistem hak istimewa sama sekali, yang memberi siapa saja yang memiliki akses ke server akses tak terbatas ke semua database. YaYa   lewati-nama-resolveSemua interaksi dengan mysqld harus dilakukan menggunakan pipa bernama atau memori bersama (di Windows) atau file soket Unix (di Unix). Opsi ini sangat disarankan untuk sistem yang hanya mengizinkan klien lokal. YaYa GlobalTidak- Variabel. skip_name_resolve   YesGlobalNoskip-networkingSemua interaksi dengan mysqld harus dilakukan menggunakan pipa bernama atau memori bersama (di Windows) atau file soket Unix (di Unix). Opsi ini sangat disarankan untuk sistem yang hanya mengizinkan klien lokal. YaYa GlobalTidak- Variabel. skip_networking   YesGlobalNoskip-show-databaseOpsi ini menyetel variabel sistem skip_show_database yang mengontrol siapa yang diizinkan untuk menggunakan pernyataan SHOW DATABASES. YaYa GlobalTidak- Variabel. skip_show_database   YesGlobalNo


Cara Menjalankan MySQL sebagai Pengguna Biasa

  • Di Windows, Anda dapat menjalankan server sebagai layanan Windows menggunakan akun pengguna biasa
  • Di Unix, server MySQL mysqld dapat dimulai dan dijalankan oleh pengguna mana pun. Namun, Anda harus menghindari menjalankan server sebagai pengguna root Unix untuk alasan keamanan

Masalah Keamanan dengan LOAD DATA LOCAL

Ada dua potensi masalah keamanan dengan mendukung pernyataan LOAD DATA versi LOKAL

  • Transfer file dari host klien ke host server diprakarsai oleh server MySQL. Secara teori, server yang ditambal dapat dibangun yang akan memberi tahu program klien untuk mentransfer file yang dipilih server daripada file yang dinamai oleh klien dalam pernyataan LOAD DATA. Server semacam itu dapat mengakses file apa pun di host klien yang akses bacanya dimiliki pengguna klien
  • Dalam lingkungan Web di mana klien terhubung dari server Web, pengguna dapat menggunakan LOAD DATA LOCAL untuk membaca file apa pun yang telah dibaca oleh proses server Web (dengan asumsi bahwa pengguna dapat menjalankan perintah apa pun terhadap server SQL). Dalam lingkungan ini, klien sehubungan dengan server MySQL sebenarnya adalah server Web, bukan program jarak jauh yang dijalankan oleh pengguna yang terhubung ke server Web.

Pedoman Keamanan Pemrograman Klien

Aplikasi yang mengakses MySQL tidak boleh mempercayai data apa pun yang dimasukkan oleh pengguna, yang dapat mencoba mengelabui kode Anda dengan memasukkan urutan karakter khusus atau lolos dalam formulir Web, URL, atau aplikasi apa pun yang telah Anda buat. Pastikan aplikasi Anda tetap aman jika pengguna memasukkan sesuatu seperti "; DROP DATABASE mysql;". Ini adalah contoh ekstrem, tetapi kebocoran keamanan besar dan kehilangan data mungkin terjadi akibat peretas menggunakan teknik serupa jika Anda tidak mempersiapkannya. Lihat pedoman berikut

  • Aktifkan mode SQL ketat untuk memberi tahu server agar lebih membatasi nilai data yang diterimanya
  • Coba masukkan tanda kutip tunggal dan ganda (“'” dan “"”) di semua formulir Web Anda. Jika Anda mendapatkan kesalahan MySQL apa pun, segera selidiki masalahnya
  • Coba ubah URL dinamis dengan menambahkan %22 (“"”), %23 (“#”), dan %27 (“'”) ke dalamnya
  • Cobalah untuk mengubah tipe data di URL dinamis dari tipe numerik menjadi karakter menggunakan karakter yang ditampilkan di contoh sebelumnya. Aplikasi Anda harus aman terhadap serangan ini dan yang serupa
  • Cobalah untuk memasukkan karakter, spasi, dan simbol khusus daripada angka di kolom numerik. Aplikasi Anda harus menghapusnya sebelum meneruskannya ke MySQL atau menghasilkan kesalahan. Melewati nilai yang tidak dicentang ke MySQL sangat berbahaya
  • Periksa ukuran data sebelum meneruskannya ke MySQL
  • Jangan berikan aplikasi Anda hak akses apa pun yang tidak mereka perlukan

Sistem Hak Istimewa Akses MySQL

Keistimewaan yang Disediakan oleh MySQL

MySQL memberikan hak istimewa yang berlaku dalam konteks yang berbeda dan pada tingkat operasi yang berbeda

  • Hak istimewa administratif memungkinkan pengguna untuk mengelola pengoperasian server MySQL. Hak istimewa ini bersifat global karena tidak spesifik untuk database tertentu
  • Hak istimewa database berlaku untuk database dan semua objek di dalamnya. Hak istimewa ini dapat diberikan untuk database tertentu, atau secara global sehingga berlaku untuk semua database
  • Keistimewaan untuk objek database seperti tabel, indeks, tampilan, dan rutinitas tersimpan dapat diberikan untuk objek tertentu dalam database, untuk semua objek dari tipe tertentu dalam database (misalnya, semua tabel dalam database), atau secara global untuk semua

Hak Istimewa yang Diperbolehkan untuk GRANT dan REVOKE

PrivilegeColumnContextCREATECreate_privdatabases, tables, or indexesDROPDrop_privdatabases, tables, or viewsGRANT OPTIONGrant_privdatabases, tables, or stored routinesLOCK TABLESLock_tables_privdatabasesREFERENCESReferences_privdatabases or tablesEVENTEvent_privdatabasesALTERAlter_privtablesDELETEDelete_privtablesINDEXIndex_privtablesINSERTInsert_privtables or columnsSELECTSelect_privtables or columnsUPDATEUpdate_privtables or columnsCREATE TEMPORARY TABLESCreate_tmp_table_privtablesTRIGGERTrigger_privtablesCREATE VIEWCreate_view_privviewsSHOW VIEWShow_view_privviewsALTER ROUTINEAlter_routine_privstored routinesCREATE ROUTINECreate_routine_privstored routinesEXECUTEExecute_privstored routinesFILEFile_privfile access on server hostCREATE TABLESPACECreate_tablespace_privserver administrationCREATE USERCreate_user_privserver administrationPROCESSProcess_privserver administrationPROXYsee proxies_priv tableserver administrationRELOADReload_privserver administrationREPLICATION CLIENTRepl_client_privserver administrationREPLICATION SLAVERepl_slave_privserver administrationSHOW DATABASESShow_db_privserver administrationSHUTDOWNShutdown_privserver administrationSUPERSuper_privserver administrationALL [PRIVILEGES] server administrationUSAGE server administration

Tabel Hibah Sistem Privilege

Biasanya, Anda memanipulasi konten tabel hibah di database mysql secara tidak langsung dengan menggunakan pernyataan seperti GRANT dan REVOKE untuk menyiapkan akun dan mengontrol hak istimewa yang tersedia untuk masing-masing akun.

Tabel database mysql ini berisi informasi hibah

  • pengguna. Berisi akun pengguna, hak istimewa global, dan kolom non-hak istimewa lainnya
  • db. Berisi hak istimewa tingkat basis data
  • tuan rumah. Usang. Instalasi MySQL baru tidak lagi membuat tabel ini sejak MySQL 5. 6. 7
  • tables_priv. Berisi hak istimewa tingkat tabel
  • kolom_priv. Berisi hak istimewa tingkat kolom
  • procs_priv. Berisi prosedur tersimpan dan hak istimewa fungsi
  • proxy_priv. Berisi hak pengguna proxy

Menentukan Nama Akun

Nama akun MySQL terdiri dari nama pengguna dan nama host. Ini memungkinkan pembuatan akun untuk pengguna dengan nama yang sama yang dapat terhubung dari host yang berbeda. Bagian ini menjelaskan cara menulis nama akun, termasuk nilai khusus dan aturan wildcard. Dalam pernyataan SQL seperti CREATE USER, GRANT, dan SET PASSWORD, tulis nama akun menggunakan aturan berikut

  • Sintaks untuk nama akun adalah 'user_name'@'host_name'
  • Nama akun yang hanya terdiri dari nama pengguna sama dengan 'nama_pengguna'@'%'. Misalnya, 'saya' setara dengan 'saya'@'%'
  • Nama pengguna dan nama host tidak perlu dikutip jika legal sebagai pengidentifikasi yang tidak dikutip. Kutipan diperlukan untuk menentukan string nama_pengguna yang berisi karakter khusus (seperti "-"), atau string nama_host yang berisi karakter khusus atau karakter pengganti (seperti "%"); . com'
  • Mengutip nama pengguna dan nama host sebagai pengidentifikasi atau sebagai string, baik menggunakan backtick (“`”), tanda kutip tunggal (“'”), atau tanda kutip ganda (“””)
  • Bagian username dan hostname, jika dikutip, harus dikutip secara terpisah. Artinya, tulis 'saya'@'localhost', bukan '[email dilindungi]';
  • Referensi ke fungsi CURRENT_USER atau CURRENT_USER() setara dengan menentukan nama pengguna dan nama host klien saat ini secara harfiah

Kontrol Akses, Tahap 1. Verifikasi Koneksi

Saat Anda mencoba terhubung ke server MySQL, server menerima atau menolak koneksi berdasarkan identitas Anda dan apakah Anda dapat memverifikasi identitas Anda dengan memberikan kata sandi yang benar. Jika tidak, server menolak akses Anda sepenuhnya. Jika tidak, server menerima koneksi, lalu memasuki Tahap 2 dan menunggu permintaan. Identitas Anda didasarkan pada dua informasi

  • Host klien tempat Anda terhubung
  • Nama pengguna MySQL Anda

Kontrol Akses, Tahap 2. Verifikasi Koneksi

Setelah Anda membuat koneksi, server memasuki Tahap 2 kontrol akses. Untuk setiap permintaan yang Anda keluarkan melalui koneksi itu, server menentukan operasi apa yang ingin Anda lakukan, lalu memeriksa apakah Anda memiliki cukup hak untuk melakukannya. Di sinilah kolom hak istimewa dalam tabel hibah berperan. Hak istimewa ini dapat berasal dari tabel pengguna, db, tables_priv, kolom_priv, atau procs_priv mana pun

Tabel pengguna memberikan hak istimewa yang diberikan kepada Anda secara global dan yang berlaku apa pun database defaultnya. Misalnya, jika tabel pengguna memberi Anda hak istimewa DELETE, Anda dapat menghapus baris dari tabel mana pun di database mana pun di host server. Adalah bijaksana untuk memberikan hak istimewa di tabel pengguna hanya kepada orang yang membutuhkannya, seperti administrator basis data

Tabel db memberikan hak istimewa khusus basis data. Nilai dalam kolom cakupan tabel ini dapat mengambil bentuk berikut

  • Nilai Pengguna kosong cocok dengan pengguna anonim. Nilai yang tidak kosong cocok secara harfiah;
  • Karakter wildcard “%” dan “_” dapat digunakan di kolom Host dan Db. Ini memiliki arti yang sama dengan operasi pencocokan pola yang dilakukan dengan operator LIKE. Jika Anda ingin menggunakan salah satu karakter secara harfiah saat memberikan hak istimewa, Anda harus menghindarinya dengan garis miring terbalik. Misalnya, untuk menyertakan karakter garis bawah (“_”) sebagai bagian dari nama database, tentukan sebagai “\_” dalam pernyataan GRANT
  • Nilai Host '%' atau kosong berarti "setiap host. "
  • Nilai '%' atau Db kosong berarti "basis data apa pun. "

Saat Perubahan Hak Istimewa Mulai Berlaku

Ketika mysqld dimulai, ia membaca semua konten tabel hibah ke dalam memori. Tabel dalam memori menjadi efektif untuk kontrol akses pada saat itu. Jika Anda memodifikasi tabel hibah secara tidak langsung menggunakan pernyataan manajemen akun seperti GRANT, REVOKE, SET PASSWORD, atau RENAME USER, server akan memperhatikan perubahan ini dan segera memuat tabel hibah ke dalam memori

Penyebab Kesalahan Access-Denied

Jika Anda mengalami masalah saat mencoba menyambung ke server MySQL, item berikut ini menjelaskan beberapa tindakan yang dapat Anda lakukan untuk memperbaiki masalah tersebut

  • Pastikan bahwa server berjalan. Jika tidak, klien tidak dapat tersambung ke sana
  • Mungkin server sedang berjalan, tetapi Anda mencoba menyambung menggunakan port TCP/IP, bernama pipa, atau file soket Unix yang berbeda dari yang didengarkan server. Untuk mengetahui letak file socketnya, anda bisa menggunakan perintah ini. shell> netstat -ln | grep mysql_
  • Pastikan bahwa server belum dikonfigurasi untuk mengabaikan koneksi jaringan atau (jika Anda mencoba untuk terhubung dari jarak jauh) belum dikonfigurasi untuk hanya mendengarkan secara lokal pada antarmuka jaringannya
  • Periksa untuk memastikan tidak ada firewall yang memblokir akses ke MySQL
  • Tabel hibah harus diatur dengan benar sehingga server dapat menggunakannya untuk kontrol akses
  • Setelah penginstalan baru, Anda harus terhubung ke server dan mengatur pengguna Anda dan izin aksesnya. shell> mysql -u root mysql
  • Jika Anda telah memperbarui instalasi MySQL yang ada ke versi yang lebih baru, jalankan skrip mysql_upgrade
  • Jika program klien menerima pesan kesalahan "Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL" itu berarti bahwa server mengharapkan kata sandi dalam format yang lebih baru daripada yang dapat dibuat oleh klien
  • Jika program klien tampaknya mengirimkan parameter koneksi default yang salah saat Anda belum menentukannya di baris perintah, periksa semua file opsi yang berlaku dan lingkungan Anda
  • Jika Anda mendapatkan pesan kesalahan "Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi. YA)", itu berarti Anda menggunakan kata sandi root yang salah
  • Jika Anda mengubah kata sandi menggunakan SET PASSWORD, INSERT, atau UPDATE, Anda harus mengenkripsi kata sandi menggunakan fungsi PASSWORD(). Jika Anda tidak menggunakan PASSWORD() untuk pernyataan ini, kata sandi tidak akan berfungsi
  • localhost adalah sinonim untuk nama host lokal Anda, dan juga merupakan host default yang coba disambungkan oleh klien jika Anda tidak menentukan host secara eksplisit
  • Pesan kesalahan Akses ditolak memberi tahu Anda dengan siapa Anda mencoba masuk, host klien tempat Anda mencoba untuk terhubung, dan apakah Anda menggunakan kata sandi
  • Jika Anda mendapatkan kesalahan Akses ditolak saat mencoba menyambung ke database dengan mysql -u user_name, Anda mungkin memiliki masalah dengan tabel pengguna
  • Jika Anda mendapatkan pesan kesalahan "Host. tidak diizinkan untuk terhubung ke server MySQL ini", ketika Anda mencoba untuk terhubung dari host selain dari yang menjalankan server MySQL, itu berarti tidak ada baris di tabel pengguna dengan nilai Host yang cocok dengan klien
  • Jika Anda menentukan nama host saat mencoba terhubung, tetapi mendapatkan pesan kesalahan di mana nama host tidak ditampilkan atau merupakan alamat IP, itu berarti server MySQL mendapat kesalahan saat mencoba menyelesaikan alamat IP dari host klien ke sebuah nama

Manajemen Akun Pengguna MySQL

Nama Pengguna dan Kata Sandi

MySQL menyimpan akun di tabel pengguna dari database mysql. Akun didefinisikan dalam istilah nama pengguna dan host klien atau host tempat pengguna dapat terhubung ke server. Akun tersebut mungkin juga memiliki kata sandi

Menambahkan dan menghapus akun pengguna

Anda dapat membuat akun MySQL dengan dua cara

  • Dengan menggunakan pernyataan yang dimaksudkan untuk membuat akun, seperti CREATE USER atau GRANT. Pernyataan ini menyebabkan server melakukan modifikasi yang sesuai pada tabel hibah
  • Dengan memanipulasi tabel hibah MySQL secara langsung dengan pernyataan seperti INSERT, UPDATE, atau DELETE

Untuk menghapus akun, gunakan pernyataan DROP USER,

Menetapkan Batas Sumber Daya Akun

Di MySQL5. 6, Anda dapat membatasi penggunaan sumber daya server berikut untuk masing-masing akun

  • Jumlah kueri yang dapat dikeluarkan akun per jam
  • Jumlah pembaruan yang dapat dikeluarkan akun per jam
  • Frekuensi akun dapat terhubung ke server per jam
  • Jumlah koneksi simultan ke server oleh akun

Menetapkan Kata Sandi Akun

Kredensial yang diperlukan untuk klien yang terhubung ke server MySQL dapat menyertakan kata sandi. Di MySQL5. 6, klien juga dapat mengotentikasi menggunakan plugin

Untuk menetapkan kata sandi saat Anda membuat akun baru dengan CREATE USER, sertakan klausa IDENTIFIED BY

mysql> CREATE USER 'user'@'localhost' -> IDENTIFIED BY 'mypass';

Untuk menetapkan atau mengubah kata sandi untuk akun yang ada, salah satu caranya adalah dengan mengeluarkan pernyataan SET PASSWORD

Bagaimana cara mengatur kata sandi untuk database MySQL?

Di klien mysql, beri tahu server untuk memuat ulang tabel hibah agar pernyataan manajemen akun berfungsi. mysql> FLUSH PRIVILEGES; Kemudian ubah kata sandi akun 'root'@'localhost' . Ganti kata sandi dengan kata sandi yang ingin Anda gunakan.

Bagaimana cara membuat MySQL aman?

Praktik Terbaik Keamanan MySQL .
Hapus Akun Default, Pemetaan Port, dan Pengaturan Lainnya. .
Batasi Akses Jarak Jauh. .
Berikan Pengguna Hanya Keistimewaan yang Mereka Butuhkan. .
Gunakan Akun Non-Root. .
Menjaga Server Secara Fisik Aman. .
Pastikan Anda Menjaga Audit & Pemantauan yang Tepat. .
Nilai Keamanan Basis Data Anda Secara Rutin

Bagaimana cara mengenkripsi kata sandi pengguna MySQL?

Server MySQL menggunakan fungsi PASSWORD untuk mengenkripsi kata sandi MySQL untuk penyimpanan di kolom Kata Sandi pada tabel pemberian pengguna. Nilai yang dikembalikan oleh fungsi PASSWORD adalah string hash, atau NULL jika argumennya adalah NULL. Fungsi PASSWORD menerima satu parameter yaitu string yang akan dienkripsi.

Bagaimana cara mengamankan kata sandi root MySQL?

Untuk menetapkan kata sandi menggunakan SET PASSWORD , sambungkan ke server sebagai root dan keluarkan pernyataan SET PASSWORD untuk setiap akun root yang terdaftar di mysql. tabel sistem pengguna . Untuk Windows, lakukan ini. $> mysql -u root mysql> SET PASSWORD UNTUK 'root'@'localhost' = PASSWORD('new_password'); . 0.

Postingan terbaru

LIHAT SEMUA