MySQL启用SSH隧道,使Python能够连接MySQL
在进行Python与MySQL交互时,有时需要通过SSH隧道连接MySQL数据库。这种连接方式可以帮助我们在保证数据安全的前提下实现远程数据库的访问。在MySQL中启用SSH隧道连接需要进行如下几个步骤。
阅读更多:MySQL 教程
第一步:打开SSH服务器的端口转发功能
在使用SSH隧道连接MySQL数据库时,需要在SSH服务器上开启端口转发功能,以实现本地计算机与远程MySQL数据库之间的数据传输。我们可以通过在SSH服务器上执行下面的命令来开启端口转发功能:
ssh -fNg -L 本地端口:数据库服务器地址:远程 MySQL 服务端口 用户名@SSH服务器地址
这条命令将在SSH服务器上开启端口转发,将本地计算机的某个端口与远程MySQL数据库中的服务端口连接起来。例如:
ssh -fNg -L 3307:localhost:3306 user@sshserver.com
这个命令将将SSH服务器的localhost:3306连接到本地3307端口。
第二步:设置MySQL用户
在MySQL中,我们需要创建一个具有远程访问权限的用户来进行远程数据库的访问。具体步骤如下:
- 登录MySQL数据库
-
创建一个新的用户并设置密码。如果我们要将这个用户限制为仅在特定IP地址访问,则需要指定这个IP地址。例如:
CREATE USER 'username'@'IP地址' IDENTIFIED BY 'password';
其中,username是MySQL的用户名,IP地址是允许远程访问的IP地址,password是MySQL用户的密码。
-
授予新用户访问MySQL数据库的权限。我们可以使用以下命令为新用户授予所需的权限:
GRANT ALL PRIVILEGES ON 数据库名称.* TO 'username'@'IP地址';
- 刷新MySQL的权限表。执行下面的命令,使MySQL的权限表立即生效。
FLUSH PRIVILEGES;
第三步:Python连接MySQL
在Python中,我们可以使用pymysql
或mysql-connector
模块来连接MySQL数据库。下面是一个使用pymysql
模块的示例代码:
import pymysql.cursors
# 连接MySQL数据库
connection = pymysql.connect(host='localhost',
user='username',
password='password',
db='database_name',
port=3307,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
# 执行SQL查询操作
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `table_name` WHERE `id`=%s"
cursor.execute(sql, ('123'))
result = cursor.fetchone()
print(result)
finally:
connection.close()
总结
利用SSH隧道,我们可以在保证数据库安全的前提下,实现远程Python与MySQL数据库的交互。要使用SSH隧道连接MySQL,我们需要在SSH服务器上开启端口转发功能,并设置具有远程访问权限的MySQL用户。在Python中,我们可以使用pymysql
或mysql-connector
模块来连接MySQL数据库。