Akses basis data jauh mysql dari baris perintah

190

Saya memiliki server dengan Rackspace. Saya ingin mengakses database dari baris perintah mesin lokal saya.

Saya mencoba seperti:

mysql -u username -h my.application.com -ppassword

Tapi itu memberikan kesalahan:

GALAT 2003 (HY000):

Tidak dapat terhubung ke server MySQL di 'my.application.com' (10061)

Apa yang menyebabkan kesalahan ini dan bagaimana saya bisa terhubung ke basis data jauh?

pengguna1986299
sumber
5
10061= Koneksi ditolak
Danny Beckett

Jawaban:

294

Untuk langsung masuk ke konsol mysql jarak jauh, gunakan perintah di bawah ini:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}

Sebagai contoh

mysql -u root -p'root' \
        -h 127.0.0.1 -P 3306 \
        -D local

tidak ada spasi setelah -p seperti yang ditentukan dalam dokumentasi

Ini akan membawa Anda ke konsol mysql secara langsung dengan beralih ke database yang disebutkan.

31-07-2019 - sintaks yang diedit

Venkat M
sumber
23
Saya harus mengelilingi kata sandi dalam tanda kutip tunggal. yaitumysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady
2
Untuk menentukan nama basis data, kita perlu menambahkan -D. mysql -u {nama pengguna} -p {kata sandi} -h {server jauh ip} -D {nama DB}
randeepsp
1
bagaimana jika kita perlu menentukan PORT spesifik?
Serge
2
Tidak bekerja di Terminal pada MacOS High Sierra Versi 10.13.3
realPK
9
tidak ada ruang intervensi setelah -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Ivan Chau
33

edit file my.cnf:

vi /etc/my.cnf:

pastikan bahwa:

bind-address=YOUR-SERVER-IP

dan jika Anda memiliki garis:

skip-networking

pastikan untuk berkomentar:

#skip-networking

jangan lupa untuk memulai kembali:

/etc/init.d/mysqld restart

Alfasin
sumber
bind-address = IP-SERVER ANDA. di sini IP yang perlu saya sebutkan apakah itu IP server jauh?
user1986299
@ user1986299 tidak, Anda memerlukan IP server Anda (bukan remote)
alfasin
1
Anda harus memberi diri Anda akses ... login DB Anda dari server lokal dengan mengetik mysql dan kemudian:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin
5
JANGAN PERNAH memberikan 'root' @ '%' ini adalah keamanan besar tidak, tidak!
josh123a123
1
@alfasin ini adalah tweak kecil dengan dampak yang dalam, terima kasih!
Christopher Schönfeldt
30

cukup letakkan ini di terminal di ubuntu:

mysql -u username -h host -p

Sekarang tekan enter

terminal akan menanyakan kata sandi Anda, memasukkan kata sandi dan Anda masuk ke server basis data

Kedar Jangir
sumber
14

Coba perintah ini mysql -uuser -hhostname -PPORT -ppassword.

Saya menghadapi situasi yang sama dan kemudian ketika port mysql untuk host dimasukkan dengan perintah, itu diselesaikan.

rajarajan2809
sumber
5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordbekerja untuk saya
Mahebub A Sayyed
14

Untuk Mac, gunakan perintah berikut:

mysql -u app -h hostaddress -P port -D dbname -p

lalu masukkan kata sandi saat diminta.

KayV
sumber
12

Jika Anda tidak ingin menggunakan ssh tunnel, di my.cnf atau mysqld.cnf Anda harus mengubah 127.0.0.1 dengan alamat ip lokal Anda ( 192.168.1.100 ) agar dapat mengakses Lan. contoh di bawah:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Cari bind-address di my.cnf atau mysqld.cnf

bind-address            =  127.0.0.1

dan ubah 127.0.0.1 menjadi 192.168.1.100 (alamat ip lokal)

bind-address            =  192.168.1.100

Untuk menerapkan perubahan yang Anda buat, harus me-restart server mysql menggunakan perintah berikutnya.

sudo /etc/init.d/mysql restart

Ubah root pengguna untuk akses lan (jalankan kueri di bawah ini di server jauh yang ingin Anda akses)

root@192.168.1.100:~$ mysql -u root -p

..

CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Jika Anda ingin memiliki akses hanya dari alamat ip tertentu, ubah 'root' @ '%' menjadi 'root' @ '(alamat ip atau nama host)'

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Kemudian Anda dapat terhubung:

nobus@xray:~$ mysql -h 192.168.1.100 -u root -p

diuji di server ubuntu 18.04

Kornea Valentin
sumber
Jawaban terbaik! Terima kasih
Nastro
6

Saya berasumsi Anda telah menginstal MySQL pada mesin Anda. Jalankan perintah di bawah ini setelah mengisi detail yang hilang:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
realPK
sumber
2

Harus memeriksa apakah akses masuk ke port 3306 diblokir atau tidak oleh firewall.

Amirol Ahmad
sumber
Bagaimana saya bisa memeriksanya
ChandraMouli Poreddy
2

Ada perintah sederhana.

mysql -h {hostip} -P {port} -u {username} -p {database}

Contoh

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Manish Goswami
sumber
{hostip} tidak akan menambahkan detail port apa pun seperti 192.10.10.26::45124
Manish Goswami
1

solusi ini bekerja untuk saya:

Di mesin jarak jauh Anda (contoh: 295.13.12.53) memiliki akses ke mesin jarak jauh target Anda (yang menjalankan server mysql)

ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 user@295.13.12.53

Dijelaskan:

ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port user@your_ip_address -N

your_ssh_mashine_ipaddress - ini bukan alamat ip lokal, ini adalah alamat ip yang Anda ssh, dalam contoh ini 295.13.12.53

your_ssh_mashine_local_port -ini adalah port khusus bukan 22, dalam contoh ini adalah 3306.

target_ipaddress - ip dari mesin yang Anda coba untuk membuang DB.

target_port - 3306 ini adalah port nyata untuk server MySQL.

user @ your_ip_address - ini adalah kredensial ssh untuk ssh mashine yang Anda sambungkan

Setelah semua ini selesai maka kembali ke mesin Anda dan lakukan ini:

mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql

Akan meminta kata sandi, memasukkan kata sandi Anda dan Anda terhubung. Semoga ini membantu.

violentr
sumber
1

Coba ini, Ini berhasil:

mysql -h {hostname} -u {username} -p {password} -N -e "{permintaan untuk mengeksekusi}"

ravi teja
sumber
0

Anda harus memasukkan kata sandi Anda dengan 'p'

mysql -u root -u 1.1.1.1 -p'MyPass'
Karin Lahyani
sumber
0

Saya juga mendapatkan kesalahan yang sama. Tetapi menemukannya berguna dengan membuat pengguna mysql baru di server mysql jauh kemudian terhubung. Jalankan perintah berikut di server jauh:

CREATE USER 'openvani'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'localhost WITH GRANT 
OPTION;
CREATE USER 'openvani'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Sekarang Anda dapat terhubung dengan mysql jarak jauh dengan mengikuti perintah.

mysql -u openvani -h 'any ip address'-p

Inilah pos lengkapnya:

http://openvani.com/blog/connect-remotely-mysql-server/

Davinder Snehi
sumber
0

server mysql biasanya dikonfigurasi untuk hanya mendengarkan localhost (127.0.0.1), di mana mereka digunakan oleh aplikasi web.

Jika itu adalah kasus Anda tetapi Anda memiliki akses SSH ke server Anda, Anda dapat membuat terowongan ssh dan terhubung melalui itu.

Di mesin lokal Anda, buat terowongan.

ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host

(contoh ini menggunakan port lokal 3307, jika Anda juga memiliki mysql berjalan pada mesin lokal Anda dan menggunakan port standar 3306)

Sekarang Anda harus terhubung dengan ale

mysql -u $user -p -h 127.0.0.1 -P 3307
mivk
sumber
0

Yang ini bekerja untuk saya di mysql 8, ganti hostnamedengan nama host Anda dan port_numberdengan port_number Anda, Anda juga dapat mengubah mysql_user Anda jika ia tidak root

      mysql --host=host_name --port=port_number -u root -p

Informasi Lebih Lanjut Di Sini

pungutan
sumber
0

Jika Anda menggunakan windows, coba Visual Studio Code dengan plugin MySQL, cara mudah dan terintegrasi untuk mengakses data MySQL di mesin windows. Dan tabel database terdaftar dan dapat menjalankan permintaan kustom apa pun.

Cosmo Arun
sumber