繁体   English   中英

我可以连接到另一台服务器上的mysql数据库吗?

[英]Can I connect to a mysql database on another server?

我在工作的服务器上有一个mysql数据库。 我打开服务器,然后使用mysql -u username -p输入数据库,这时命令行将提示我输入密码。

我想远程访问数据库以进行一些开发。 我看到mysql.connector是用于连接mysql数据库的库,但是我可以SSH到服务器上,然后使用python访问数据库吗?

您可以使用SSH隧道将本地计算机上侦听的端口重定向到远程计算机上的端口。

ssh -L9999:localhost:3306 me@my.work.com

这会将流量从计算机上的端口9999重定向到my.work.com上的端口3306 因为要将隧道传送到服务器本身,所以将localhost分配给-L 我们还可以创建一条通过您的工作服务器到只能访问的计算机的隧道。

现在,您可以使用端口9999在自己的计算机上连接连接器,并且流量将通过隧道传送到my.work.com:3306

您可以使用https://gist.github.com/shnjp/856179中的tunnel.py代码。

with make_tunnel('me@mywork.com:3306') as t:
    mysql.connector.connect(host='localhost',
                            database='mysql',user='root',password='PASS')

这假定您的本地主机在端口3306上没有任何应用程序运行。如果有,则需要在make_tunnel中使用“ port =”参数,并提供另一个端口在本地主机上使用。

您也可以从python连接到数据库,而无需使用任何隧道。

为此,启用mysql服务器以允许来自外部的连接取消注释,并将/etc/mysql/my.cnf文件中的bind-address行更改为bind-address = 0.0.0.0 之后,使用sudo service mysql restart重新启动服务器,并最终授予您的用户访问权限,以使其可以从外部访问GRANT SELECT,INSERT,UPDATE,DELETE ON your_database.* TO 'your_user'@'%' IDENTIFIED BY 'your_pass';

现在您将能够从python连接到数据库

import mysql.connector
ip_of_the_database = 'x.x.x.x'
cnx = mysql.connector.connect(host = ip_of_the_database, 
                              user = 'your_user', 
                              password = 'your_pass', 
                              database = 'your_database')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM