Truy cập cơ sở dữ liệu từ xa mysql từ dòng lệnh


190

Tôi có một máy chủ với Rackspace. Tôi muốn truy cập cơ sở dữ liệu từ dòng lệnh máy cục bộ của tôi.

Tôi đã thử như:

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

Nhưng nó đưa ra một lỗi:

LRI 2003 (HY000):

Không thể kết nối với máy chủ MySQL trên 'my.application.com' (10061)

Điều gì gây ra lỗi này và làm thế nào tôi có thể kết nối với cơ sở dữ liệu từ xa?


5
10061= Kết nối bị từ chối
Danny Beckett

Câu trả lời:


289

Để đăng nhập trực tiếp vào bảng điều khiển mysql từ xa, hãy sử dụng lệnh dưới đây:

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

Ví dụ

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

không có khoảng trắng sau -p như được chỉ định trong tài liệu

Nó sẽ đưa bạn đến bảng điều khiển mysql trực tiếp bằng cách chuyển sang cơ sở dữ liệu được đề cập.

31-07-2019 - cú pháp được chỉnh sửa


23
Tôi đã phải bao quanh mật khẩu trong dấu ngoặc đơn. tức làmysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady

2
Để chỉ định tên cơ sở dữ liệu, chúng ta cần thêm -D. mysql -u {tên người dùng} -p {mật khẩu} -h {máy chủ từ xa ip} -D {tên DB}
randeepsp

1
Nếu chúng ta cần chỉ định PORT cụ thể thì sao?
Serge

2
Không hoạt động trong Terminal trên MacOS High Sierra Phiên bản 10.13.3
realPK

9
không có không gian can thiệp sau -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Ivan Chau

33

chỉnh sửa tập tin my.cnf:

vi /etc/my.cnf:

đảm bảo rằng:

bind-address=YOUR-SERVER-IP

và nếu bạn có dòng:

skip-networking

đảm bảo nhận xét nó:

#skip-networking

đừng quên khởi động lại:

/etc/init.d/mysqld restart


địa chỉ liên kết = CỦA BẠN-SERVER-IP. Ở đây IP nào tôi cần đề cập là IP máy chủ từ xa?
dùng1986299

@ user1986299 không, bạn cần IP của máy chủ (không phải từ xa)
alfasin

1
bạn nên cấp cho mình quyền truy cập ... đăng nhập DB của bạn từ máy chủ cục bộ bằng cách nhập mysql và sau đó:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin

5
KHÔNG BAO GIỜ cấp 'root' @ '%' đây là một bảo mật khổng lồ không không!
josh123a123

1
@alfasin đây là một tinh chỉnh nhỏ với tác động sâu sắc, cảm ơn bạn!
Christopher Schönfeldt

30

chỉ cần đặt cái này lên terminal tại ubfox:

mysql -u username -h host -p

Bây giờ nhấn enter

thiết bị đầu cuối sẽ hỏi bạn mật khẩu, nhập mật khẩu và bạn vào máy chủ cơ sở dữ liệu


14

Hãy thử lệnh này mysql -uuser -hhostname -PPORT -ppassword.

Tôi đã phải đối mặt với một tình huống tương tự và sau đó khi cổng mysql cho máy chủ được nhập bằng lệnh, nó đã được giải quyết.


5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordlàm việc cho tôi
Mahebub A Sayyed 8/11/2016

14

Đối với Mac, sử dụng lệnh sau:

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

và sau đó nhập mật khẩu khi được nhắc.


12

Nếu bạn không muốn sử dụng đường hầm ssh, trong my.cnf hoặc mysqld.cnf, bạn phải thay đổi 127.0.0.1 bằng địa chỉ IP cục bộ của bạn ( 192.168.1.100 ) để có quyền truy cập vào Lan. ví dụ dưới đây:

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

Tìm kiếm địa chỉ liên kết trong my.cnf hoặc mysqld.cnf

bind-address            =  127.0.0.1

và thay đổi 127.0.0.1 thành 192.168.1.100 (địa chỉ IP cục bộ)

bind-address            =  192.168.1.100

Để áp dụng thay đổi bạn đã thực hiện, phải khởi động lại máy chủ mysql bằng lệnh tiếp theo.

sudo /etc/init.d/mysql restart

Sửa đổi gốc người dùng cho các điểm truy cập (chạy dưới truy vấn trong máy chủ từ xa mà bạn muốn có quyền truy cập)

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;

Nếu bạn muốn chỉ có quyền truy cập từ địa chỉ IP cụ thể, hãy thay đổi 'root' @ '%' thành 'root' @ '(địa chỉ ip hoặc tên máy chủ)'

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;

Sau đó, bạn có thể kết nối:

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

đã thử nghiệm trên máy chủ Ubuntu 18.04


Câu trả lời tốt nhất! Cảm ơn
Nastro


6

Tôi giả sử bạn đã cài đặt MySQL trên máy của bạn. Thực hiện lệnh dưới đây sau khi điền chi tiết bị thiếu:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 


2

Có lệnh đơn giản.

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

Thí dụ

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

{hostip} sẽ không thêm bất kỳ loại chi tiết cổng nào như 192.10.10.26::45124
Manish Goswami

1

giải pháp này hiệu quả với tôi:

Trên máy từ xa của bạn (ví dụ: 295.13.12.53) có quyền truy cập vào máy từ xa mục tiêu của bạn (chạy máy chủ mysql)

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

Giải thích:

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 - nó không phải là địa chỉ IP cục bộ, nó là địa chỉ IP mà bạn ssh đến, trong ví dụ này 295.13.12.53

your_ssh_mashine_local_port - đây là cổng tùy chỉnh không phải 22, trong ví dụ này là 3306.

target_ipaddress - ip của máy mà bạn đang cố gắng kết xuất DB.

target_port - 3306 đây là cổng thực cho máy chủ MySQL.

user @ your_ip_address - đây là thông tin đăng nhập ssh cho mashine ssh mà bạn kết nối

Khi tất cả điều này được thực hiện, sau đó quay trở lại máy của bạn và làm điều này:

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

Sẽ hỏi mật khẩu, đặt mật khẩu của bạn và bạn được kết nối. Hi vọng điêu nay co ich.


1

Hãy thử nó, nó hoạt động:

mysql -h {hostname} -u {tên người dùng} -p {password} -N -e "{truy vấn để thực thi}"


0

Bạn nên đặt mật khẩu của bạn với 'p'

mysql -u root -u 1.1.1.1 -p'MyPass'

0

Tôi đã nhận được cùng một lỗi. Nhưng tìm thấy nó hữu ích bằng cách tạo người dùng mysql mới trên máy chủ mysql từ xa và sau đó kết nối. Chạy lệnh sau trên máy chủ từ xa:

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;

Bây giờ bạn có thể kết nối với mysql từ xa bằng lệnh sau.

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

Đây là bài viết đầy đủ:

http://openvani.com/blog/connect-rem Remote-mysql-server/


0

Các máy chủ mysql thường được cấu hình để chỉ nghe localhost (127.0.0.1), trong đó chúng được sử dụng bởi các ứng dụng web.

Nếu đó là trường hợp của bạn nhưng bạn có quyền truy cập SSH vào máy chủ của mình, bạn có thể tạo một đường hầm ssh và kết nối thông qua đó.

Trên máy cục bộ của bạn, tạo đường hầm.

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

(ví dụ này sử dụng cổng cục bộ 3307, trong trường hợp bạn cũng có mysql chạy trên máy cục bộ của mình và sử dụng cổng 3306 tiêu chuẩn)

Bây giờ bạn nên kết nối với

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

0

Cái này hoạt động với tôi trong mysql 8, thay thế hostnamebằng tên máy chủ của bạn và port_numbervới port_number của bạn, bạn cũng có thể thay đổi mysql_user của mình nếu anh ta không root

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

Thông tin thêm ở đây


0

Nếu bạn đang ở trên windows, hãy thử Visual Studio Code với các plugin MySQL, một cách dễ dàng và tích hợp để truy cập dữ liệu MySQL trên máy windows. Và các bảng cơ sở dữ liệu được liệt kê và có thể thực hiện bất kỳ truy vấn tùy chỉnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.