Python mysql connector

Arkadaşlar merhaba python3 ile websitenin veritabanına nasıl bağlanırım internette baktım fakat isteediğim şeyi bulamadım. Herkes 127.0.0.1 sunucusuna bağlanmayı gösteriyor.

127.0.0.1’i veritabanı sunucusunun IP’si ile değiştirip diğer her şeyi aynı yaparsanız bağlanabilirsiniz. Tabii sunucunun güvenlik duvarı ayarlarını değiştirip uzaktan bağlantıya izin verme ve ilgili portu açma gibi ayarlar yapmanız gerekebilir.

Not: Websitenizin veritabanına uzaktan bağlanabilmeniz ciddi güvenlik açıkları oluşturabilir. Eğer siz bağlanabiliyorsanız, şifrenizi ele geçiren bir başkası da bu veritabanına bağlanabilir. Şifrenizi ele geçirmese dahi, veritabanının bazı güvenlik zaafiyetlerinden faydalanmayı bilen kişiler veritabanınıza sızabilir. Bu sebeple ilgili sunucuya önce SSH ile bağlantı yapıp daha sonra veritabanına 127.0.0.1 kullanarak bağlanmanızı öneririm.

İyi çalışmalar.

1 Beğeni

hocam şimdi sitede ssh bağlantısını aktif yaptım anahtar verdi peki şimdi python ile ssh bağlantısı yapıp nasıl bağlanacağım?

ssh bağlantısı yapınca yerel makinem websitenin veri tabanı mı oluyor şimdi

@ismailarilik hocam biraz daha detay verir misiniz?

Bağlantı yapmak istediğiniz uygulamanın özelliklerini belirtmemişsiniz. Örneğin normal bir uygulama mı yoksa bir web uygulaması mı.

MySQL bağlantısı için PyMySQL kullanabilirsiniz.

pip install PyMySQL
#!/usr/bin/python3

import PyMySQL

# Veritabanı bağlantısını aç
veritabanı = PyMySQL.connect("localhost","kullanıcı","sifre","DENEMEVERITABANI" )

komut = veritabanı.cursor()

# bir SQL komutu çalıştır
komut.execute("SELECT VERSION()")

# bir satır getir
veri = komut.fetchone()
print ("Veritabanı sürümü : %s " % veri)

# sunucu bağlantısını kapat
veritabanı.close()

@Erdem Bağlantısını yapacağımız uygulama bir kayıt programı pcden girdiğim tum verileri veri tabanına kayıt etmesini istiyorum. Veri tabanı ise benim websitenin veri tabanı.

bağlanmama izin vermiyor

İlkönce site üzerinde uzaktan veritabanı erişimini açmak gerekir. Bundan sonra bazı siteler uzaktan erişime izin verilen bilgisayarın, sitenin IP numarasını isteyebilir.

Örneğin IP numarası 1.2.3.4 olan ve üzerindeki mySQL sunucu bulanan abc.com sitem olsun. Bu siteye ev bilgisayarımdaki kayıt programından bağlanıyorsam ve site benden uzaktan erişime izin verilen bilgisayarın da IP numarasını istiyorsa bu durumda ev bilgisayarımda statik IP olması lazım.

Diyelim ki ev bilgisayarımın IP adresi 1.2.3.1 olsun. Site üzerindeki veritabanı yazılımını kullanarak 1.2.3.1 IP adresine mySQL sunucusuna erişim verdik. Eğer dinamik IP kullanıyorsak bir süre sonra bilgisayarın IP adresi 1.2.3.2 olduğu zaman bu bağlanamayacağımız anlamına geliyor.

Bu durumda uzaktan erişime izin verilen bilgisayarın, sitenin IP numarasını istemeyen bir veritabanı sunucusu kullanmam lazım. Ya da bilgisayarlara statik IP verebiliriz.

Örneğin benim kullandığım uzaktaki MongoDB sunucusu böyle bir IP erişim kısıtlaması getirmiyor.

@Erdem eki bu bilgisayarın ipsini nereden değiştireceğiz siteden 127.0.0.1 adresine izin verdim ssh bağlantısınıda açtım.

putty indirdim ssh bağlamaya çalışıyorum bağlayamadım

import mysql.connector
import sshtunnel


with sshtunnel.SSHTunnelForwarder(
    ('site ip adresi'),
    ssh_username='website ssh kullanıcı adı', ssh_password='ssh şifresi.',
    remote_bind_address=('127.0.0.1', 3306)
) as tunnel:
    connection = mysql.connector.connect(
        user='mysql kullanıcı adı', password='mysql şifresi.',
        host='127.0.0.1', port=tunnel.local_bind_port,
        database='database ismi',
    )
im = connection.cursor()

ssh.py

from sshtunnel import SSHTunnelForwarder
from time import sleep

with SSHTunnelForwarder(
    ('website ip adresi', 22 #burası sabit),
    ssh_username="ssh kullanıcı adı",
    ssh_password="ssh şifresi.",
    remote_bind_address=('127.0.0.1', 3306)
) as server:

    print(server.local_bind_port)
    while True:
        # press Ctrl-C for stopping
        sleep(1)

print('FINISH!')
1 Beğeni

@ismailarilik @Erdem Teşekkür ederim yardımlarınız için.

Sorununuz çözüldü mü?

ssh konusunu tam bilmiyorum.

Çözüldü olarak işaretlemişsiniz ama benim gösterdiğim örnekte localhost yazan yere sitenizin ip numarası gelecek. Site ip numarasını bulmak için de

http://get-site-ip.com

gibi bir servis kullanabilirsiniz. Bu servis sizin bilgisayarınızın ip numaranızı da gösteriyor.

Hocam şuanlık veritabanına erişim sağlıyor tablo vs oluşturdu

1 Beğeni

İster pc ister site olsun her şeyi denedim authetication denied hatası veriyordu

Hocam ilk ssh py ardından üstteki kodları dosyaya koyup kendi bilgilerimizi de ekledikmi çalışıyor

1 Beğeni