Saya telah menginstal server MySQL pada mesin remote Ubuntu. The root
pengguna didefinisikan dalam mysql.user
tabel dengan cara ini:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Saya dapat mengakses dengan pengguna root
dari antarmuka baris perintah mesin jarak jauh yang sama menggunakan mysql
klien standar . Sekarang saya ingin mengizinkan akses root dari setiap host di internet , jadi saya mencoba menambahkan baris berikut (ini adalah duplikat yang tepat dari baris pertama dari dump sebelumnya, kecuali untuk host
kolom):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| % | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Tetapi klien saya di PC pribadi saya terus memberi tahu saya (saya mengaburkan IP server):
SQL Error (2003): Tidak dapat terhubung ke server MySQL di '46 .xxx '(10061)
Saya tidak tahu apakah itu kesalahan otentikasi atau kesalahan jaringan. Pada firewall server saya mengaktifkan port 3306 / TCP untuk 0.0.0.0/0 , dan itu tidak masalah bagi saya ...
sumber
bind-address
di my.cnfJawaban:
Ada dua langkah dalam proses itu:
a) Berikan hak istimewa. Sebagai pengguna root dijalankan dengan ini mengganti
'password'
dengan kata sandi root Anda saat ini:b) mengikat ke semua alamat:
Cara termudah adalah dengan mengomentari baris dalam
my.cnf
file Anda :dan mulai kembali mysql
Secara default ia hanya mengikat ke localhost, tetapi jika Anda berkomentar baris itu mengikat ke semua antarmuka yang ditemukannya. Mengomentari baris sama dengan
bind-address=*
.Untuk memeriksa di mana layanan mysql telah diikat dijalankan sebagai root:
Pembaruan untuk Ubuntu 16:
File konfigurasi adalah (sekarang)
(setidaknya pada standar Ubuntu 16)
sumber
USE mysql; UPDATE user SET Grant_priv='Y' WHERE user='root';
Jalankan kueri berikut:
use mysql;
update user set host='%' where host='localhost'
CATATAN: Tidak direkomendasikan untuk penggunaan produksi.
sumber
update mysql.user set host='%' where user='root'
Terkadang
seharusnya
sumber
MYSQL 8.0 - buka klien baris perintah mysql
GRANT ALL PRIVILEGES ON *. * UNTUK 'root' @ 'localhost';
gunakan mysql
UPDATE mysql.user SET host = '%' WHERE user = 'root';
Mulai ulang layanan mysql
sumber
MariaDB berjalan pada Raspbian - file yang berisi bind-address sulit untuk ditentukan. MariaDB memiliki beberapa informasi yang tidak terlalu membantu tentang masalah ini.
Saya menggunakan
untuk menemukan di mana benda sialan itu.
Saya juga harus mengatur hak dan host di mysql seperti yang ditunjukkan semua orang di atas.
Dan juga bersenang-senang membuka port 3306 untuk koneksi jarak jauh ke Raspberry Pi saya - akhirnya menggunakan iptables-persistent .
Semua bekerja dengan baik sekarang.
sumber
jika Anda memiliki banyak jaringan yang terpasang pada OS Anda, Anda harus menentukan salah satu dari jaringan ini dalam add-bind dari file my.conf. sebuah contoh:
ip ini dari konfigurasi ethX.
sumber
Dalam kasus saya, pengaturan "bind-address" adalah masalahnya. Mengomentari pengaturan ini di
my.cnf
lakukan tidak membantu, karena dalam kasus mysql saya set default ke 127.0.0.1 untuk beberapa alasan.Untuk memverifikasi pengaturan apa yang digunakan MySql, buka baris perintah pada kotak lokal Anda:
Bacakan pengaturan saat ini:
Anda akan melihat 0.0.0.0 di sini jika Anda ingin mengizinkan akses dari semua host. Jika ini bukan masalahnya, edit Anda
/etc/mysql/my.cnf
dan atur alamat-mengikat di bawah bagian [mysqld]:Terakhir restart server MySql Anda untuk mengambil pengaturan baru:
Coba lagi dan periksa apakah pengaturan baru telah diambil.
sumber
mysql_update
adalah apa yang kamu butuhkan.Saya tidak tahu mengapa ada orang yang mengikuti cara yang lebih kompleks untuk memperbaiki masalah ini, ketika MySql dengan ramah membangun alat yang sudah melakukan ini ...
sumber