我在Rackspace有一个服务器。我想从本地机器命令行访问数据库。

我试过:

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

但它给出了一个错误:

错误2003 (hy000): 无法连接MySQL服务器(10061)

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


当前回答

简单地把这个放在ubuntu的终端上:

mysql -u username -h host -p

现在按回车键

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

其他回答

简单地把这个放在ubuntu的终端上:

mysql -u username -h host -p

现在按回车键

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

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

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

更多资料请点击此处

编辑my.cnf文件:

我们 /etc/my.cnf:

确保:

bind-address = YOUR-SERVER-IP

如果你有这一行:

skip-networking

确保注释它:

# skip-networking

不要忘记重新启动:

/etc/init.d/mysqld restart

如果您不想使用ssh隧道,在my.cnf或mysqld.cnf中,您必须将127.0.0.1与您的本地ip地址(192.168.1.100)更改,以便通过局域网访问。示例波形:

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

在my.cnf或mysqld.cnf中搜索bind-address

bind-address            =  127.0.0.1

将127.0.0.1改为192.168.1.100(本地IP地址)

bind-address            =  192.168.1.100

要应用您所做的更改,必须使用next命令重新启动mysql服务器。

sudo /etc/init.d/mysql restart

修改lan访问的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服务器上测试

Mysql服务器通常被配置为只监听本地主机(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