Host 'xxx.xx.xxx.xxx' tidak diperbolehkan untuk terhubung ke server MySQL

Ini harus mati sederhana, tapi aku tidak bisa mendapatkan itu untuk bekerja untuk kehidupan saya. I'm hanya mencoba untuk melakukan koneksi remote ke server MySQL saya.

menghubungkan sebagai

mysql -u root -h localhost -p  

bekerja dengan baik, tapi mencoba

mysql -u root -h 'any ip address here' -p

gagal dengan kesalahan

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

Di mysql.pengguna` meja, ada yang sama persis entri untuk pengguna 'root' dengan host 'localhost' seperti yang lain dengan host '%'.

I'm di akal saya' end, dan tidak tahu bagaimana untuk melanjutkan. Setiap ide yang datang.

Mengomentari pertanyaan (1)
Larutan

Mungkin tindakan pencegahan keamanan. Anda bisa mencoba menambahkan account administrator baru:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Meskipun seperti Pascal dan lain-lain telah mencatat itu's bukan ide yang bagus untuk memiliki pengguna dengan akses terbuka untuk setiap IP. Jika anda membutuhkan administrasi pengguna, menggunakan akar, dan meninggalkannya di localhost. Untuk setiap tindakan yang menentukan hak-hak istimewa yang anda butuhkan dan membatasi aksesibilitas pengguna seperti Pascal telah menunjukkan di bawah ini.

Edit:

Dari MySQL FAQ:

Jika anda tidak tahu mengapa anda dapatkan Akses ditolak, keluarkan dari pengguna meja semua entri yang memiliki Host nilai-nilai yang mengandung karakter pengganti (entri yang mengandung '%' atau '_' karakter). A kesalahan yang sangat umum adalah untuk menyisipkan baru entri dengan Host='%' dan User='some_user', berpikir bahwa ini memungkinkan anda untuk menentukan localhost untuk menghubungkan dari mesin yang sama. Yang alasan bahwa ini tidak bekerja adalah bahwa default hak-hak istimewa termasuk entri dengan Host='localhost' dan Pengguna=''. Karena yang masuk memiliki Host nilai 'localhost' yang lebih spesifik dari '%', hal ini digunakan dalam preferensi untuk entri baru ketika menghubungkan dari localhost! Yang benar prosedur untuk memasukkan entri kedua dengan Host='localhost' dan User='some_user', atau untuk menghapus entri dengan Host='localhost' dan Pengguna=''. Setelah menghapus entri, ingat untuk mengeluarkan FLUSH PRIVILEGES pernyataan untuk reload tabel hibah. Lihat juga Pasal 5.4.4, "Akses Kontrol, Tahap 1: Koneksi Verifikasi".

Komentar (8)

Satu telah untuk membuat new User MySQL dan menetapkan hak-hak seperti di bawah ini di Query prompt melalui phpMyAdmin atau command prompt:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Setelah selesai dengan semua empat pertanyaan, itu harus terhubung dengan username / password

Komentar (5)

Saya pesan kesalahan yang sama dan mengatakan 'Host XXX tidak diperbolehkan untuk terhubung ke server MySQL' meskipun saya menggunakan root. Berikut ini's bagaimana untuk memastikan bahwa akar memiliki izin yang benar.

Setup saya:

  • Ubuntu 14.04 LTS
  • MySQL v5.5.37

Solusi

  1. Membuka file di bawah 'etc/mysql/my.cnf'
  2. Periksa:
  • port (secara default, ini adalah 'port = 3306')
  • bind-address (secara default, ini adalah 'bind-address = 127.0.0.1'; jika anda ingin membuka semua maka hanya komentar baris ini. Untuk contoh saya, saya'll mengatakan yang sebenarnya server adalah 10.1.1.7)
  1. Sekarang mengakses Database MySQL pada server sebenarnya (misalnya remote address adalah 123.123.123.123 di port 3306 sebagai pengguna 'root' dan saya ingin mengubah hak akses pada database 'dataentry'. Ingat untuk mengubah Alamat IP, Port, dan nama database untuk pengaturan anda)

mysql -u root -p Masukkan password: mysql>GRANT ALL ON . untuk root@'123.123.123.123' DIIDENTIFIKASI OLEH 'put-your-password'; mysql>FLUSH PRIVILEGES; mysql>exit

  1. sudo service mysqld restart
  2. Sekarang anda harus dapat untuk remote terhubung ke database anda. Sebagai contoh, saya'm menggunakan MySQL Workbench dan menempatkan di 'Hostname:10.1.1.7', 'Port:3306', 'Username:root'
Komentar (4)

Anda perlu memberikan akses kepada pengguna untuk setiap nama host.

Ini adalah bagaimana anda tambahkan baru keistimewaan dari phpmyadmin

Goto Hak > Add a new User

Pilih Setiap Host untuk username yang diinginkan

Komentar (1)

Hanya melakukan langkah-langkah berikut:

  1. Menghubungkan ke mysql
mysql -uroot -p
  1. Buat pengguna
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
  1. Memberikan izin
 GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;
  1. Siram hak istimewa
FLUSH PRIVILEGES;
Komentar (2)

Pesan *Host ''xxx.xx.xxx.xxx'' tidak diperbolehkan untuk terhubung ke MySQL server adalah balasan dari server MySQL dengan MySQL client. Melihat bagaimana mengembalikan alamat IP dan hostname.

Jika anda're berusaha untuk menghubungkan dengan mysql -h<hostname> -u<orang> -p dan ia mengembalikan pesan ini dengan alamat IP, maka server MySQL isn't dapat melakukan reverse lookup pada klien. Hal ini penting karena thats bagaimana hal itu maps MySQL client untuk hibah.

Pastikan anda dapat melakukan nslookup <mysqlclient> DARI MySQL server. Jika itu doesn't bekerja, maka ada's tidak ada entri di DNS server. Atau, anda dapat menempatkan sebuah entri di MySQL server's file HOST (<ipaddress> <fullyqualifiedhostname> <hostname> <- order di sini mungkin dalam hal ini).

Sebuah entri di server saya's file host yang memungkinkan reverse lookup dari MySQL client memecahkan masalah ini sangat.

Komentar (1)

Jika anda memodifikasi tabel hibah secara manual (menggunakan INSERT, UPDATE, dll.), anda harus menjalankan a FLUSH PRIVILEGES pernyataan untuk memberitahu server untuk reload tabel hibah.

PS: saya tidak't merekomendasikan untuk memungkinkan setiap host untuk menghubungkan untuk setiap pengguna (terutama yang tidak root use). Jika anda menggunakan mysql untuk aplikasi klien/server, lebih memilih alamat subnet. Jika anda menggunakan mysql dengan web server atau aplikasi server, gunakan Ip tertentu.

Komentar (0)

Cara sederhana:

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD'; 

kemudian

FLUSH PRIVILEGES;

selesai!

Komentar (2)

Sebagian besar dari jawaban-jawaban berikut ini menunjukkan anda membuat pengguna dengan dua host nilai-nilai: satu untuk localhost, dan satu untuk %.

Harap dicatat bahwa kecuali untuk built-in localhost user seperti root, anda don't perlu untuk melakukan hal ini. Jika anda hanya ingin membuat user baru yang dapat masuk dari mana saja, anda dapat menggunakan

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT  ON  TO myuser;

dan itu akan bekerja dengan baik. (Seperti orang lain telah disebutkan,'s merupakan ide yang buruk untuk memberikan hak akses administratif ke pengguna dari setiap domain.)

Komentar (0)

Hanya menggunakan antarmuka yang disediakan oleh MySql's GUI Tool (SQLyog):

Klik pada User manager:

Sekarang, jika anda ingin memberikan akses UNTUK SETIAP PC REMOTE, pastikan bahwa, seperti di bawah gambar, Host bidang nilai % (yang merupakan wildcard)

Komentar (0)

cara yang mudah adalah untuk login ke phpmyadmin dengan akun root , ada goto mysql database dan pilih tabel user , ada edit akun root dan di lapangan tuan rumah menambah % wild card . dan kemudian melalui ssh flush privileges

 FLUSH PRIVILEGES;
Komentar (1)

Hanya menemukan cara yang lebih baik untuk melakukan itu dari control panel hosting anda (saya'm menggunakan DirectAdmin di sini)

hanya pergi ke target server DB di panel kontrol anda, dalam kasus saya: Manajemen MySQL -> pilih DB -> anda akan menemukan: "Akses Host", cukup tambahkan remote host di sini dan bekerja sekarang!

Saya kira ada pilihan yang sama di lain C. panel seperti plesk, dll.

I'm berharap itu membantu anda terlalu.

Komentar (0)

Jika hal ini baru-baru ini menginstal mysql, maka sebelum mengubah apa pun, hanya mencoba untuk menjalankan perintah ini dan kemudian mencoba lagi:

flush privileges;

Ini saja perbaikan masalah untuk saya di Ubuntu 16.04, mysql 5.7.20. YMMV.

Komentar (0)

Nah apa yang dapat anda lakukan adalah hanya membuka mysql.cfg dan anda harus mengubah Bind-address ini

bind-address = 127.0.0.1

dan kemudian Restart mysql dan anda akan dapat untuk menghubungkan server ini.

Melihat ini, anda dapat memiliki gagasan bentuk yang.

ini adalah nyata sol

Komentar (3)

Jika anda kebetulan berjalan pada Windows, Sebuah solusi sederhana adalah untuk menjalankan MySQL server instance configuration wizard. Hal ini di MYSQL grup di start menu. Pada bagian kedua dari layar terakhir klik kotak yang bertuliskan "memungkinkan akses root dari mesin remote".

Komentar (0)

CPANEL solusi

Pergi ke Cpanel, mencari Remote MySQL. Tambahkan IP di bidang input:

Host (% wildcard diperbolehkan)

Komentar untuk mengingat apa IP yang. Itu untuk saya.

Komentar (0)

Pada kesempatan off bahwa seseorang menghadapi masalah ini mengalami itu dari dalam SQLyog, hal ini terjadi:

Saya telah terhubung ke remote database (dari dalam SQLyog) dan bekerja selama beberapa jam. Setelah itu saya meninggalkan sistem untuk beberapa menit, kemudian datang kembali untuk melanjutkan pekerjaan saya - KESALAHAN 1130 ! Apa-apa saya mencoba bekerja; Restart SQLyog tidak't memperbaikinya. Kemudian saya restart sistem - masih tidak't bekerja.

Jadi saya mencoba menghubungkan dari terminal - itu bekerja. Kemudian diulangi lagi pada SQLyog ... dan itu berhasil. Saya dapat't menjelaskan hal lain dari 'random komputer quirkiness', tapi saya pikir itu bisa membantu seseorang.

Komentar (0)

Ini bekerja untuk DirectAdmin;

  1. Pergi ke DirectAdmin.
  2. Pergi ke MySQL Manajemen.
  3. Pilih database.
  4. Di bawah Accesse Host tab, ada sebuah lapangan. Anda harus mengisi field ini dengan xxx.xx.xxx.xx.
  5. Klik pada Add Host.

Selesai. Sekarang anda bisa akses ke DB dengan your_database_username & your_database_password. Begitu Sederhana!

Komentar (0)

Jawaban ini mungkin bisa membantu seseorang...

Semua jawaban ini tidak membantu, kemudian aku sadar bahwa aku lupa untuk memeriksa satu hal yang penting.. port :)

Saya telah mysql yang berjalan di docker container berjalan pada port yang berbeda. Aku menunjuk ke mesin host pada port 3306, yang telah aku mysql server berjalan pada. Saya kontainer memperlihatkan server pada port 33060. Jadi selama ini, saya melihat salah server! doh!

Komentar (0)
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

kesalahan ini karena tidak ada password untuk root , dan ini Mungkin terjadi dengan anda ketika anda mencoba untuk menghubungkan dari luar .

Komentar (0)