MySQL 5.1.31 berjalan di Windows XP.
Dari server MySQL lokal (192.168.233.142) saya dapat terhubung sebagai root sebagai berikut:
>mysql --host=192.168.233.142 --user=root --password=redacted
Dari mesin jarak jauh (192.168.233.163), saya dapat melihat bahwa port mysql terbuka:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Tetapi ketika mencoba untuk terhubung ke mysql dari mesin jarak jauh , saya menerima:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
Saya hanya memiliki 2 entri di mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
Apa lagi yang perlu saya lakukan untuk mengaktifkan akses jarak jauh?
EDIT
Seperti yang disarankan oleh Paulo di bawah ini, saya mencoba mengganti entri mysql.user untuk% dengan entri khusus IP, jadi tabel pengguna saya sekarang terlihat seperti ini:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Saya kemudian menghidupkan ulang mesin, tetapi masalah tetap ada.
PASSWORD
dengan kata sandi akun. Saya mencoba hanya perubahan di atasUSERNAME
danIP
dan itu tidak berhasil sampai saya berubahPASSWORD
.Saya mendapatkan kesalahan yang sama setelah memberikan akses jarak jauh sampai saya membuat ini:
Dari
/etc/mysql/my.cnf
Di versi mysql yang lebih baru, lokasi file tersebut adalah
/etc/mysql/mysql.conf.d/mysqld.cnf
# 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
(komentar baris ini:
bind-address = 127.0.0.1
)Lalu lari
service mysql restart
.sumber
bind-address
tidak berhasil untuk saya. Salah satubind-address = 0.0.0.0
ataubind-address = <server_ip>
bekerja.Secara default di akses jarak jauh server MySQL dinonaktifkan. Proses untuk menyediakan akses jarak jauh kepada pengguna adalah.
PATH
mysql -uroot -proot
(atau apa pun kata sandi rootnya.)mysql>
GRANT ALL PRIVILEGES ON *.* TO 'username'@'IP' IDENTIFIED BY 'password';
Di sini IP adalah alamat IP yang ingin Anda izinkan akses jarak jauh, jika kami memasukkan
%
alamat IP apa pun dapat mengakses dari jarak jauh.Contoh:
C:\Users\UserName> cd C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -uroot -proot mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root'; Query OK, 0 rows affected (0.27 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.25 sec)
Ini untuk pengguna lain.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'testUser'@'%' IDENTIFIED BY 'testUser'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
Semoga ini bisa membantu
sumber
0 rows affected
adalah norma :) Juga,service mysqld restart
disarankan di bagian akhir. [mysqld
terkadang hanyamysql
]Bantuan Paulo menuntun saya ke solusi. Itu adalah kombinasi dari berikut ini:
Shell bash memperlakukan tanda dolar sebagai karakter khusus untuk perluasan ke variabel lingkungan, jadi kita perlu menghindarinya dengan garis miring terbalik. Kebetulan, kita tidak perlu melakukan ini jika tanda dolar adalah karakter terakhir dari kata sandi.
Sebagai contoh, jika kata sandi Anda adalah "pas $ word", dari Linux bash kita harus terhubung sebagai berikut:
# mysql --host=192.168.233.142 --user=root --password=pas\$word
sumber
mysql --host=192.168.233.142 --user=root --password='pas$word'
stackoverflow.com/a/6697781/500942Apakah Anda memiliki firewall? pastikan port 3306 terbuka.
Di windows, secara default akun root mysql dibuat yang diizinkan untuk memiliki akses dari localhost hanya kecuali Anda telah memilih opsi untuk mengaktifkan akses dari mesin jarak jauh selama instalasi.
membuat atau memperbarui pengguna yang diinginkan dengan '%' sebagai nama host.
contoh:
CREATE USER 'krish'@'%' IDENTIFIED BY 'password';
sumber
Coba
flush privileges
lagi.Coba mulai ulang server untuk memuat ulang hibah.
Coba buat pengguna dengan host "192.168.233.163". "%" tampaknya tidak mengizinkan semua (aneh)
sumber
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
Dalam kasus saya, saya mencoba untuk terhubung ke server mysql jarak jauh di cent OS. Setelah melalui banyak solusi (memberikan semua hak istimewa, menghapus pengikatan ip, mengaktifkan jaringan) masalah masih belum terpecahkan.
Ternyata, saat mencari berbagai solusi, saya menemukan iptables, yang membuat saya menyadari port mysql 3306 tidak menerima koneksi.
Berikut adalah catatan kecil tentang cara saya memeriksa dan menyelesaikan masalah ini.
Memeriksa apakah port menerima koneksi:
telnet (ip server mysql) [portNo]
Menambahkan aturan tabel ip untuk mengizinkan koneksi di port:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Tidak akan merekomendasikan ini untuk lingkungan produksi, tetapi jika iptables Anda tidak dikonfigurasi dengan benar, menambahkan aturan mungkin masih belum menyelesaikan masalah. Dalam hal berikut ini harus dilakukan:
layanan iptables berhenti
Semoga ini membantu.
sumber
jika Anda menggunakan ip dinamis cukup berikan akses ke 192.168.2.% jadi sekarang Anda tidak perlu khawatir tentang memberikan akses ke alamat ip Anda setiap saat.
sumber
Saya kesulitan dengan login jarak jauh ke MYSQL untuk instans Amazon EC2 Linux saya. Menemukan solusinya adalah memastikan grup keamanan saya menyertakan aturan masuk untuk MySQL port 3306 untuk memasukkan alamat IP saya (atau 0.0.0.0/0 untuk di mana saja). Langsung bisa terhubung dari jarak jauh segera setelah saya menambahkan aturan ini.
sumber
Lokasi baru untuk file konfigurasi mysql adalah
sumber
Driver MySQL ODBC 3.51 adalah karakter khusus dalam kata sandi tidak ditangani.
"Peringatan - Anda mungkin mengalami sakit kepala yang parah dengan MySQL ODBC 3.51 jika kata sandi dalam perintah GRANT Anda berisi karakter khusus, seperti! @ # $% ^?. Driver ODBC MySQL ODBC 3.51 tidak mendukung karakter khusus ini di kotak kata sandi. Satu-satunya pesan kesalahan yang akan Anda terima adalah "Akses ditolak" (menggunakan kata sandi: YES) "- dari http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
sumber
Kombinasi pengguna / host mungkin dibuat tanpa sandi.
Saya berasumsi bahwa saat menambahkan host baru untuk pengguna yang sudah ada (menggunakan aplikasi GUI), kata sandi yang ada juga akan digunakan untuk kombinasi pengguna / host baru.
Saya bisa masuk dengan
secara lokal, tetapi tidak dari IPADDRESS dengan
mysql -u --host=HOST -p PASSWORD
(Saya sebenarnya bisa masuk dari IPADDRESS tanpa menggunakan kata sandi)
mysql -u --host=HOST
Mengatur kata sandi memungkinkan akses:
set password for '<USER>'@'<IPADDRESS>' = '<PASSWORD>';
sumber
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
yang membawa saya ke artikel ini: knowmysql.blogspot.com/2013/09/… Setelah mengikuti langkah-langkah itu, akhirnya saya dapat terhubung ke server.