Android

Bagaimana untuk membenarkan sambungan jauh ke pelayan pangkalan data mysql

MEMBUAT CONSTRAINT RELASI PADA MySQL

MEMBUAT CONSTRAINT RELASI PADA MySQL

Isi kandungan:

Anonim

Secara lalai, pelayan MySQL mendengar untuk sambungan hanya dari localhost, yang bermaksud ia boleh diakses hanya oleh aplikasi yang berjalan pada tuan rumah yang sama.

Walau bagaimanapun, dalam beberapa situasi, adalah perlu untuk mengakses pelayan MySQL dari lokasi yang jauh. Sebagai contoh, apabila anda ingin menyambung ke pelayan MySQL jauh dari sistem tempatan anda, atau semasa menggunakan penyebaran pelbagai pelayan di mana aplikasi berjalan pada mesin yang berbeza dari pelayan pangkalan data. Satu pilihan adalah untuk mengakses pelayan MySQL melalui SSH Tunnel dan yang lain adalah untuk mengkonfigurasi pelayan MySQL untuk menerima sambungan jauh.

Dalam panduan ini, kami akan melalui langkah-langkah yang diperlukan untuk membolehkan sambungan jauh ke pelayan MySQL. Arahan yang sama berlaku untuk MariaDB.

Mengkonfigurasi MySQL Server

Langkah pertama adalah untuk menetapkan pelayan MySQL untuk mendengar alamat IP tertentu atau semua alamat IP pada mesin.

Jika pelayan dan klien MySQL boleh berkomunikasi antara satu sama lain melalui rangkaian persendirian, maka pilihan terbaik adalah untuk menetapkan pelayan MySQL untuk mendengar hanya pada IP peribadi. Jika tidak, jika anda ingin menyambung ke pelayan melalui rangkaian awam, setkan pelayan MySQL untuk mendengar semua alamat IP pada mesin.

Untuk melakukannya, anda perlu mengedit fail konfigurasi MySQL dan menambah atau mengubah nilai pilihan bind-address . Anda boleh menetapkan satu alamat IP dan julat IP. Jika alamat adalah 0.0.0.0 , pelayan MySQL menerima sambungan pada semua antara muka IPv4 hos. Jika anda mempunyai IPv6 yang dikonfigurasikan pada sistem anda, maka bukannya 0.0.0.0 , gunakan :: .

Lokasi fail konfigurasi MySQL berbeza bergantung kepada pengedaran. Di Ubuntu dan Debian failnya terletak di /etc/mysql/mysql.conf.d/mysqld.cnf , manakala di Red Hat berasaskan pengedaran seperti CentOS, fail tersebut terletak di /etc/my.cnf .

Buka fail dengan editor teks anda:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Cari baris yang bermula dengan bind-address dan tetapkan nilainya ke alamat IP yang mana pelayan MySQL patut didengar.

Secara lalai, nilai ditetapkan kepada 127.0.0.1 (hanya didengar di localhost).

Dalam contoh ini, kami akan menetapkan pelayan MySQL untuk mendengar semua antara muka IPv4 dengan menukar nilai kepada 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Sekiranya terdapat baris yang mengandungi skip-networking , hapuskan atau komenkannya dengan menambahkan # di awal baris.

Dalam MySQL 8.0 dan lebih tinggi, arahan bind-address mungkin tidak hadir. Dalam kes ini, tambahkannya di bawah seksyen.

Sebaik sahaja selesai, mulakan semula perkhidmatan MySQL untuk perubahan yang akan dilaksanakan. Hanya root atau pengguna dengan keistimewaan sudo boleh memulakan semula perkhidmatan.

Untuk memulakan semula perkhidmatan MySQL pada Debian atau Ubuntu, taipkan:

sudo systemctl restart mysql

Pada pengedaran berasaskan RedHat seperti CentOS untuk memulakan semula larian perkhidmatan:

sudo systemctl restart mysqld

Memberi Akses kepada Pengguna dari Mesin Jauh

Langkah seterusnya adalah untuk membolehkan akses kepada pangkalan data kepada pengguna jauh.

Log masuk ke pelayan MySQL sebagai pengguna root dengan menaip:

sudo mysql

mysql -uroot -p

Dari dalam shell MySQL, gunakan pernyataan GRANT untuk memberikan akses kepada pengguna jauh.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Di mana:

  • database_name adalah nama pangkalan data yang akan disambungkan kepada pengguna. user_name adalah nama od pengguna MySQL. ip_address adalah alamat IP dari mana pengguna akan menyambungkannya. Gunakan % untuk membenarkan pengguna menyambung dari mana-mana alamat IP. user_password adalah kata laluan pengguna.

Sebagai contoh, untuk memberikan akses kepada dbname pangkalan data kepada pengguna bernama foo dengan kata laluan my_passwd dari mesin klien dengan IP 10.8.0.5 , anda akan menjalankan:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Mengkonfigurasi Firewall

Langkah terakhir ialah mengkonfigurasi firewall anda untuk membenarkan trafik pada port 3306 (port lalai MySQL) dari mesin jauh.

Iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Benarkan akses dari alamat IP tertentu:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW adalah alat firewall lalai di Ubuntu. Untuk membenarkan akses dari mana-mana alamat IP di Internet (sangat tidak selamat) dijalankan:

sudo ufw allow 3306/tcp

Benarkan akses dari alamat IP tertentu:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD adalah alat pengurusan firewall lalai di CentOS. Untuk membenarkan akses dari mana-mana alamat IP di Internet (sangat tidak selamat) jenis:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Untuk membenarkan akses dari alamat IP tertentu pada port tertentu, anda boleh membuat zon FirewallD baru atau menggunakan peraturan yang kaya. Baik buat zon baru bernama mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Mengesahkan Perubahan

Untuk mengesahkan bahawa pengguna jauh boleh menyambung ke pelayan MySQL, jalankan arahan berikut:

mysql -u user_name -h mysql_server_ip -p

Di mana user_name adalah nama pengguna yang anda berikan akses dan mysql_server_ip adalah alamat IP host di mana pelayan MySQL dijalankan.

Sekiranya semuanya disiapkan dengan betul, anda akan dapat log masuk ke pelayan MySQL jauh.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

Kesalahan di bawah menunjukkan bahawa pengguna yang anda cuba log masuk tidak mempunyai keizinan untuk mengakses pelayan MySQL jauh.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Kesimpulannya

MySQL, pangkalan pangkalan data pangkalan data yang paling popular secara lalai, mendengar untuk sambungan masuk hanya pada localhost.

Untuk membenarkan sambungan jauh ke pelayan MySQL, anda perlu melakukan langkah-langkah berikut:

  1. Konfigurasi pelayan MySQL untuk mendengar semua atau antaramuka tertentu. Akses Geran kepada pengguna jauh. Buka port MySQL di firewall anda.
mysql mariadb