Jika ini MySQL, jaringan server database tidak diaktifkan secara default. Untuk mengaktifkan jaringan di MySQL, Anda perlu menemukan file konfigurasi MySQL aktif bernama my.cnf
. Dan edit.
Saya akan menjelaskan bagaimana melakukan ini di Ubuntu 12.04, tetapi instruksinya serupa untuk kebanyakan instalasi Linux.
Aktifkan Jaringan MySQL
Pertama, buka file menggunakan editor seperti nano
. Anda mungkin perlu menjalankan perintah melalui sudo
:
sudo nano /etc/mysql/my.cnf
Kemudian cari area di file konfigurasi Anda dengan bind-address
pilihan:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Sekarang ubah bind-address
pengaturan sebagai berikut:
bind-address = 0.0.0.0
Setelah selesai simpan file &restart MySQL seperti ini:
sudo service mysql restart
Dan sekarang database MySQL Anda akan dapat mengambil koneksi non-localhost dari mesin jarak jauh.
Pastikan Port MySQL 3306
Terbuka
Meskipun demikian, meskipun jaringan diaktifkan, Anda tetap harus memeriksa apakah Anda dapat terhubung ke mesin jarak jauh dari baris perintah menggunakan alat jaringan seperti nmap
. Anda mungkin memiliki firewall di 192.168.1.10
memblokir port MySQL 3306
jadi Anda perlu memeriksa apakah itu terbuka atau tertutup seperti ini:
nmap 192.168.1.10 -p3306
Dan jika port 3306
terbuka, ini akan menjadi tanggapan; perhatikan open
di bawah STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
Tetapi jika port 3306
ditutup, Anda akan mendapatkan ini; perhatikan closed
di bawah STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
Periksa Hibah Pengguna MySQL Anda
Sekarang setelah semua selesai, server database MySQL Anda harus dapat diakses di jaringan. Namun demikian, Anda perlu memastikan pengguna basis data yang Anda gunakan diizinkan untuk terhubung dari mesin jarak jauh di LAN Anda. Jadi login ke MySQL &jalankan perintah ini untuk melihat hibah apa yang mungkin dimiliki pengguna:
SELECT user, host FROM `mysql`.`user`;
Ini akan menampilkan daftar pengguna &host yang terhubung ke pengguna tersebut di MySQL. Masalahnya adalah sebagian besar pengguna hanya diberikan hak akses ke localhost
atau 127.0.0.1
. Beberapa diberikan host wildcard %
. Anda perlu melihat daftar itu dan melihat apakah pengguna yang ingin Anda gunakan memiliki host wildcard (%
) atau alamat IP tertentu yang terhubung dengannya. Anda dapat memeriksa GRANT
user pengguna s dengan menjalankan baris seperti ini; tentu saja ubah [your_database_user]
dan [hostname]
untuk mencocokkan setelan Anda:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Itu akan menunjukkan kepada Anda daftar GRANT
yang tersedia s untuk pengguna di host tertentu. Jika mereka memiliki GRANT
s yang memungkinkan akses jarak jauh—seperti menggunakan karakter pengganti %
host—maka Anda sudah siap. Jika mereka tidak memiliki GRANT
s Anda dapat menjalankan perintah MySQL berikut; tentu saja ubah [your_database]
dan [your_database_user]
untuk mencocokkan setelan Anda:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
Keduanya GRANT
baris menerapkan seperangkat hak akses yang cukup standar ke database. Baris pertama menerapkannya ke koneksi apa pun dalam rentang jaringan LAN 192.168.x.x
. Baris kedua menerapkannya ke koneksi apa pun dalam rentang jaringan LAN 10.x.x.x
. Saya suka melakukan itu untuk mencakup semua basis di jaringan internal. FLUSH PRIVILEGES;
. terakhir baris pada dasarnya memberitahu MySQL untuk memuat ulang tabel hak pengguna yang memungkinkan hibah tersebut berlaku.