Aramayan Bulamaz
×
mysql etiketine ait içerikleri görüntülemektesiniz.
Plesk Panel Mysql Admin Şifresini Güncelleme

Plesk panel servisleri bir mysql veritabanı kullanarak çalışmaktadır. Plesk panele ait bilgiler, sunucuda ekli olan siteler ve o sitelerin özelliklerinin bir çoğu "psa" isimli veritabanında tutulmaktadır. Plesk panel psa isimli veritabanına admin kullanıcısı ile bağlanmaktadır. Bu admin kullanıcısının mysql şifresi değiştirilirse eğer Plesk panel girişinde bir hata mesajı ile karşılaşabilirsiniz ve erişim sağlayamazsınız. Aşağıdaki komutu SSH üzerinden çalıştırarak Plesk admin şifresini görüntüleyebilirsiniz.

# /usr/local/psa/bin/admin --show-password

Admin şifresi değiştirildiğinde bu komut çalıştırıldığında da hata alabilirsiniz. Aşağıdaki komutları çalıştırarak Plesk panel mysql admin şifresini tekrar düzeltebilir ve bu problemi çözebilirsiniz.

# export PSA_PASSWORD=buraya_şifreniz_gelecek # /usr/local/psa/admin/bin/ch_admin_passwd

PHP Data Object - PDO

PHP de veri tabanına bağlanma ve sorgu çalıştırmayı anlatmıştım.
Klasik veri tabanı bağlantısı mysql_connect() komutu ile yapılıyor, sorgu çalıştırma mysql_query() ile yapılıyor fakat pdo yapısı biraz farklı. PDO php 5.2 den sonra gelen bir veri tabanı sorgu sınıfı, yani nesne tabanlı bir yapı.
En güzel özelliği çoklu veri tabanı desteği olması. Oracle, SQL Server, MySQL gibi farklı veritabanlarına bağlanabilme özelliği sunuyor. Ayrıca kendi içerisinde sql injection koruması olan bir sınıftır.

$db = new PDO('mysql:host=localhost;dbname=veritabanı adı', 'kullanıcı adı', 'sifre'); PDO sınıfını db değişkenine bağlı olarak oluşturduk, sorgularımızı bu sınıfa bağlı methodlar ile yapacağız.

query() methodu genel olarak tüm sorgularda kullanılır.
exec() methodu bilgi girişi, güncelleme, silme gibi veri tabanına değer göndermede kullanılır.
prepare() methodu query() methodundaki gibi tüm sorguları çalıştırmada kullanılır fakat buna ek olarak bir de execute() methodu kullanılır, prepare ile yapılan sorgunun uygulanması için.
fetch() methodu; tek bir sonuç getirmek için kullanılır, query ile çalıştırılmışsa sorgu query den sonra, prepare ile çalıştırılmışsa sorgu execute methodundan sonra kullanılır.

Veritabanından dataların sayılarını getirmek istediğimizde fetch(PDO::FETCH_NUM) kullanılır.

Örnek olarak bir sorgu çalıştırayım, sorguyu query ile yapacağım. $sorgu = $db->query('select * from blog where id=1')->fetch(); Veritabanından id değeri 1 olan konuyu getiren sorguyu yazdık. Bu şekilde de yapabilirdik $sorgu = $db->query('select * from blog where id=1'); $sorgu->fetch(); İkisi de aynı işlemi yapıyor. echo $sorgu['blog_baslik'];
İ

Mysql\'de Kullanıcıları Konu Sayılarına Göre Listeleme

İki farklı tablomuz var, birinde açılan konular, diğerinde ise kullanıcılar.
Sistemde hangi kullanıcı konu açıyorsa o kullanıcının id bilgisi de konuların bulunduğu tabloda tutuluyor.
Konular Tablosunda
id, baslik, icerik, yayin, kullanici_id alanları var
Kullanıcılar Tablosunda
k_id, kullanici_adi, sifre, yetki alanları var

Biz yetki durumu 1,2 ve 3 olan kullanıcıları yayında bulunan konu sayılarına göre konu sayısı en fazla olan en üstte çıkacak şekilde göstermek istiyoruz.

Ben bunu çok uzun bir yöntemle yapmıştım, konuların bulunduğu yerden kullanıcı idlerini ve o kullanıcıların konu sayılarını ayrı ayrı alıp dizi değişkenine atayıp sıralayıp foreach ile döngüye sokup o şekilde sadece üç kullanıcı gelecek şekilde uzun sorgular topluğu şeklinde yapmıştım, daha kısa bir yöntem arıyordum ve Kerim Yılmaz (Ayazoğlu) kardeşim sayesinde çözdüm.

Tek bir sql sorgusu
select distinct(b.kullanici_id),k.kullanici_adi, (select count(id) from konular where kullanici_id=k.p_id) as toplam from kullanicilar kinner join konular b on b.kullanici_id=k.k_id where b.yayin=1 and k.yetki=1 or k.yetki=2 or k.yetki=3 order by toplam desc limit 3 sorguyu şu şekilde açıklayayım, tablo ilişkilendirmesi yaptık, bu konuda anlatmıştım tablo ilişkilendirmeyi, distinct ile veriyi tekrarsız çekiyoruz.
Konular tablosunda konusu olan kullanıcıları seçmiş olduk, ekran yazdırmak istediğimiz alanları seçtik sadece veritabanından, kullanici_adi, konu sayıları ve kullanıcı idleri.
select işlemi yaparken içerde parantez içinde bir select sorgusu daha kullandık, bura da count ile konuların sayılarını aldık ve hangi kullanıcının konu sayısını alacağımızı where koşuluyla belirttik daha sonra aldığımız bu sayıları toplam isimli bir alana aktardık ve toplam alanındaki değere göre tersten sıralayarak sadece 3 kişi gelecek şekilde kişileri seçmiş olduk.
sorguyu phpMyAdmin de çalıştırınca resimdeki g

C# Veritabanında Sorgu Çalıştırma

C# ta veritabanında sorgu çalıştırabilmemiz için SqlCommand komutunu kullanırız, ben örneğimize MySql üzerinden devam edeceğim için MySqlCommand komutunu kullanacağım.
Yeni bir windows form uygulaması başlatıp, iki buton bir de listview ekliyoruz. Butonun birine "Bilgileri Getir" diğerini "Bilgiyi Sil" isimlerini veriyoruz.İlk önce veritabanı bağlantımızı yapmak için bağlantı komutlarımızı yapıp bağlantıyı açıyoruz. MySqlConnection baglanti = new MySqlConnection("server=localhost; userid=root; password=root; database=cryptograph"); Bilgileri Getir ismini verdiğimiz butonun click olayına hata kontrol komutlarımızı kullanarak bağlantımızı açıyoruz ve veriler çekmek için gerekli komutlarımızı yazıyoruz.
try { baglanti.Open(); MySqlCommand sorgu = new MySqlCommand("SELECT * FROM blog ORDER BY id DESC", baglanti); MySqlDataReader oku = sorgu.ExecuteReader(); while (oku.Read()) { listView1.Items.Add(oku["blog_baslik"].ToString()); } } catch (Exception hata) { MessageBox.Show(hata.ToString(), "Hata"); } finally { baglanti.Close(); }
MysqlCommand komutu ile sorgu isminde bir nesne tanımladık ve sql sorgumuzu belirtip hangi bağlantıyı kullanacağını belirttik.SELECT * FROM blog ORDER BY id DESC sql sorgumuz, burada blog isimli tablodan verilerin id alanına gire tersten sıralanacak şekilde getirilmesini istedik.MysqlDataReader ile bir data reader nesnesi oluşturduk, yani veritabanından bilgileri okuyacak olan nesne, oku isimli nesneye sorgu.ExecuteReader(); bu komut ile bilgiyi nereden okuyacağını belirttik, sorgu isimli nesneden alacak bilgiyi.Daha sonra bunu döngüye sokarak listview içine ekledik veriyi. Try içerisinde gerçekleşen sorgular bittiğinde finally içerisindeki sorgu çalıştırılır, yani durum gerçekleşse de gerçekleşmese de en sonda yapılacak işlem burada belirtiliyor,

C#\'ta Veritabanı Bağlantısı

C#'ta SQLServer bağlantısı için isim uzayı olarak SqlClient'ı çağırmamız gerekiyor (using System.Data.SqlClient;), veya başka bir veritabanı için hangi isim uzayı gerekiyorsa onu çağırırız. Mysql için net connector kuruluysa eğer using MySql.Data.MySqlClient;  kullanırız.
Bağlantı komutları: SqlConnection, eğer mysql kullanacaksak MySqlConnection. Dikkat ederseniz komutun başına sadece My eki geldi. Ben örneğime MySql üzerinden devam edeceğim.
MySqlConnection baglanti = new MySqlConnection("server=localhost; userid=root; password=root; database=cryptograph");
MysqlConnection komutu ile baglanti isminde bir nesne oluşturuyoruz, eşitlikten sonra parantez içinde veritabanı bilgilerimizi yazıyoruz.Server veritabanımızın bulunduğu yer, userid veritabanı kullanıcısının adı, password veritabanı kullanıcısının şifresi, databasede ise veritabanımızın adı tanımlanıyor.
Şimdi sadece baglanti isminde bir nesne tanımladık, bu bağlantıyı açmadık. Bağlantıyı açmak için baglanti.Open(); komutunu kullanıyoruz. Bu şekil bir kullanımda eğer bağlantıda sorun yaşanırsa program hata verir ve çalışması durur. Bu gibi durumlarda try-catch hata kontrol komutları kullanırız.
try{ baglanti.Open(); MessageBox.Show("Bağlantı açıldı"); } catch (Exception hata){ MessageBox.Show(hata.ToString(),"Hata"); }
Bağlantı açıldığı durumda ekrana Bağlantı açıldı uyarısı verecek, bağlantının hatalı olduğu durumda ise ekrana hata kodu ile birlikte hata mesajını verecektir.
Bağlantıyı kapatmak içinse baglanti.Close(); komutunu vermemiz gerekecektir.


Örnek dosyayı buradan indirebilirsiniz

  • Önceki Sayfa
  • Sonraki Sayfa