从命令行访问mysql远程数据库


190

我有一台带有Rackspace的服务器。我想从本地计算机命令行访问数据库。

我尝试像:

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

但是它给出了一个错误:

错误2003(HY000):

无法连接到“ my.application.com”上的MySQL服务器(10061)

是什么导致此错误,如何连接到远程数据库?


5
10061= 连接被拒绝
Danny Beckett

Answers:


289

要直接登录到远程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
我必须将密码用单引号引起来。即mysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady

2
要指定数据库名称,我们需要添加-D。mysql -u {用户名} -p {密码} -h {远程服务器ip} -D {数据库名称}
randeepsp

1
如果我们需要指定特定的端口怎么办?
Serge

2
在MacOS High Sierra版本10.13.3上的终端中不起作用
realPK


33

编辑my.cnf文件:

vi /etc/my.cnf

确保:

bind-address=YOUR-SERVER-IP

如果您有一行:

skip-networking

确保发表评论:

#skip-networking

不要忘记重启:

/etc/init.d/mysqld restart


bind-address =您的服务器IP 在这里我需要提到的IP是远程服务器IP?
user1986299 2013年

@ user1986299不,您需要服务器的IP(不是远程IP)
alfasin

1
您应该授予自己访问权限...通过键入mysql,然后从本地服务器登录数据库,然后:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin 2013年

5
绝对不要授予'root'@'%'的权限,这是一个巨大的安全性!
josh123a123 2015年

1
@alfasin这是一个具有深远影响的小调整,谢谢!
ChristopherSchönfeldt,

30

只需将其放在ubuntu的终端上即可:

mysql -u username -h host -p

现在按回车

终端将询问您密码,输入密码,您就进入数据库服务器


14

试试这个命令 mysql -uuser -hhostname -PPORT -ppassword

我遇到了类似的情况,后来当使用命令输入用于主机的mysql端口时,此问题已解决。


5
mysql -u testuser -h 192.168.**.* -P 3306 -p password工作对我来说
Mahebub一个赛义德

14

对于Mac,请使用以下命令:

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

然后在出现提示时输入密码。


12

如果不想使用ssh隧道,则必须在my.cnfmysqld.cnf中使用本地IP地址(192.168.1.100)更改127.0.0.1才能通过Lan进行访问。下面是示例:

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

my.cnfmysqld.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(在要访问的远程服务器中运行查询的波纹管)

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


6

我假设您在计算机上安装了MySQL。填写缺少的详细信息后,请执行以下命令:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 



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地址,而是您ssh到的IP地址,在此示例中为295.13.12.53

your_ssh_mashine_local_port-这是自定义端口,不是22,在本示例中是3306。

target_ipaddress-您尝试转储数据库的机器的IP。

target_port-3306,这是MySQL服务器的实际端口。

user @ your_ip_address-这是您连接的ssh mashine的ssh凭据

完成所有这些操作后,请返回您的计算机并执行以下操作:

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),Web应用程序在此使用它们。

如果是这种情况,但是您具有对服务器的SSH访问权限,则可以创建ssh隧道并通过该隧道进行连接。

在本地计算机上,创建隧道。

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_numberport_number 替换,如果他不是root用户,也可以更改mysql_user

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

这里的更多信息


0

如果您在Windows上,请尝试使用带有MySQL插件的Visual Studio Code,这是一种在Windows机器上访问MySQL数据的简便且集成的方法。并且列出数据库表并可以执行任何自定义查询。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.