Bagaimana cara mengatur server MySql untuk menerima koneksi jarak jauh?

16

Saya menginstal server MySql di desktop Ubuntu. Saya dapat menghubungkan MySql Query Browser ke dalamnya ketika menentukan Server Hostnameas localhost, tetapi ketika saya menggantinya dengan IP mesin, ia berhenti berfungsi (bahkan jika Browser Kueri MySql berjalan di mesin yang sama).

Yang saya lakukan sejauh ini adalah menghapus iptables, tetapi sepertinya tidak ada hubungannya dengan itu.

Ini pesan kesalahannya

Tidak dapat terhubung ke host '192.168.0.2'.

Kesalahan MySQL Nr. 2003

Tidak dapat terhubung ke server MySQL di '192.168.0.2' (111)

Klik tombol 'Ping' untuk melihat apakah ada masalah jaringan.

Tapi pingnya ok

Jader Dias
sumber

Jawaban:

22

Anda harus mengikat mysqld Anda ke IP yang berbeda dari 127.0.0.1.

Buka my.cnf Anda (biasanya /etc/mysql/my.cnf) dan ubah baris yang mengatakan

bind = 127.0.0.1

ke IP apa pun yang digunakan mesin Anda untuk terhubung ke dunia luar. 0.0.0.0mengikat ke semua alamat IP. Jangan lupa untuk memulai kembali mysqld Anda setelah perubahan itu.

halfdan
sumber
mendapat kesalahan yang berbeda sekarang: Tidak dapat terhubung ke host '192.168.0.2'. Kesalahan MySQL Nr. 1130 Host 'apa pun-vubuntu.local' tidak diizinkan untuk terhubung ke server MySQL ini
Jader Dias
user @ localhost dan user @ <hostname> berbeda. Anda harus menambahkan pengguna untuk dapat terhubung dari host jarak jauh.
James
Ini bukan masalahnya. Saya sudah melakukan ini dan saya masih mendapatkan kesalahan.
Cerin
Haruskah begitu bind-address?
Thomas Weller
5

Selain jawaban halfdan saya harus menjalankan perintah mysql berikut:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Seperti yang saya pelajari

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Jader Dias
sumber
2

Beberapa masalah yang lebih potensial dijelaskan di sini:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/en /access-denied.html

Jika Anda ingin memberikan semua hak istimewa ke semua database, coba

grant all on *.* to 'joe'@'%';

Namun, sebelum Anda melakukannya, pastikan Anda memiliki pengguna di database "mysql" yang memiliki "Host" yang disetel ke alamat IP Anda - dalam kasus saya, IP saya ada di rumah. Jadi pengguna "joe" mungkin memiliki lebih dari satu catatan, satu untuk setiap IP yang dapat dihubungi. Untuk melihat apa yang sudah Anda miliki di sana:

use mysql;
select Host, User, Password from user where user='joe';`

Dalam kasus saya, ternyata pengguna saya sekarang memiliki IP yang benar tetapi kata sandinya juga hilang. Saya memotong kata sandi (hash atau semacamnya) dan ini memecahkan masalah koneksi jarak jauh saya:

update user set Password='5493845039485' where user='joe';

Satu hal lagi, di my.cnf Anda mungkin ingin mengatur "port = 3306" atau port apa pun yang Anda rencanakan untuk digunakan.

PJ Brunet
sumber