GNU/Linux >> Belajar Linux >  >> Linux

[Tetap] Host tidak diizinkan untuk terhubung ke server MySQL ini

Pengembang aplikasi mungkin mengalami kesulitan menghubungkan ke database yang dihosting di server selain server lokal. Pada artikel ini, kami akan mengatasi kesalahan umum yang terjadi saat menghubungkan ke database MySQL dari jarak jauh dari luar jaringan atau dari host lain.

SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server kesalahan terjadi ketika permintaan koneksi ditolak oleh server MySQL. Secara default, server MySQL hanya menerima koneksi dari host lokal dan bukan dari host lain.

Untuk mengaktifkan koneksi jarak jauh, kita perlu melakukan langkah-langkah berikut –

  1. Aktifkan koneksi jarak jauh dari konfigurasi
  2. Buat pengguna baru dan izinkan untuk terhubung ke server database dari host tertentu (atau semua host)
  3. Hapus hak istimewa

Aktifkan koneksi jarak jauh dari konfigurasi MySQL

Buka konfigurasi MySQL menggunakan editor teks favorit Anda, seperti nano. File MySQL biasanya terletak di /etc/mysql/my.cnf atau /etc/my.cnf atau /etc/mysql/mysql.conf.d/mysqld.cnf . Lokasi file konfigurasi MySQL tergantung pada versi MySQL yang Anda gunakan. Periksa semua lokasi ini untuk melihat apakah Anda dapat menemukan file konfigurasi. Silakan bergabung dengan server Discord kami dan beri tahu kami jika Anda belum menemukan file konfigurasi. Mungkin kami dapat membantu Anda.

Setelah menemukan file konfigurasi, buka dan beri komentar baris bind-address = 127.0.0.1 .

Cukup tambahkan # sebelum baris untuk mengomentarinya.

# bind-address = 127.0.0.1

Buat pengguna MySQL baru

Kami membuat pengguna mysql dengan host sebagai 'localhost' untuk penggunaan lokal, tetapi ketika menambahkan pengguna untuk koneksi jarak jauh, kami harus mengganti localhost dengan alamat IP dari komputer jarak jauh.

Masuk ke MySQL sebagai root –

sudo mysql

Or

mysql -u root -p

Tergantung pada metode yang Anda pilih, Anda akan diminta untuk memasukkan kata sandi Anda. Jika Anda menggunakan metode kedua, masukkan kata sandi pengguna root MySQL, atau sudo kata sandi jika Anda masuk dengan sudo .

Setelah berada di baris perintah MySQL, buat pengguna baru –

> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Harap ganti ‘nama pengguna ' dengan nama pengguna yang diinginkan, 'set-password ' dengan kata sandi yang kuat, dan 'ip-address ' dengan alamat IP jarak jauh pada perintah di atas.

Anda akan melihat pesan berikut jika pengguna baru telah dibuat –

Query OK, 0 rows affected (0.02 sec)

Kami sekarang akan memberikan izin kepada pengguna yang baru dibuat untuk mengelola database tertentu di server. Kami juga dapat memberikan akses pengguna ini ke semua database di server, tetapi ini tidak disarankan. Saya menyarankan Anda membuat database baru untuk aplikasi Anda dan memberikan izin kepada pengguna ini untuk mengelola database.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Harap ganti nama pengguna pada perintah sebelumnya dengan nama pengguna yang sebenarnya dan ip-address dengan alamat ip komputer jarak jauh (host).

Setelah selesai, hapus hak istimewa agar perubahan diterapkan.

> FLUSH PRIVILEGES;

Izinkan semua koneksi jarak jauh

Seperti pada perintah sebelumnya, saya menginstruksikan untuk mengganti alamat ip dengan alamat IP komputer jarak jauh. Hanya koneksi dari komputer jarak jauh itu yang diizinkan. Namun, kami juga dapat menggunakan wildcard '%' untuk mengizinkan semua koneksi, terlepas dari apakah itu dari komputer Anda atau dari orang bawah tanah yang membutuhkan akses ke database Anda untuk alasan pribadi. Namun, mereka harus memasukkan kredensial yang benar untuk mengakses database.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';

Jika server database Anda dalam produksi, sangat disarankan untuk tidak menggunakan '%' wildcard.

Izinkan koneksi dari rentang alamat IP

Jika server jarak jauh berada di jaringan yang sama, alamat IP mereka dapat dengan mudah diizinkan untuk memungkinkan koneksi jarak jauh tanpa memerlukan banyak pengguna MySQL.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';

Perhatikan bagaimana oktet terakhir dari alamat IP telah diganti dengan * dalam perintah di atas. Ini memungkinkan semua server dengan alamat IP tersebut untuk memulai dengan 172.19.0.


Linux
  1. Nama pengguna [Tetap] tidak ada dalam file sudoers

  2. [Tetap] Host tidak diizinkan untuk terhubung ke server MySQL ini

  3. Tidak dapat terhubung ke Basis Data; Pengguna Ada di Basis Data, tetapi bukan Tingkat Server

  1. Terhubung ke server cloud

  2. Terhubung ke database MySQL dari jarak jauh

  3. Beginilah Cara Server Linux Beroperasi

  1. Host WordPress di Ubuntu 20.04, Mysql 8, Ubuntu 20.04, Nginx

  2. Pengambilan Kunci Publik tidak diizinkan – Kesalahan MySQL WSO2

  3. Apa artinya 'Roaming tidak diizinkan oleh server' dari klien ssh?