MySQL
Bu sayfa, MySQL'e bir veri ambarı olarak bağlanmayı kapsar. MySQL'i Patrona'nın uygulama veritabanı olarak kullanmak için Patrona uygulama veritabanını yapılandırma bölümüne bakın.
Bir veritabanı bağlantısı eklemek için sağ üst köşedeki dişli simgesine tıklayın ve Yönetici ayarları > Veritabanları > Veritabanı ekle yolunu izleyin.
Desteklenen sürümler
Patrona, en eski desteklenen sürümden en son kararlı sürüme kadar olanları destekler. MySQL kullanım ömrü tarihleri bölümüne bakın.
Ayarlar
Bu ayarları istediğiniz zaman düzenleyebilirsiniz. Değişikliklerinizi kaydetmeyi unutmayın.
Görünen ad
Patrona arayüzünde veritabanı için görüntülenecek ad.
Sunucu
Veritabanınızın IP adresi veya alan adı (örneğin, esc.veritabanim.com).
Port
Veritabanı portu. Örneğin, 3306.
Kullanıcı adı
Veritabanınıza bağlanmak için kullanmak istediğiniz hesabın veritabanı kullanıcı adı. Aynı veritabanına bağlanmak için farklı kullanıcı hesapları kullanarak aynı veritabanına birden çok bağlantı kurabilirsiniz. Her birinin farklı ayrıcalıkları olabilir.
Şifre
Veritabanına bağlanmak için kullandığınız kullanıcı adının şifresi.
Güvenli bir bağlantı kullan (SSL)
Sunucunuzun SSL sertifika zincirini yapıştırabilirsiniz.
Bir SSH tüneli kullan
SSH tüneli kılavuzumuza bakın.
JSON Sütunlarını Aç
MySQL veritabanları için Patrona, JSON sütunlarını bileşen alanlarına açarak her JSON anahtarının bir sütun haline geldiği bir tablo oluşturabilir. JSON açma özelliği varsayılan olarak açıktır, ancak performans yavaşsa JSON açma özelliğini kapatabilirsiniz.
JSON açma özelliğini açarsanız, tablo meta verilerinde tek tek sütunlar için de açmayı değiştirebilirsiniz.
Ek JDBC bağlantı dizesi seçenekleri
Patrona'nın veritabanınıza bağlanmak için kullandığı bağlantı dizesine seçenekler ekleyebilirsiniz.
Basit keşifler için sorguları yeniden çalıştır
Herhangi bir Özetle veya filtre seçimi uygulamadan önce kişilerin Çalıştır (oynat butonu) seçeneğini tıklamasını istiyorsanız bu seçeneği KAPALI konuma getirin.
Varsayılan olarak Patrona, Özetle menüsünden bir gruplama seçeneği veya detaylandırma menüsünden bir filtre koşulu seçtiğiniz anda bir sorgu çalıştırır. Veritabanınız yavaşsa, her tıklamada veri yüklemeyi önlemek için yeniden çalıştırmayı devre dışı bırakmak isteyebilirsiniz.
Patrona'nın ne zaman senkronize edeceğini ve tarayacağını seçin
Veritabanınızla güncel kalmak için Patrona'nın kullandığı sorguları yönetmek için bu seçeneği AÇIK konuma getirin. Daha fazla bilgi için Veritabanlarını senkronize etme ve tarama bölümüne bakın.
Veritabanı senkronizasyonu
Senkronizasyonların ve taramaların ne zaman gerçekleşeceğini seçin > AÇIK seçeneğini seçtiyseniz, şunları ayarlayabileceksiniz:
- Senkronizasyonun sıklığı: saatlik (varsayılan) veya günlük.
- Senkronizasyonun çalıştırılacağı saat, Patrona uygulamanızın çalıştığı sunucunun saat diliminde.
Filtre değerleri için tarama
Patrona, kontrol kutusu filtrelerini panolarda ve sorularda etkinleştirmek için bu veritabanındaki her alanda bulunan değerleri tarayabilir. Bu, özellikle çok büyük bir veritabanınız varsa, kaynak yoğun bir işlem olabilir.
Senkronizasyonların ve taramaların ne zaman gerçekleşeceğini seçin > AÇIK seçeneğini seçtiyseniz, Filtre değerleri için tarama altında aşağıdaki seçenekleri göreceksiniz:
- Düzenli olarak, bir zamanlamaya göre, veritabanınızdaki değişiklik oranına uyan bir sıklıkta tarama sorguları çalıştırmanıza olanak tanır. Saat, Patrona uygulamanızın çalıştığı sunucunun saat diliminde ayarlanır. Bu, küçük bir veritabanı veya sık sık güncellenen farklı değerlere sahip tablolar için en iyi seçenektir.
- Yalnızca yeni bir filtre widget'ı eklerken, tarama sorgularının isteğe bağlı olarak çalışmasını istiyorsanız harika bir seçenektir. Bu seçeneği AÇIK konuma getirmek, Patrona'nın yalnızca bir panoya veya SQL sorusuna yeni bir filtre eklendiğinde kullanılan alan(lar)ın değerlerini tarayacağı ve önbelleğe alacağı anlamına gelir.
- Asla, gerekirse bunu manuel olarak yapacağım, ya çok büyük olan ya da asla gerçekten yeni değerler eklenmeyen veritabanları için bir seçenektir. Manuel bir tarama çalıştırmak ve filtre değerlerinizi güncel hale getirmek için Alan değerlerini şimdi yeniden tara butonunu kullanın.
Tabloları periyodik olarak yeniden parmak iziyle işaretle
Periyodik yeniden parmak iziyle işaretleme, veritabanınızdaki yükü artıracaktır.
Patrona her senkronizasyon çalıştırdığında bir değer örneğini taramak için bu seçeneği AÇIK konuma getirin.
Bir parmak izi sorgusu, her sütundan ilk 10.000 satırı inceler ve bu verileri kullanarak her sütunun kaç benzersiz değere sahip olduğunu, sayısal ve zaman damgası sütunları için minimum ve maksimum değerlerin ne olduğunu tahmin eder. Bu seçeneği KAPALI bırakırsanız, Patrona sütunlarınızı yalnızca kurulum sırasında bir kez parmak iziyle işaretler.
MySQL 8+ sunucularına bağlanma
Patrona, MySQL sunucularına bağlanmak için MariaDB bağlayıcısını kullanır. MariaDB bağlayıcısı, MySQL 8'in varsayılan kimlik doğrulama eklentisi için destekten yoksundur. Bağlanmak için Patrona kullanıcısı tarafından kullanılan eklentiyi değiştirmeniz gerekir:
mysql_native_password`: `ALTER USER 'patrona'@'%' IDENTIFIED WITH mysql_native_password BY 'thepassword';
Doğru kimlik bilgileriyle giriş yapılamıyor
Bunu nasıl tespit edersiniz: Patrona, MySQL sunucunuza "Kullanıcı adı veya şifre yanlış görünüyor" hata mesajıyla bağlanamaz, ancak kullanıcı adı ve şifrenin doğru olduğundan eminsinizdir. MySQL kullanıcısını, bağlandığınız ana bilgisayardan farklı bir ana bilgisayarla oluşturmuş olabilirsiniz.
Örneğin, MySQL sunucusu bir Docker konteynerinde çalışıyorsa ve patrona
kullanıcınız CREATE USER 'patrona'@'localhost' IDENTIFIED BY 'thepassword';
ile oluşturulmuşsa, localhost
Docker konteynerine çözümlenecek ve ana makineye değil, erişimin reddedilmesine neden olacaktır.
Bu sorunu, Patrona sunucu günlüklerinde şu hata mesajını arayarak tespit edebilirsiniz:
Access denied for user 'patrona'@'172.17.0.1' (using password: YES).
Ana bilgisayar adını 172.17.0.1
(bu durumda bir Docker ağ IP adresi) ve sonundaki using password: YES
ifadesini not edin.
Aynı hata mesajını, komut satırı istemcisiyle MySQL sunucusuna bağlanmaya çalışırken de göreceksiniz: mysql -h 127.0.0.1 -u patrona -p
.
Bunu nasıl düzeltebilirsiniz: MySQL kullanıcısını doğru ana bilgisayar adıyla yeniden oluşturun:
CREATE USER 'patrona'@'172.17.0.1' IDENTIFIED BY 'thepassword';
Aksi takdirde, gerekirse, ana bilgisayar adı için bir joker karakter kullanılabilir:
CREATE USER 'patrona'@'%' IDENTIFIED BY 'thepassword';
Bu kullan ıcının izinlerinin ayarlanması gerekecektir:
GRANT SELECT ON targetdb.* TO 'patrona'@'172.17.0.1';
FLUSH PRIVILEGES;
Eski kullanıcıyı silmeyi unutmayın:
DROP USER 'patrona'@'localhost';
Kullanıcı, ana bilgisayar ve şifre doğru olmasına rağmen veritabanına bağlanamıyorsanız, ek JDBC seçeneklerine trustServerCertificate=true
eklemeyi deneyin. Bu seçenek, Patrona sürücüsüne kök sertifikası yüklü olmasa bile sunucu sertifikasına güvenmesini söyleyecek ve güvenli bir bağlantı kurmalıdır.
JSON içeren kayıtları senkronize etme
Patrona, bir tablonun ilk beş yüz satırındaki anahtarlara dayanarak JSON "şemasını" çıkarır. MySQL JSON alanlarının şeması yoktur, bu nedenle Patrona, bir JSON alanının hangi anahtarlara sahip olduğunu tanımlamak için tablo meta verilerine güvenemez. Şema eksikliğini gidermek için Patrona, ilk beş yüz kaydı alacak ve bu kayıtlardaki JSON'u ayrıştırarak JSON'un "şemasını" çıkaracaktır. Patrona'nın kendisini beş yüz kayıtla sınırlamasının nedeni, meta verileri senkronize etmenin veritabanınıza gereksiz yere yük bindirmemesidir.
Sorun şu ki, JSON'daki anahtarlar kayıttan kayda değişiyorsa, ilk beş yüz satır, bu JSON alanındaki JSON nesneleri tarafından kullanılan tüm anahtarları yakalamayabilir. Patrona'nın tüm JSON anahtarlarını çıkarmasını sağlamak için, ilk beş yüz satırdaki JSON nesnelerine ek anahtarlar eklemeniz gerekecektir.
MySQL 8+ Docker konteyneri oluşturma
Yeni bir MySQL konteyneri oluşturuyorsanız ve:
- Patrona'nın kullanıcıyı manuel olarak oluşturmadan veya kimlik doğrulama mekanizmasını değiştirmeden konteynere bağlanmasını istiyorsanız,
- veya
RSA public key is not available client side (option serverRsaPublicKeyFile not set)
hatasıyla karşılaşıyorsanız,
Konteyneri çalıştırdığınızda ['--default-authentication-plugin=mysql_native_password']
değiştiricilerini kullanın, şöyle:
-
basit bir docker çalıştırma:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx mysql:8.xx.xx --default-authentication-plugin=mysql_native_password
-
veya docker-compose'da:
mysql:
image: mysql:8.xx.xx
container_name: mysql
hostname: mysql
ports:
- 3306:3306
environment:
- "MYSQL_ROOT_PASSWORD=xxxxxx"
- "MYSQL_USER=patrona"
- "MYSQL_PASSWORD=xxxxxx"
- "MYSQL_DATABASE=patrona"
volumes:
- $PWD/mysql:/var/lib/mysql
command: ["--default-authentication-plugin=mysql_native_password"]
Vitess tabanlı veritabanlarıyla ilgili sınırlamalar
Vitess veritabanlarını sorgularken, her alt sorgunun içine bir LIMIT
maddesi eklemelisiniz.
Nedeni: Genellikle, Patrona, nihai sorgu sonuçlarına (örneğin, 2000 veya 10000 satır) sınırlar uygular. Ancak, Vitess'teki bilinen bir hata nedeniyle, Vitess bu s ınırları alt sorgulara uygulayabilir, bu da beklenmedik sonuçlara yol açabilir. Geçici çözüm, alt sorgularınızın her birine sınırlar eklemektir.
Platformu barındıran satıcıyla iletişime geçmek isteyebilirsiniz, çünkü Vitess, bilgi şemasından meta verileri döndürme konusunda sorun yaşayabilir. Patrona'nın uygulama veritabanını doldurmak için bu meta verilere ihtiyacı vardır; Patrona bu meta verileri alamazsa, alanlar görünmeyebilir (veya boş görünebilir).