通过SSH隧道连接MySQL数据库

时间:2014-07-25 16:08:31

标签: mysql linux database shell ssh

我的新数据库存在问题。访问数据库的唯一方法是抛出SSH隧道。但它没有用......

我使用以下命令:

sshpass -p <PASSWORD> ssh <USER>@<DOMAIN> -p <PORT> -L 3306:localhost:3306 -f -N

我认为ssh隧道有效并已建立。

现在我想通过Shell-File连接数据库。

deposit=`mysql -h localhost --port=3306 -u <DATABASEUSER> --password=<DATABASEPASSWORD> --skip-column-names -e "<MYSQLSYNTAX>"`

但总有以下错误:

ERROR 1045 (28000): Access denied for user '<DATABASEUSER>'@'localhost' (using password: YES)

你有任何想法或我做错了吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

假设您的所有权限都可以,则可能需要为localhost交换127.0.0.1

根据MySQL文档:http://dev.mysql.com/doc/refman/5.5/en/connecting.html

  

在Unix上,MySQL程序专门处理主机名localhost   与其他人相比可能与您的期望不同的方式   基于网络的程序。用于连接到localhost,MySQL程序   尝试使用Unix套接字文件连接到本地服务器。   即使给出了--port或-P选项来指定端口,也会发生这种情况   数。确保客户端建立TCP / IP连接   本地服务器,使用--host或-h指定主机名值   127.0.0.1,或本地服务器的IP地址或名称。

答案 1 :(得分:0)

据我所知,您正在尝试在计算机和运行SQL Server的远程计算机之间创建隧道。在您的ssh命令中,用远程计算机IP地址替换3306:localhost:3306。请注意,如果您与远程计算机不在同一本地网络中,则应该是其内部本地IP地址。检查您的SQL数据库权限,用户名和密码。