Saya telah menginstal MySQL Community Edition 5.5 pada mesin lokal saya dan saya ingin memperbolehkan koneksi jarak jauh sehingga saya dapat terhubung dari sumber eksternal.
Bagaimana saya bisa melakukan itu?
sudo mysql_secure_installation
. FYI.
Saya telah menginstal MySQL Community Edition 5.5 pada mesin lokal saya dan saya ingin memperbolehkan koneksi jarak jauh sehingga saya dapat terhubung dari sumber eksternal.
Bagaimana saya bisa melakukan itu?
sudo mysql_secure_installation
. FYI.
Jawaban:
Itu diizinkan secara default di MySQL.
Yang dinonaktifkan secara default adalah root
akses jarak jauh . Jika Anda ingin mengaktifkannya, jalankan perintah SQL ini secara lokal:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Dan kemudian temukan baris berikut dan beri komentar di my.cnf
file Anda , yang biasanya hidup /etc/mysql/my.cnf
di sistem Unix / OSX. Dalam beberapa kasus lokasi file adalah /etc/mysql/mysql.conf.d/mysqld.cnf).
Jika ini adalah sistem Windows, Anda dapat menemukannya di direktori instalasi MySQL, biasanya seperti C:\Program Files\MySQL\MySQL Server 5.5\
dan nama filenya my.ini
.
Ubah baris
bind-address = 127.0.0.1
untuk
#bind-address = 127.0.0.1
Dan restart server MySQL ( Unix / OSX , dan Windows ) agar perubahan diterapkan.
my.cnf
file dan tidak menemukan bind-address
arahan di dalamnya, perhatikan bahwa dalam kasus saya (MySQL versi 14.14 pada Ubuntu 16.04.2) lokasi untuk file itu/etc/mysql/mysql.conf.d/mysqld.cnf
Setelah melakukan semua hal di atas saya masih tidak bisa login sebagai root
jarak jauh, tetapi Telnetting ke port 3306
mengkonfirmasi bahwa MySQL
menerima koneksi.
Saya mulai melihat pengguna di MySQL dan memperhatikan ada beberapa pengguna root dengan kata sandi yang berbeda.
select user, host, password from mysql.user;
Jadi MySQL
saya mengatur semua kata sandi untuk root lagi dan akhirnya saya bisa login dari jarak jauh root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Hanya catatan dari pengalaman saya, Anda dapat menemukan file konfigurasi di bawah jalur ini /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Saya berjuang selama beberapa waktu untuk menemukan jalan ini)
sudo find /etc -iname 'mysql*.cnf'
Dalam kasus saya, saya mencoba untuk terhubung ke server mysql jarak jauh pada OS sen. Setelah melalui banyak solusi (memberikan semua hak istimewa, menghapus ikatan ip, mengaktifkan jaringan) masalah masih belum terpecahkan.
Ternyata, sambil melihat ke berbagai solusi, saya menemukan iptables, yang membuat saya menyadari port mysql 3306 tidak menerima koneksi.
Berikut ini adalah catatan kecil tentang bagaimana saya memeriksa dan menyelesaikan masalah ini.
telnet (server mysql ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --port 3306 -j MENERIMA
iptables layanan berhenti
Semoga ini membantu.
Silakan ikuti langkah-langkah yang disebutkan di bawah inorder untuk mengatur akses remote wildcard untuk Pengguna MySQL.
(1) Buka cmd.
(2) arahkan ke jalur C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin dan jalankan perintah ini.
mysql -u root -p
(3) Masukkan kata sandi root.
(4) Jalankan perintah berikut untuk memberikan izin.
PEMBERI SEMUA HAK ISTIMEWA DI *. * KE 'USERNAME' @ 'IP' DIIDENTIFIKASI OLEH 'PASSWORD';
USERNAME: Nama pengguna yang ingin Anda hubungkan ke server MySQL.
IP: Alamat IP publik dari tempat Anda ingin mengizinkan akses ke server MySQL.
PASSWORD: Kata sandi nama pengguna yang digunakan.
IP dapat diganti dengan% untuk memungkinkan pengguna terhubung dari alamat IP apa pun.
(5) Siram previleges dengan mengikuti perintah dan keluar.
PRIVILEGUS FLUSH;
keluar; atau \ q
Jika proses server MySQL Anda hanya mendengarkan 127.0.0.1 atau :: 1 maka Anda tidak akan dapat terhubung dari jarak jauh. Jika Anda memiliki bind-address
pengaturan di/etc/my.cnf
hal ini mungkin menjadi sumber masalah.
Anda juga harus menambahkan hak istimewa untuk yang bukan localhost
pengguna.
127.0.0.1
?
Jika Anda menginstal MySQL brew
darinya sebenarnya hanya mendengarkan pada antarmuka lokal secara default. Untuk memperbaikinya Anda perlu mengedit /usr/local/etc/my.cnf
dan mengubah bind-address
dari 127.0.0.1
menjadi *
.
Kemudian jalankan brew services restart mysql
.
Semua proses untuk login jarak jauh. Login jauh tidak aktif secara default. Anda harus membukanya secara manual untuk semua ip..untuk memberikan akses semua ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip spesifik
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
kemudian
flush privileges;
Anda dapat memeriksa Host Pengguna & Kata Sandi Anda
SELECT host,user,authentication_string FROM mysql.user;
Sekarang tugas Anda adalah mengubah ini
bind-address = 127.0.0.1
Anda dapat menemukannya di sini
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
jika Anda tidak menemukan ini di sana maka coba ini
sudo nano /etc/mysql/my.cnf
berkomentar dalam hal ini
#bind-address = 127.0.0.1
Kemudian mulai kembali Mysql
sudo service mysql restart
Sekarang nikmati login jarak jauh
Hanya FYI saya mencabut rambut saya dengan masalah ini selama berjam-jam .. akhirnya saya menghubungi penyedia hosting saya dan menemukan bahwa dalam kasus saya menggunakan server cloud yang di panel kontrol untuk 1and1 mereka memiliki firewall sekunder yang harus Anda kloning dan tambahkan port 3306. Setelah ditambahkan saya langsung masuk ..
Blog ini Cara mengatur server MySQL di Local Area Network akan berguna dalam menyiapkan MySQL
dari awal
Dan untuk orang-orang OS X di luar sana ketahuilah bahwa parameter bind-address biasanya diatur dalam launchd plist dan bukan pada file my.ini. Jadi dalam kasus saya, saya dihapus <string>--bind-address=127.0.0.1</string>
dari /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Jika mysqld
memiliki alamat bind diatur ke loopback / alamat lokal (misalnya 127.0.0.1
), server tidak akan dapat dijangkau dari host jarak jauh, karena antarmuka loopback tidak dapat dijangkau dari host jarak jauh mana pun.
Setel opsi ini ke 0.0.0.0
( ::
untuk IPv4 + 6) untuk menerima koneksi dari host mana pun, atau ke alamat lain yang dapat dijangkau secara eksternal jika Anda hanya ingin memperbolehkan koneksi pada satu antarmuka.
beberapa kali perlu menggunakan nama pc di windows
langkah pertama) masukkan file konfigurasi mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(untuk membiarkan koneksi recibe melalui tcp / ip)
langkah kedua) membuat pengguna di mysql, pengguna tabel, dengan nama pc pada windows propierties, BUKAN ip
Mengaktifkan akses root jarak jauh bisa berbahaya. Akan lebih baik jika Anda mengatur akun pengguna dengan izin yang lebih ketat. Tiga langkah berikut harus melakukannya.
Pastikan baris yang dimulai dengan bind-address ...
setidaknya dikomentari di file my.ini atau my.cnf Anda. Jika tidak ada, lanjutkan. Anda dapat menemukan file ini di C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
Setelah itu, periksa bahwa akun pengguna yang Anda buat koneksi tidak memiliki localhost
dalam bidang Pencocokan Tuan Rumah. Meskipun tidak disarankan, Anda bisa memasukkan %
bidang itu untuk tujuan pengujian. Anda dapat melakukan ini dengan membuka koneksi lokal ke server dengan MySQL Workbench, kemudian pergi ke Server> Users and Privileges dari menu bar dan menemukan akun pengguna yang ingin Anda hubungkan.
Bidang "Limit to Hosts Matching" adalah yang melarang Anda untuk terhubung secara non-lokal. Yaitu membatasi koneksi yang diterima ke pola alamat IP. Idealnya, Anda harus mengakses server MySQL dari alamat IP statis atau subnet, sehingga Anda dapat seketat mungkin.