เข้าถึงฐานข้อมูลระยะไกล mysql จากบรรทัดคำสั่ง


190

ฉันมีเซิร์ฟเวอร์ที่มี Rackspace ฉันต้องการเข้าถึงฐานข้อมูลจากบรรทัดคำสั่งเครื่องท้องถิ่น

ฉันพยายามเช่น:

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

แต่มันทำให้เกิดข้อผิดพลาด:

ข้อผิดพลาด 2003 (HY000):

ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน 'my.application.com' (10061)

สาเหตุของข้อผิดพลาดนี้คืออะไรและฉันจะเชื่อมต่อกับฐานข้อมูลระยะไกลได้อย่างไร


5
10061= การเชื่อมต่อถูกปฏิเสธ
Danny Beckett

คำตอบ:


292

ในการเข้าสู่คอนโซล mysql โดยตรงให้ใช้คำสั่งด้านล่าง:

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

ตัวอย่างเช่น

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

ไม่มีที่ว่างหลังจาก -pตามที่ระบุในเอกสารประกอบ

จะนำคุณไปยังคอนโซล mysql โดยตรงโดยสลับไปยังฐานข้อมูลที่กล่าวถึง

31-07-2019 - แก้ไขไวยากรณ์


23
ฉันต้องล้อมรหัสผ่านด้วยเครื่องหมายอัญประกาศเดี่ยว iemysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady

2
ในการระบุชื่อฐานข้อมูลเราจำเป็นต้องเพิ่ม -D mysql -u {ชื่อผู้ใช้} -p {รหัสผ่าน} -h {ip ของเซิร์ฟเวอร์ระยะไกล} -D {ชื่อฐานข้อมูล}
randeepsp

1
เกิดอะไรขึ้นถ้าเราจำเป็นต้องระบุพอร์ตเฉพาะ?
Serge

2
ไม่ทำงานใน Terminal ใน MacOS High Sierra เวอร์ชั่น 10.13.3
realPK

9
ไม่มีการแทรกแซงพื้นที่หลังจาก-p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
อีวานโจว

33

แก้ไขไฟล์ my.cnf:

vi /etc/my.cnf:

ทำให้เเน่นอน:

bind-address=YOUR-SERVER-IP

และถ้าคุณมีสาย:

skip-networking

ตรวจสอบให้แน่ใจเพื่อแสดงความคิดเห็น:

#skip-networking

อย่าลืมรีสตาร์ท:

/etc/init.d/mysqld restart


bind-address = YOUR-SERVER-IP นี่ IP ใดที่ฉันต้องพูดถึงมันคือ IP เซิร์ฟเวอร์ระยะไกล?
user1986299

@ user1986299 ไม่ต้องการ IP ของเซิร์ฟเวอร์ของคุณ (ไม่ใช่รีโมต)
alfasin

1
คุณควรให้สิทธิ์การเข้าถึงแก่คุณ ... ล็อกอินฐานข้อมูลของคุณจากเซิร์ฟเวอร์ท้องถิ่นโดยพิมพ์ mysql แล้ว:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin

5
ไม่เคยให้ 'root' @ '%' นี่เป็นความปลอดภัยที่ยิ่งใหญ่ไม่!
josh123a123

1
@alfasin นี่เป็นบิดขนาดเล็กที่มีผลกระทบลึกขอบคุณ!
Christopher Schönfeldt

30

เพียงแค่ใส่มันลงใน terminal ที่ Ubuntu

mysql -u username -h host -p

ตอนนี้กด Enter

เทอร์มินัลจะถามรหัสผ่านป้อนรหัสผ่านและคุณเข้าสู่เซิร์ฟเวอร์ฐานข้อมูล


14

ลองคำสั่งmysql -uuser -hhostname -PPORT -ppasswordนี้

ฉันต้องเผชิญกับสถานการณ์ที่คล้ายกันและต่อมาเมื่อพอร์ต mysql สำหรับโฮสต์ถูกป้อนด้วยคำสั่งก็แก้ไขได้


5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordทำงานให้ฉัน
Mahebub A Sayyed

14

สำหรับ Mac ให้ใช้คำสั่งต่อไปนี้:

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

จากนั้นป้อนรหัสผ่านเมื่อได้รับแจ้ง


12

หากคุณไม่ต้องการใช้ช่องสัญญาณ ssh ในmy.cnfหรือmysqld.cnfคุณต้องเปลี่ยน127.0.0.1ด้วยที่อยู่ IP ท้องถิ่นของคุณ ( 192.168.1.100 ) เพื่อให้สามารถเข้าถึง Lan ได้ ตัวอย่างร้อง:

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

ค้นหาbind-addressในmy.cnfหรือmysqld.cnf

bind-address            =  127.0.0.1

และเปลี่ยน127.0.0.1เป็น192.168.1.100 (ที่อยู่ IP ในระบบ)

bind-address            =  192.168.1.100

หากต้องการใช้การเปลี่ยนแปลงที่คุณทำต้องรีสตาร์ทเซิร์ฟเวอร์ mysql โดยใช้คำสั่งถัดไป

sudo /etc/init.d/mysql restart

แก้ไขผู้ใช้รูทสำหรับ lan acces (เรียกใช้คำสั่งต่อไปนี้ในเซิร์ฟเวอร์ระยะไกลที่คุณต้องการเข้าถึง)

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;

หากคุณต้องการเข้าถึงได้จากที่อยู่ IP เฉพาะให้เปลี่ยน'root' @ '%'เป็น'root' @ '(ที่อยู่ IP หรือชื่อโฮสต์)'

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;

จากนั้นคุณสามารถเชื่อมต่อ:

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

ทดสอบบนเซิร์ฟเวอร์ Ubuntu 18.04


คำตอบที่ดีที่สุด! ขอบคุณ
Nastro

8
  1. telnet 3306ความพยายาม หากไม่ได้เปิดการเชื่อมต่ออาจมีการตั้งค่าไฟร์วอลล์หรือเซิร์ฟเวอร์ไม่ฟัง (หรือไม่ทำงาน)

  2. ทำงานnetstat -anบนเซิร์ฟเวอร์เพื่อดูว่าเซิร์ฟเวอร์ทำงานหรือไม่

  3. เป็นไปได้ว่าคุณไม่อนุญาตการเชื่อมต่อระยะไกล

    ดูที่http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html


6

ฉันถือว่าคุณติดตั้ง MySQL ไว้ในเครื่องของคุณแล้ว ดำเนินการคำสั่งด้านล่างหลังจากกรอกรายละเอียดที่ขาดหายไป:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 

2

ต้องตรวจสอบว่าการเข้าถึงพอร์ต 3306 นั้นถูกบล็อกหรือไม่โดยไฟร์วอลล์


ฉันจะตรวจสอบเรื่องนี้ได้อย่างไร
ChandraMouli Poreddy

2

มีคำสั่งง่ายๆ

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

ตัวอย่าง

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb

{hostip} จะไม่เพิ่มรายละเอียดพอร์ตใด ๆ เช่น 192.10.10.26::45124
Manish Goswami

1

วิธีนี้ใช้ได้ผลสำหรับฉัน:

บนเครื่องรีโมตของคุณ (ตัวอย่าง: 295.13.12.53) มีการเข้าถึงเครื่องรีโมตเป้าหมายของคุณ (ซึ่งรันเซิร์ฟเวอร์ mysql)

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

อธิบาย:

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 - ไม่ใช่ที่อยู่ IP ในเครื่องเป็นที่อยู่ IP ที่คุณใช้ในตัวอย่างนี้ 295.13.12.53

your_ssh_mashine_local_port - นี่คือพอร์ตที่กำหนดเองไม่ใช่ 22 ในตัวอย่างนี้คือ 3306

target_ipaddress - ip ของเครื่องที่คุณพยายามดัมพ์ DB

target_port - 3306 นี่คือพอร์ตจริงสำหรับเซิร์ฟเวอร์ MySQL

user @ your_ip_address - นี่คือข้อมูลประจำตัว ssh สำหรับ ssh mashine ที่คุณเชื่อมต่อ

เมื่อทำสิ่งนี้เสร็จแล้วให้กลับไปที่เครื่องของคุณและทำสิ่งนี้:

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

จะขอรหัสผ่านใส่รหัสผ่านของคุณและคุณจะเชื่อมต่อ หวังว่านี่จะช่วยได้


1

ลองสิ่งนี้มันใช้งานได้:

mysql -h {ชื่อโฮสต์} -u {ชื่อผู้ใช้} -p {รหัสผ่าน} -N -e "{แบบสอบถามเพื่อดำเนินการ}"



0

ฉันได้รับข้อผิดพลาดเดียวกันมากเกินไป แต่พบว่ามีประโยชน์โดยการสร้างผู้ใช้ mysql ใหม่บนเซิร์ฟเวอร์ mysql ระยะไกลแล้วเชื่อมต่อ รันคำสั่งต่อไปนี้บนรีโมตเซิร์ฟเวอร์:

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;

ตอนนี้คุณสามารถเชื่อมต่อกับ mysql ระยะไกลด้วยคำสั่งดังต่อไปนี้

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

นี่คือโพสต์แบบเต็ม:

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


0

เซิร์ฟเวอร์ mysql มักจะถูกกำหนดค่าให้ฟังเฉพาะ localhost (127.0.0.1) ซึ่งเว็บเหล่านั้นถูกใช้โดยเว็บแอปพลิเคชัน

หากเป็นกรณีของคุณ แต่คุณมีการเข้าถึง SSH ไปยังเซิร์ฟเวอร์ของคุณคุณสามารถสร้าง ssh tunnel และเชื่อมต่อผ่านสิ่งนั้นได้

บนเครื่องของคุณให้สร้างอุโมงค์

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

(ตัวอย่างนี้ใช้พอร์ตโลคัล 3307 ในกรณีที่คุณยังมี mysql ทำงานบนเครื่องโลคอลของคุณและใช้พอร์ตมาตรฐาน 3306)

ตอนนี้คุณควรจะเป็นเบียร์เพื่อเชื่อมต่อกับ

mysql -u $user -p -h 127.0.0.1 -P 3307

0

อันนี้ใช้ได้สำหรับฉันใน mysql 8 แทนที่hostnameด้วยชื่อโฮสต์ของคุณและport_numberด้วย port_number ของคุณคุณยังสามารถเปลี่ยน mysql_user ของคุณได้ถ้าเขาไม่รูท

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

ข้อมูลเพิ่มเติมที่นี่


0

หากคุณใช้ Windows ให้ลองใช้ Visual Studio Code กับปลั๊กอิน MySQL ซึ่งเป็นวิธีที่ง่ายและบูรณาการในการเข้าถึงข้อมูล MySQL บนเครื่อง windows และตารางฐานข้อมูลที่ระบุไว้และสามารถดำเนินการแบบสอบถามที่กำหนดเองใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.