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

use*_*299 167 mysql shell mysql-error-2003

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

我尝试过:

mysql -u username -h my.application.com -ppassword
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误:

ERROR 2003(HY000):

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

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

小智 247

要直接登录到远程mysql控制台,请使用以下命令:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}
Run Code Online (Sandbox Code Playgroud)

它将通过切换到提到的数据库直接进入mysql控制台.

  • 我不得不用单引号括起密码.即`mysql -u USERNAME -p'PASSWORD'-REMOTE_SERVER_IP DB_NAME` (21认同)
  • **在`-p` https://dev.mysql.com/doc/refman/8.0/en/command-line-options.html之后没有介入空间** (5认同)
  • 如果这是用户在控制台键入的情况,您应该轻松避免在命令行中将密码作为未加密的文本传递。只需使用“-p”和指定的其余部分即可。脚本的执行将安全地询问您密码。 (4认同)
  • 要指定数据库名称,我们需要添加-D。mysql -u {用户名} -p {密码} -h {远程服务器ip} -D {数据库名称} (2认同)
  • 在MacOS High Sierra版本10.13.3上的终端无法正常工作 (2认同)

alf*_*sin 31

编辑my.cnf文件:

vi /etc/my.cnf:

确保:

bind-address=YOUR-SERVER-IP

如果你有这条线:

skip-networking

一定要评论它:

#skip-networking

别忘了重启:

/etc/init.d/mysqld restart

  • 永远不会授予'root'@'%'这是一个巨大的安全,不,不! (5认同)

小智 25

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

mysql -u username -h host -p
Run Code Online (Sandbox Code Playgroud)

现在点击进入

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


raj*_*809 15

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

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

  • `mysql -u testuser -h 192.168.**.*-P 3306 -p password`为我工作 (4认同)

Kay*_*ayV 13

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

mysql -u app -h hostaddress -P port -D dbname -p
Run Code Online (Sandbox Code Playgroud)

然后在提示时输入密码.


Cor*_*tin 10

如果你不想使用ssh隧道,在my.cnfmysqld.cnf中你必须用你的本地IP地址(192.168.1.100)更改127.0.0.1才能访问Lan.下面的例子:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)

my.cnfmysqld.cnf中搜索bind-address

bind-address            =  127.0.0.1
Run Code Online (Sandbox Code Playgroud)

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

bind-address            =  192.168.1.100
Run Code Online (Sandbox Code Playgroud)

要应用您所做的更改,必须使用next命令重新启动mysql server.

sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)

修改lan access的用户root(在远程服务器中运行您想要访问的查询)

root@192.168.1.100:~$ mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

..

CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

如果您只想从特定的IP地址访问,请将'root'@'%'更改为'root'@'(ip address或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;
Run Code Online (Sandbox Code Playgroud)

然后你可以连接:

nobus@xray:~$ mysql -h 192.168.1.100 -u root -p
Run Code Online (Sandbox Code Playgroud)

在ubuntu 18.04服务器上测试


小智 8

  1. 试试telnet 3306.如果它没有打开连接,则表明存在防火墙设置或服务器没有监听(或不工作).
  2. netstat -an在服务器上运行以查看服务器是否已启动.
  3. 您可能不允许远程连接.

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


rea*_*lPK 6

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

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
Run Code Online (Sandbox Code Playgroud)


miv*_*ivk 5

mysql 服务器通常配置为仅侦听 localhost (127.0.0.1),供 Web 应用程序使用。

如果您的情况如此,但您可以通过 SSH 访问您的服务器,则可以创建 ssh 隧道并通过该隧道进行连接。

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

ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host
Run Code Online (Sandbox Code Playgroud)

(此示例使用本地端口 3307,以防您的本地计算机上也运行 mysql 并使用标准端口 3306)

现在你应该可以联系了

mysql -u $user -p -h 127.0.0.1 -P 3307
Run Code Online (Sandbox Code Playgroud)