命令行访问远程 MySQL 服务器

命令行访问远程 MySQL 服务器

我在远程共享主机上管理一个网站。我的网络主机提供 MySQL,我可以使用 GUI 程序从我的 Mac OS X 电脑访问它,续集专业版. 效果很好。

但我想编写一些查询脚本,而 Sequel Pro 无法编写脚本。我该怎么办?

我读过关于通过 SSH 隧道连接到 mysql 的文章。我可以通过 Mac 上的 SSH 密钥访问服务器的 shell,因此

远程控制[电子邮件保护]-p 7978

让我进来。隧道连接 MySQL 端口 3306 应该可以工作吗?像这样?

远程控制[电子邮件保护]-L 3306:127.0.0.1:3306

(一分钟后它会“超时”。)

我需要在 Mac 上安装 mysql 吗?

答案1

在MySQL服务器上,需要修改文件我的cnf,其位置取决于操作系统:例如,在 Debian 中,它位于 /etc/mysql 中。编辑它,找到以下行

 [mysqld]

并添加以下文字:

 [mysqld]
 user            = mysql
 pid-file        = /var/run/mysqld/mysqld.pid
 socket          = /var/run/mysqld/mysqld.sock
 port            = 3306
 basedir         = /usr
 datadir         = /var/lib/mysql
 tmpdir          = /tmp
 language        = /usr/share/mysql/English
 bind-address    = The_IP_of_YOUR_MySQL_Server
 # skip-networking

这里,重要的是注释掉以下行跳过网络,并在行中插入绑定地址,服务器的 IP。保存,重新启动 mysql(同样,这取决于操作系统),使用通常的

  mysql -u root -p mysql

并允许从您自己的远程 IP 访问现有数据库:

  mysql> update db set Host='Your_own_remote_IP' where Db='webdb';
  mysql> update user set Host='Your_own_remote_IP' where user='webadmin';

现在返回到您的远程系统,并测试新功能:

 mysql -u webadmin –h The_IP_of_theMySQL_Server –p

当然,要实现此功能,您需要在 Mac 上安装 MySQL 客户端。您现在可以编写自己的 MySQL 查询脚本,例如,在 bash 脚本中,如下所示:

  #!/bin/bash

  result=`mysql -h The_IP_of_theMySQL_Server --user=webadmin --password=Your_Password --skip-column-names -e "select id from mydb.mytable where myattribute = 3"`

编辑:

如果您想要远程直接连接到 MySQL 服务器,则需要这样做。如果您只想在本地编写查询脚本(IE,在服务器上),然后MySQL客户端就可以了。您可以找到介绍这里

答案2

使用 ssh,您可以远程运行命令。因此,如果您想编写一些查询脚本,这是一种方法。也许不是您想要的,但这是一个值得了解的选项

假设主机 B 是你的 SQL 服务器。主机 A 是你要运行查询的客户端

在主机 B 上,将查询放入文件中,例如创建一个“test.sql”文件。在我的例子中,我只输入“show databases”

然后从主机 A 你可以执行

ssh [选项]“[要运行的命令]”

使用 ssh 设置无密码登录(使用 ssh-rsa 身份验证)。使用“ssh-keygen”和“ssh-copy-id”。您可以通过以下方式进行测试:

ssh [options] “ls”,查看是否返回主机 B 的“ls”结果

从那里你可以做

ssh [选项] “mysql [选项] < test.sql”

那有意义吗?

您还需要在 mysql 命令上设置密码,但您可能不喜欢这个密码,因为这个密码不太安全。我还没有尝试过其他“无密码”登录 mysql 的方法,也许还有其他方法可以完成这一部分。

相关内容