Saat menggunakan MySQL, masalah keamanan tidak bisa diabaikan. Berikut ini adalah 23 catatan yang diminta oleh MySQL:
1. Jika koneksi antara klien dan server perlu menjangkau dan melewati jaringan yang tidak tepercaya, maka Anda perlu menggunakan terowongan SSH untuk mengenkripsi komunikasi koneksi tersebut.
2. Gunakan pernyataan set password untuk mengubah kata sandi pengguna. Dalam tiga langkah, pertama login ke sistem database dengan "mysql -u root", lalu "mysql> update mysql.user set password=password('newpwd')" , dan akhirnya menjalankan hak istimewa "flush" sudah cukup.
3. Serangan yang perlu diwaspadai antara lain anti-penyadapan, gangguan, pemutaran ulang, penolakan layanan, dll., yang tidak melibatkan ketersediaan dan toleransi kesalahan. Semua koneksi, kueri, dan operasi lainnya diselesaikan menggunakan langkah-langkah keamanan berdasarkan ACL (daftar kontrol akses). Ada beberapa dukungan untuk koneksi SSL juga.
4. Pengguna lain kecuali pengguna root tidak diperbolehkan mengakses tabel pengguna di database utama mysql;
setelah kata sandi pengguna terenkripsi yang disimpan di tabel pengguna bocor, orang lain dapat menggunakan database yang sesuai dengan nama pengguna/kata sandi sesuka hati. ;
5. Gunakan pernyataan hibah dan pencabutan untuk melakukan kontrol akses pengguna;
6. Jangan gunakan kata sandi teks biasa, tetapi gunakan fungsi hash satu arah seperti md5() dan sha1() untuk mengatur kata sandi
; dalam karakter kamus sebagai kata sandi;
8. Gunakan firewall untuk menghilangkan 50% bahaya eksternal, danbiarkan
sistem database bekerja di belakang firewall, atau letakkan di area DMZ;
, atau gunakan telnet server_host Pengujian metode 3306 tidak dapat mengizinkan akses ke port TCP 3306 dari server database dari jaringan yang tidak tepercaya, jadi pengaturan perlu dilakukan pada firewall atau router
10. Untuk mencegah masuknya parameter ilegal secara jahat , seperti di mana ID=234, lainnya Namun memasukkan di mana ID=234 OR 1=1 menyebabkan semua ditampilkan, jadi gunakan '' atau "" untuk menggunakan string dalam formulir web, dan tambahkan %22 ke URL dinamis untuk mewakili tanda kutip ganda, %23 untuk mewakili tanda pagar, dan %27 Mewakili tanda kutip tunggal; sangat berbahaya untuk meneruskan nilai yang tidak dicentang ke database mysql;
11.
Periksa ukuran saat meneruskan data ke mysql;
untuk terhubung ke database harus menggunakan akun pengguna umum, dan hanya membuka beberapa akun yang diperlukan. Izin diberikan kepada pengguna;
13. Gunakan fungsi 'karakter escape' tertentu di berbagai antarmuka pemrograman (C C++ PHP Perl Java JDBC, dll.);
saat menggunakan database mysql di Internet, pastikan untuk mengirimkan lebih sedikit data teks biasa dan menggunakan SSL dan SSH. Data terenkripsi dikirimkan;
14. Pelajari cara menggunakan alat tcpdump dan string untuk memeriksa keamanan data yang dikirimkan, seperti tcpdump -l -i eth0 -w -src atau dst port 3306 string. Mulai layanan database mysql sebagai pengguna biasa;
15. Jangan gunakan simbol link ke tabel, pilih parameter --skip-symbolic-links;
16. Pastikan hanya pengguna yang memulai layanan database di direktori mysql dapat membaca dan membaca file. Izin menulis;
17. Izin proses atau super tidak boleh diberikan kepada pengguna non-administratif. Daftar proses mysqladmin dapat mencantumkan teks kueri yang saat ini dijalankan dapat digunakan untuk memutus koneksi klien, ubah status parameter operasi server, dan mengontrol penyalinan dan replikasi database. Server
18. Izin file tidak diberikan kepada pengguna selain administrator untuk mencegah masalah memuat data '/etc/passwd' ke dalam tabel dan kemudian menggunakan pilih untuk ditampilkan itu;
19. Jika Anda tidak mempercayai layanan dari perusahaan layanan DNS, Anda dapat Hanya alamat numerik IP yang ditetapkan dalam tabel izin nama;
20. Gunakan variabel max_user_connections untuk mengaktifkan proses layanan mysqld untuk membatasi jumlah koneksi akun tertentu;
21. Pernyataan hibah juga mendukung opsi kontrol sumber daya
22. Mulai peralihan opsi keamanan dari proses layanan mysqld, --local-infile=0 atau 1. Jika 0, program klien tidak dapat menggunakan beban lokal; data. Contoh hibah hibah masukkan (pengguna) pada mysql.user ke 'nama_pengguna'@'nama_host' ; jika menggunakan -- Sistem skip-grant-tables tidak akan menerapkan kontrol akses apa pun untuk akses pengguna mana pun, tetapi Anda dapat menggunakan mysqladmin flush-privileges atau mysqladmin reload untuk mengaktifkan kontrol akses; secara default, pernyataan show databases terbuka untuk semua pengguna, dan Anda dapat menggunakan --skip- show-databases untuk mematikannya.
23. Saat menemui kesalahan Error 1045 (28000) Access Denied for user 'root'@'localhost' (Using password:NO), Anda perlu mengatur ulang kata sandi. Metode spesifiknya adalah: pertama mulai dengan --skip-grant -tabel parameter mysqld, lalu jalankan mysql -u root mysql,mysql>perbarui set pengguna kata sandi=kata sandi('kata sandi baru') di mana pengguna='root';mysql>Flush hak istimewa;, dan terakhir restart mysql.