欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python如何通過跳板機連接MySQL

 更新時間:2022年12月13日 09:36:12   作者:Marvin_BHR  
這篇文章主要介紹了python如何通過跳板機連接MySQL問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

python通過跳板機連接MySQL

生產(chǎn)環(huán)境中,為了安全起見,大多數(shù)的數(shù)據(jù)庫是無法在本地直接訪問的,需要先連接跳板機,然后通過跳板機訪問。

這么做雖然在安全方面稍有保證,但是對于寫代碼的人來說,增加了一定的難度,以下是我個人對python連接跳板機連接mysql的一些總結。

首先,需要下載sshtunnel包,使用pip即可,其次是連接MySQL的包,這個根據(jù)自己的喜好來就好,我個人常用的是mysql.connector和pymysql,這里就使用mysql.connector。

代碼如下:

import mysql.connector
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
? ? ? ? (host_jump, int(port_jump)), ?# 跳板機的配置
? ? ? ? ssh_pkey=ssh_pk_jump,
? ? ? ? ssh_username=user_name_jump,
? ? ? ? remote_bind_address=(host_mysql, int(port_mysql))) ?# 數(shù)據(jù)庫服務器的配置
server.start()
conn = mysql.connector.connect(host='127.0.0.1', port=server.local_bind_port, user=user_name_mysql, password=password_mysql, database=database)
# do something...
conn.close()
server.close()

說明:

1:因為我的跳板機是通過密鑰連接的,所以需要ssh_pkey參數(shù),值是密鑰的路徑,如果需要通過密碼連接,將該參數(shù)換成ssh_password即可;

2:SSHTunnelForwarder方法返回的server對象必須調用start()方法后才可以正常使用;

3:在連接MySQL時,connect()方法的參數(shù)中的host必須為127.0.0.1;

4:由于端口必須為數(shù)字類型,所以使用int()方法轉換;

5:使用結束后,為了安全起見,調用server的close()方法關閉連接,當然也可以使用with語句,如下:

with SSHTunnelForwarder(
? ? ? ? (host_jump, int(port_jump)), ?# 跳板機的配置
? ? ? ? ssh_pkey=ssh_pk_jump,
? ? ? ? ssh_username=user_name_jump,
? ? ? ? remote_bind_address=(host_mysql, int(port_mysql))) as server: ?# MySQL服務器的配置
? ? conn = pymysql.connect(host='127.0.0.1', port=server.local_bind_port, user=user_name_mysql, password=password, database=database)

此時不僅可以省略close()方法,也可以省略start()方法。

MySql跳板機 python連接方法及配置

import pymysql
from sshtunnel import SSHTunnelForwarder
#可能需要安裝上面的包
 
#跳板機
host_jump=跳板機ip
port_jump=跳板機port
user_name_jump=跳板機用戶名
ssh_password=跳板機密碼
 
#數(shù)據(jù)庫
host_mysql=數(shù)據(jù)庫ip
port_mysql=數(shù)據(jù)庫port
user_name_mysql=數(shù)據(jù)庫用戶名
password_mysql=數(shù)據(jù)庫密碼
database=數(shù)據(jù)庫名稱
local_bind_port=22 #本地端口自行定義
 
server = SSHTunnelForwarder(
    (host_jump, int(port_jump)),  # 跳板機的配置
    ssh_password=ssh_password,
    ssh_username=user_name_jump,
    remote_bind_address=(host_mysql, int(port_mysql)))  # 數(shù)據(jù)庫服務器的配置
 
server.start() #啟動server
 
connection = pymysql.connect(host='127.0.0.1', port=server.local_bind_port, 
			user=user_name_mysql, password=password_mysql, database=database,
			charset="utf8", cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
cursor.execute('select * from test_db where id=1')
data=cursor.fetchall()
 
#注意關閉
conn.close()
server.close()
 
print(data)

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論