DBS ProxySQL Admin: MySQL Shell için Kullanıcı Senkronizasyonu
DBS ProxySQL Admin, DBS Medya'nın geliştirdiği bir MySQL Shell eklentisidir. MySQL sunucusundaki kullanıcı hesaplarını ve parola özetlerini okur, ProxySQL yönetim arayüzündeki kullanıcı tablosuyla eşitler.
Komutların tamamı dbs.proxysql.admin ad alanında toplanır. Etkileşimli kabukta Python ve JavaScript ile, doğrudan işletim sistemi komut satırından ise zamanlanmış görevlerle çalışır. DBS MySQL Shell eklenti koleksiyonunun ilk aracıdır.
Ne çözüm sağlar
ProxySQL kullanan mimarilerde istemciler veritabanı sunucusuna değil ProxySQL'e bağlanır. Bu yüzden her hesabın ProxySQL tarafında da tanımlı olması gerekir. Hesap açıldığında, parola değiştiğinde veya bir hesap silindiğinde yönetim arayüzüne bağlanıp tabloyu elle güncellemek, ardından değişikliği çalışma zamanına ve diske yazmak gerekir. Eklenti bu işlerin tamamını tek komuta indirir.
Güncel kimlik doğrulamayı taşır
MySQL 8.0 ve 8.4 sürümlerinin varsayılan algoritması olan caching_sha2_password ile mysql_native_password parola özetlerini ProxySQL'e olduğu gibi aktarır. Parolaların açık hâline hiçbir aşamada ihtiyaç duymaz. Bu aktarım ProxySQL 2.6 ve sonrasının yeteneklerine dayanır.
Hangi hesabın eşitleneceğini belirler
MySQL hesapları kullanıcı adı ve sunucu adresi çiftiyle tanımlanır, ProxySQL ise yalnızca kullanıcı adı tutar. Aynı adın farklı adreslerdeki parolaları birbirinden ayrıldığında hangisinin geçerli olduğu belirsizleşir. required_host ayarı eşitlenecek satırı tek bir adrese sabitler.
Yarım kalan değişikliği geri alır
Değişiklik önce diske yazılır, ardından çalışma zamanına alınır. Bir adım başarısız olduğunda çalışma zamanındaki temiz tablo diske geri kopyalanır. Böylece yarım kalmış bir kullanıcı kaydı ne bellekte ne diskte kalır.
Birden fazla ProxySQL hedefini yönetir
Her hedef için ayrı bir yapılandırma dosyası tutulur. Oturum içinde etkin yapılandırma değiştirilerek başka bir ProxySQL sunucusuna geçilir. Servis hesaplarını ve uygulama hesaplarını ayrı proxy'lerde tutan mimariler böyle yönetilir.
Yetim hesapları temizler
MySQL'den silinmiş ama ProxySQL'de kalmış hesaplar erişim açığı bırakır. Eklenti bir adı MySQL'in bütün adreslerinde arar, hiçbirinde bulamazsa ProxySQL'den siler. Hariç tutulan hesaplar bu taramanın dışındadır.
Yapılandırmayı sihirbazla üretir
Dosyayı elle yazmak yerine kabuk içinde soru-cevap ile oluşturur. Parola içerdiği için dosya yalnızca sahibinin okuyabileceği izinlerle yazılır.
Komutlar ve kullanım
Komut adları etkin dile göre yazılır. Python tarafında alt çizgili, JavaScript ve komut satırında ise büyük harfle ayrılmış biçim kullanılır. İşlevleri aynıdır.
| İşlem | Python | JavaScript |
|---|---|---|
| Kullanıcı senkronizasyonu | dbs.proxysql.admin.user_sync() | dbs.proxysql.admin.userSync() |
| Yalnızca parola güncelleme | dbs.proxysql.admin.update_passwords() | dbs.proxysql.admin.updatePasswords() |
| Yetim hesapları silme | dbs.proxysql.admin.delete_orphans() | dbs.proxysql.admin.deleteOrphans() |
| Etkin yapılandırmayı görme | dbs.proxysql.admin.status() | dbs.proxysql.admin.status() |
| Yapılandırma değiştirme | dbs.proxysql.admin.use_config("/yol.ini") | dbs.proxysql.admin.useConfig("/yol.ini") |
| Sihirbazla dosya üretme | dbs.proxysql.admin.create_config() | dbs.proxysql.admin.createConfig() |
Aynı komutlar kabuğa girmeden çalışır. Zamanlanmış görevler ve sürekli entegrasyon akışları bu biçimi kullanır.
mysqlsh root@mysql-host:3306 -- dbs proxysql admin user-sync
mysqlsh root@mysql-host:3306 -- dbs proxysql admin user-sync /etc/proxysql/app.ini
mysqlsh root@mysql-host:3306 -- dbs proxysql admin delete-orphans
mysqlsh root@mysql-host:3306 -- dbs proxysql admin status
Yapılandırma dosyası ProxySQL yönetim arayüzünün adresini, eşitleme dışında tutulacak hesapları ve yeni hesaplara atanacak sunucu grubunu taşır.
[proxysql]
host = 127.0.0.1
port = 6032
user = radmin
password = radmin
default_hostgroup = 0
excluded_users = root, admin, mysql.sys
required_host = %
Not: required_host sonradan değiştirildiğinde, eşitlenmiş parolalar yeni
adres satırının değerleriyle yeniden yazılabilir. Kurulumdan sonra bu ayarı
değiştirmeden önce etkisini değerlendirin.
Çalışma kapsamı
Bağımlılık
Eklenti kodu yalnızca Python standart kütüphanesini ve MySQL Shell'in kendi oturumunu kullanır. Kurulum için ek paket gerekmez, kısıtlı üretim ortamlarına girebilir.
Desteklenen kimlik doğrulama
caching_sha2_password ve mysql_native_password. Aktarımın karşı tarafı ProxySQL 2.6 ve sonrasıdır.
Korunan hesaplar
root, admin, mysql.sys, mysql.session ve mysql.infoschema varsayılan olarak eşitleme dışıdır. Liste yapılandırmadan değiştirilir.
Yapılandırma sırası
Komuta verilen yol, oturumun etkin yapılandırması, PROXYSQL_SYNC_CONFIG ortam değişkeni, ardından ev dizinindeki ve sistemdeki varsayılan dosyalar bu sırayla denenir.
Çalışma biçimi
Etkileşimli kabukta Python ve JavaScript, kabuğa girmeden komut satırı. Her üç yolda da aynı komutlar ve aynı yapılandırma geçerlidir.
Lisans
GNU General Public License sürüm 2 ile yayımlanır. Kaynak kodun tamamı GitHub'dadır.
