258

I have a server with Rackspace. I want to access the database from my local machine command line.

I tried like:

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

But it gives an error:

ERROR 2003 (HY000):

Can't connect to MySQL server on 'my.application.com' (10061)

What causes this error and how can I connect to the remote database?

4

18 回答 18

418

要直接登录到远程 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 控制台。

于 2016-04-06T12:54:08.460 回答
38

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

mysql -u username -h host -p

现在按回车

终端会问你密码,输入密码,你就进入了数据库服务器

于 2017-06-01T12:28:19.970 回答
35

编辑 my.cnf 文件:

vi /etc/my.cnf

确保:

bind-address=YOUR-SERVER-IP

如果你有这条线:

skip-networking

一定要评论它:

#skip-networking

不要忘记重新启动:

/etc/init.d/mysqld restart

于 2013-04-08T06:29:28.213 回答
20

对于 Mac,使用以下命令:

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

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

于 2018-08-09T07:59:46.657 回答
15

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

我遇到了类似的情况,后来当用命令输入主机的mysql端口时,它就解决了。

于 2016-10-31T05:42:57.887 回答
14

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

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

my.cnfmysqld.cnf中搜索bind-address

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

修改用户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 address or hostname)'

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 服务器上测试

于 2018-05-17T07:36:10.603 回答
9
  1. 试试telnet 3306。如果它没有打开连接,要么是有防火墙设置,要么是服务器没有在监听(或不工作)。

  2. 在服务器上运行netstat -an以查看服务器是否已启动。

  3. 您可能不允许远程连接。

    请参阅http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

于 2013-04-08T06:27:41.813 回答
7

我假设你的机器上安装了 MySQL。填写缺失的详细信息后执行以下命令:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
于 2017-06-08T00:07:54.917 回答
4

有简单的命令。

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

例子

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
于 2019-08-06T12:30:02.383 回答
4

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
于 2019-06-23T18:36:05.743 回答
3

您可以使用以下代码连接到远程 MY SQL 数据库

mysql -u {database_user} -p{db_password} -h {host_name} -P {port_number}
mysql -u admin -p'your_password' -h your-company.aws.com -P 3306
于 2021-09-27T15:10:03.367 回答
2

必须检查对端口 3306 的传入访问是否被防火墙阻止。

于 2013-04-08T06:28:14.683 回答
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

将要求输入密码,输入您的密码并连接。希望这可以帮助。

于 2017-01-25T11:09:17.733 回答
1

这个在 mysql 8 中为我工作,hostname用你的主机名和port_number你的 port_number 替换,如果他不是 root,你也可以更改你的 mysql_user

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

更多信息在这里

于 2019-12-17T10:17:24.287 回答
1

试试这个,它的工作原理:

mysql -h {hostname} -u{username} -p{password} -N -e "{query to execute}"

于 2018-02-10T10:43:07.083 回答
0

你应该用'p'输入你的密码

mysql -u root -u 1.1.1.1 -p'MyPass'
于 2016-12-21T15:57:22.097 回答
0

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

于 2019-12-31T15:07:38.110 回答
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/

于 2017-07-10T14:01:17.687 回答