Kurulum

phpMyAdmin MySQL veritabanı sunucusuna herhangi bir özel güvenlik yöntemi uygulamaz. Bu hala MySQL veritabanı sunucusu üzerinde doğru olarak izinleri veren sistem yöneticisinin işidir. phpMyAdmin’in Kullanıcılar sayfası bunun için kullanılabilir.

Uyarı

Mac kullanıcıları unutmamalıdır ki eğer Mac OS X öncesi sürümdeyseniz, StuffIt Mac biçimleriyle çıkartır. Bu yüzden sunucunuza bunları göndermeden önce TÜM phpMyAdmin betiklerini Unix stiline BBEdit olarak yeniden kaydetmelisiniz, PHP’de olduğu gibi satır sonu karakteri (“\r”) Mac-stili gibi görünmez.

Linux dağıtımları

phpMyAdmin çoğu Linux dağıtımlarına dahildir. Mümkün olduğunca dağıtım paketlerinin kullanılması önerilir - genellikle dağıtımınıza bütünleştirme sağlarlar ve dağıtımınızdan güvenlik güncellemelerini otomatik olarak alırsınız.

Debian

Debian’ın paket havuzları bir phpMyAdmin paketi içerir, ancak yapılandırma dosyasının /etc/phpmyadmin içinde korunduğundan haberiniz olsun ve bir şekilde resmi phpMyAdmin belgelerindekinden farklı olabilir. Özellikle yaptığı:

Ayrıca bkz.

Daha fazla bilgi README.Debian içinde bulanabilir (Paket ile /usr/share/doc/phmyadmin/README.Debian olarak yüklenir).

OpenSUSE

OpenSUSE her zaman phpMyAdmin paketiyle gelir, sadece paketleri openSUSE Yapım Hizmetinden yükleyin.

Ubuntu

Ubuntu, phpMyAdmin paketini yollar, ancak eğer en son sürümü kullanmak isterseniz, phpMyAdmin PPA’dan paketleri kullanabilirsiniz.

Ayrıca bkz.

Paketler Debian içindeki ile aynıdır lütfen daha fazla bilgi için oradaki belgeleri kontrol edin.

Gentoo

Gentoo, phpMyAdmin paketini yollar, hem near stock yapılandırmasında hem de webapp-config yapılandırmasında. Yüklemek için emerge dev-db/phpmyadmin kullanın.

Mandriva

Mandriva, contrib dalının içinde phpMyAdmin paketini yollar ve herzamanki Denetim Merkezi aracılığıyla yüklenebilir.

Fedora

Fedora, phpMyAdmin paketini yollar, ancak yapılandırma dosyasının /etc/phpMyAdmin/ içinde korunduğundan haberiniz olsun ve bir şekilde resmi phpMyAdmin belgelerindekinden farklı olabilir.

Red Hat Enterprise Linux

Red Hat Enterprise Linux kendisi ve bu yüzden de CentOS gibi türevleri phpMyAdmin’i yollamaz, ama eğer etkinleştirilirse, Fedora-driven havuzu Enterprise Linux için Ekstra Paketler (EPEL) yapar böylece. Ancak yapılandırma dosyasının /etc/phpMyAdmin/ içinde korunduğundan haberiniz olsun ve bir şekilde resmi phpMyAdmin belgelerindekinden farklı olabilir.

Windows’a yükleme

Windows’a phpMyAdmin’i yüklemenin en kolay yolu XAMPP gibi bir veritabanı ve web sunucusu ile birlikte olan phpMyAdmin’in dahil olduğu üçüncü taraf ürünleri kullanmaktır.

Buna benzer daha fazla seçenekleri Vikipedi’de bulabilirsiniz.

Git üzerinden yükleme

phpMyAdmin kaynağını https://github.com/phpmyadmin/phpmyadmin.git adresinden kopyalayabilirsiniz:

git clone https://github.com/phpmyadmin/phpmyadmin.git

İlave olarak Composer aracı kullanarak şu bağımlıları yüklemeniz gerekir:

composer update

Eğer geliştirme niyetinde değilseniz, geliştirici araçlarını yüklemesini şunu çağırarak atlayabilirsiniz:

composer update --no-dev

Composer kullanarak yükleme

Composer aracı kullanarak phpMyAdmin’i yükleyebilirsiniz, 4.7.0 sürümünden bu yana yayımlar otomatik olarak varsayılan Packagist havuzuna yansıtılır.

Not

Composer havuzu içeriği otomatik olarak yayımlardan ayrı ayrı oluşturulur, bu yüzden tarball olarak indirdiğiniz ile içerik %100 aynı olmak zorunda değildir. Yine de hiçbir işlevsel farklılık olmamalıdır.

phpMyAdmin’i yüklemek için basitçe çalıştırın:

composer create-project phpmyadmin/phpmyadmin

Alternatif olarak <https://www.phpmyadmin.net/packages.json> adresinde mevcut olan ve yayımlanan tarball’ları içeren kendi composer havuzumuzu kullanabilirsiniz:

composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev

Docker kullanarak yükleme

phpMyAdmin, kolayca dağıtabileceğiniz bir Docker imajı ile gelir. Şunu kullanarak indirebilirsiniz:

docker pull phpmyadmin/phpmyadmin

phpMyAdmin sunucusu 80 nolu bağlantı noktası üzerinde dinlenecek. Bu, ya phpMyAdmin için veritabanı kalıbınızı db ye bağlayarak (--link your_db_host:db belirterek) Docker’ın bağlantı özelliği ile ya da ortam değişkenleri ile veritabanı sunucusuna bağlantıyı yapılandırmanın birkaç yolunu destekler (bu durumda phpMyAdmin kalıbının ağ üzerinden veritabanı kalıbına erişmesine izin vermek için Docker’da ağ kurulumu size kalmış).

Docker ortam değişkenleri

Ortam değişkenlerini kullanarak birkaç phpMyAdmin özelliklerini yapılandırabilirsiniz:

PMA_ARBITRARY

Oturum açma formunda bir veritabanı sunucu anamakine adını girmenize izin verir.

PMA_HOST

Kullanılacak veritabanı sunucusunun anamakine adı veya IP adresi.

PMA_HOSTS

Kullanılacak veritabanı sunucularının virgülle ayrılmış anamakine adları veya IP adresleri.

Not

Sadece eğer PMA_HOST boş ise kullanılır.

PMA_VERBOSE

Veritabanı sunucusunun ayrıntılı adı.

PMA_VERBOSES

Virgülle ayrılmış veritabanı sunucularının ayrıntılı adı.

Not

Sadece eğer PMA_VERBOSE boş ise kullanılır.

PMA_USER

Yapılandırma kimlik doğrulaması kipi için kullanılmak üzere kullanıcı adı.

PMA_PASSWORD

Yapılandırma kimlik doğrulaması kipi için kullanılmak üzere parola.

PMA_PORT

Kullanılacak veritabanı sunucusunun bağlantı noktası.

PMA_PORTS

Kullanmak için virgülle ayrılmış veritabanı sunucularının bağlantı noktaları.

Not

Sadece eğer PMA_PORT boş ise kullanılır.

PMA_ABSOLUTE_URI

Ters proksinin phpMyAdmin’i kullanılır yaptığı tam tanımlanmış yol (https://pma.ornek.net/).

Ayrıca bkz.

$cfg['PmaAbsoluteUri']

Varsayılan olarak, Tanımlama bilgisi kimlik doğrulaması kipi kullanılır, ancak eğer PMA_USER ve PMA_PASSWORD ayarlanırsa, Yapılandırma kimlik doğrulaması kipi olarak değiştirilir.

Not

Oturum açmak için ihtiyacınız olan kimlik bilgileri MySQL sunucusu içinde saklanır, Docker imajı durumunda ayarlamak için çeşitli yollar vardır (örneğin MySQL kalıbını başlatma sırasında MYSQL_ROOT_PASSWORD). Lütfen MariaDB kalıbı veya MySQL kalıbı için belgeleri kontrol edin.

Yapılandırmayı özelleştirme

İlave olarak yapılandırma /etc/phpmyadmin/config.user.inc.php ile ayarlanabilir. Eğer bu dosya mevcutsa, yapılandırma yukarıdaki ortam değişkenlerinden oluşturulduktan sonra yüklenecektir, böylece herhangi bir yapılandırma değişkenini geçersiz kılabilirsiniz. Bu yapılandırma, -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php parametreleri kullanılarak docker çağrıldığında bir birim olarak eklenebilir.

Sağlanan yapılandırma dosyasının Docker ortam değişkenleri‘inden sonra uygulandığını unutmayın, ancak değerlerden herhangi birini geçersiz kılabilirsiniz.

Örneğin CSV dosyasının dışa aktarımının varsayılan davranışını değiştirmek için aşağıdaki yapılandırma dosyasını kullanabilirsiniz:

<?php
$cfg['Export']['csv_columns'] = true;
?>

Ayrıca bkz.

Yapılandırma seçeneklerinin ayrıntılı açıklaması için Yapılandırma‘ya bakın.

Docker Birimleri

Görüntü davranışını özelleştirmek için aşağıdaki birimleri kullanabilirsiniz:

/etc/phpmyadmin/config.user.inc.php

Ek ayarlar için kullanılabilir, daha fazla ayrıntı için önceki bölüme bakın.

/sessions/

PHP oturumlarının depolandığı dizin. Bunu paylaşmak isteyebilirsiniz örneğin Oturumu Açma kimlik doğrulaması kipi kullanırken.

/www/themes/

phpMyAdmin’in temaları arayacağı dizin. Varsayılan olarak sadece phpMyAdmin ile gelen bunlar dahildir, ancak Docker birimlerini kullanarak ilave phpMyAdmin temaları (bakınız Özel Temalar) ekleyebilirsiniz.

Docker Örnekleri

Verilen bir sunucuyu kullanmak üzere phpMyAdmin’i bağlamak için:

docker run --name myadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin/phpmyadmin

Daha fazla sunucuyu kullanmak üzere phpMyAdmin’i bağlamak için:

docker run --name myadmin -d -e PMA_HOSTS=dbhost1,dbhost2,dbhost3 -p 8080:80 phpmyadmin/phpmyadmin

Gelişigüzel sunucu seçeneğini kullanmak için:

docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 -e PMA_ARBITRARY=1 phpmyadmin/phpmyadmin

Ayrıca Docker kullanarak veritabanı kalıbını bağlayabilirsiniz:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin

İlave yapılandırma ile çalışma:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin/phpmyadmin

İlave temalar ile çalışma:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /custom/phpmyadmin/theme/:/www/themes/theme/ phpmyadmin/phpmyadmin

Docker-compose kullanma

Alternatif olarak ayrıca <https://github.com/phpmyadmin/docker> adresinden docker-compose.yml dosyası ile docker-compose kullanabilirsiniz. Bu, oturum açma sayfasında MySQL/MariaDB sunucusunu belirlemenize izin veren - gelişigüzel bir sunucu ile phpMyAdmin’i çalıştıracak.

docker-compose up -d

Docker-compose kullanarak yapılandırma dosyasını özelleştirme

phpMyAdmin yapılandırmasını özelleştirmek için harici bir dosya kullanabilir ve birimler yönergesini kullanarak bunu geçebilirsiniz:

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
     - PMA_ARBITRARY=1
    restart: always
    ports:
     - 8080:80
    volumes:
     - /sessions
     - ~/docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
     - /custom/phpmyadmin/theme/:/www/themes/theme/

Bir alt dizinde haproksi arkasında çalışma

Bir alt dizinde bir Docker kalıbı içinde phpMyAdmin’i çalışır bırakmak istediğinizde, sunucu proksi isteklerindeki istek yolunu yeniden yazmanız gerekir.

Örneğin haproksi kullanarak aşağıdaki gibi yapılabilir:

frontend http
    bind *:80
    option forwardfor
    option http-server-close

    ### NETWORK restriction
    acl LOCALNET  src 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12

    # /phpmyadmin
    acl phpmyadmin  path_dir /phpmyadmin
    use_backend phpmyadmin if phpmyadmin LOCALNET

backend phpmyadmin
    mode http

    reqirep  ^(GET|POST|HEAD)\ /phpmyadmin/(.*)     \1\ /\2

    # phpMyAdmin container IP
    server localhost     172.30.21.21:80

Traefik kullanırken, aşağıdaki gibi bir şeyin çalışması gerekir:

defaultEntryPoints = ["http"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      regex = "(http:\\/\\/[^\\/]+\\/([^\\?\\.]+)[^\\/])$"
      replacement = "$1/"

[backends]
  [backends.myadmin]
    [backends.myadmin.servers.myadmin]
    url="http://internal.address.to.pma"

[frontends]
   [frontends.myadmin]
   backend = "myadmin"
   passHostHeader = true
     [frontends.myadmin.routes.default]
     rule="PathPrefixStrip:/phpmyadmin/;AddPrefix:/"

O zaman sizde docker-compose yapılandırması içinde PMA_ABSOLUTE_URI parametresini belirlemelisiniz:

version: '2'

services:
  phpmyadmin:
    restart: always
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    hostname: phpmyadmin
    domainname: example.com
    ports:
      - 8000:80
    environment:
      - PMA_HOSTS=172.26.36.7,172.26.36.8,172.26.36.9,172.26.36.10
      - PMA_VERBOSES=production-db1,production-db2,dev-db1,dev-db2
      - PMA_USER=root
      - PMA_PASSWORD=
      - PMA_ABSOLUTE_URI=http://example.com/phpmyadmin/

Hızlı Yükleme

  1. Phpmyadmin.net İndirme sayfasından uygun dağıtım aracını seçin. Bazı araçlar sadece İngilizce mesajları içerir, diğerleri tüm dilleri içerir. Biz adı phpMyAdmin-x.x.x -all-languages.tar.gz gibi görünen bir aracı seçeceğinizi farz ediyoruz.

  2. Hakiki bir arşiv indirdiğinizden emin olun, bakınız phpMyAdmin yayımlarını doğrulama.

  3. Dağıtımı untar veya unzip ile çıkartın (altdizinleri çıkarttığınızdan emin olun): web sunucunuzun belge kök dizini içinde tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz. Eğer belge kök dizininize doğrudan erişiminiz yoksa, dosyaları yerel makinanızdaki dizine koyun ve sonra adım 4’te, örneğin ftp kullanarak dizini web sunucunuza aktarın.

  4. Tüm betiklerin kendine özgü sahibi olduğundan emin olun (eğer PHP güvenli kipte çalışıyorsa, sahibi diğer betiklerin sahibinden farklı olan bazı betikler sorun olacaktır). Öneriler için bakınız 4.2 phpMyAdmin’ni kötü niyetli erişime karşı güvenli yapmanın tercih edilen yolu nedir? ve 1.26 phpMyAdmin’i henüz IIS’nin belge kök klasörü içine kurdum ama phpMyAdmin’i çalıştırmayı denediğimde “Belirtilmiş girdi dosyası yok” hatası alıyorum..

  5. Şimdi kurulumunuzu yapılandırmalısınız. Bunun kullanılabileceği iki yöntem vardır. Geleneksel olarak kullanıcılar config.inc.php dosyasını elle düzenlerler, ama artık grafiksel kurulumu tercih edenler için sihirbaz stilinde kur betiği sağlanmıştır. config.inc.php dosyası oluşturmak, başlamak için gereken hala hızlı bir yoldur ve bazı gelişmiş özellikler için gereklidir.

Dosyayı el ile oluşturma

Elle dosya oluşturmak için basitçe ana (en üst seviyede) phpMyAdmin dizini (index.php dosyasını içeren yerde) içinde config.inc.php (küçük bir yapılandırma dosyasına sahip olmak için config.sample.inc.php dosyasını kopyalayabilirsiniz) dosyası oluşturmak için metin düzenleyicinizi kullanın. phpMyAdmin ilk libraries/config.default.php dosyasını yükler ve ondan sonra config.inc.php dosyasında bulduğu herşeyle birlikte bu değerleri geçersiz kılar. Eğer varsayılan değer belirli ayar için tamamsa, config.inc.php dosyası içine dahil etmeye gerek yoktur. İlerlemek için mutemelen sadece birkaç yönergeye ihtiyacınız olacaktır; bunun gibi görünen basit bir yapılandırma:

<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';

$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true; `
?>

Veya oturum açtığınız her seferde sormamasını tercih ediyorsanız:

<?php

$i=0;
$i++;
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type']     = 'config';
?>

Uyarı

Herkesin veritabanınızı işleyebildiğinde yapılandırmada saklanan parolalar güvenli değildir.

Olası yapılandırma değerlerinin tam açıklaması için bu belgenin Yapılandırma bölümüne bakın.

Kur betiği kullanımı

config.inc.php dosyasını el ile düzenlemek yerine phpMyAdmin’in kur özelliğini kullanabilirsiniz. Kuru kullanarak dosya oluşturulabilir ve sunucuya göndermek için indirebilirsiniz.

Sonra, tarayıcınızı açın ve /setup soneki ile, phpMyAdmin’i yüklediğiniz yerdeki konumu ziyaret edin. Değişiklikler sunucuya kaydedilmez, bilgisayarınıza kaydetmek için İndir düğmesini kullanmanız gerekir ondan sonra sunucuya gönderin.

Artık dosya kullanıma hazır. Eğer kur betiğinin sağlamadığı bazı gelişmiş seçenekleri ayarlamayı tercih ederseniz, beğendiğiniz düzenleyicinizle dosyayı gözden geçirebilir ya da düzenleyebilirsiniz.

  1. Eğer auth_type “yapılandırması” kullanıyorsanız, phpMyAdmin kurulum dizinini korumanız önerilir çünkü kullanılan yapılandırma kullanıcının phpMyAdmin kurulumuna erişmesi için parola girmesini gerektirmez. Alternatif kimlik doğrulaması yönteminin kullanılması önerilir, örneğin .htaccess dosyasındaki HTTP–AUTH ile ya da auth_type tanımlama bilgisi veya http kullanımına geçmek. İlave bilgiler için bakınız ISP’ler, çoklu kullanıcı kurulumları, özellikle 4.4 HTTP kimlik doğrulaması kullanırken phpMyAdmin sürekli “Erişim reddedildi” uyarısı veriyor..

  2. Tarayıcınızda ana phpMyAdmin dizinini açın. phpMyAdmin artık karşılama ekranını ve veritabanınızı ya da HTTP veya tanımlama bilgisi kimlik doğrulaması kipi kullanılıyorsa oturum açma iletisi görüntülemelidir.

Debian, Ubuntu ve türevleri üzerinde kur betiği

Debian ve Ubuntu, kur işleminin nasıl etkinleştirilmesinin ve etkisizleştirilmesinin yolunu değiştirdi, bir bakıma bunlardan biri için çalıştırılmak zorundadır.

Yapılandırmayı düzenlemeye izin veren çalıştırma:

/usr/sbin/pma-configure

Yapılandırmayı düzenlemeyi engelleyen çalıştırma:

/usr/sbin/pma-secure

openSUSE üzerinde kur betiği

Bazı openSUSE yayımları kur betiğini pakete dahil etmez. Bunlar üzerinde yapılandırma oluşturmak istediğiniz takdirde orijinal paketi <https://www.phpmyadmin.net/> adresinden ya indirebilir ya da tanıtım sunucumuzdaki kur betiğini kullanabilirsiniz: <https://demo.phpmyadmin.net/STABLE/setup/>.

phpMyAdmin yayımlarını doğrulama

Temmuz 2015 yılından bu yana tüm phpMyAdmin yayımlarını şifreli olarak Ocak 2016’ya kadar imzalayan yayımlama geliştiricisi Marc Delisle’di. Anahtar kimliği 0xFEFC65D181AF644A, PGP parmak izi:

436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A

ve daha fazla kimlik bilgisini <https://keybase.io/lem9> adresinden alabilirsiniz.

Ocak 2016 başından itibaren, yayım yöneticisi Isaac Bennetch’dir. Anahtar kimliği 0xCE752F178259BD92, ve PGP parmak izi:

3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92

ve daha fazla kimlik bilgisini <https://keybase.io/ibennetch> adresinden alabilirsiniz.

Bazı ilave indirmeler (örneğin temalar) Michal Čihař tarafından imzalanmış olabilir. Anahtar kimliği 0x9C27B31342B7511D, ve PGP parmak izi:

63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D

ve daha fazla kimlik bilgisini <https://keybase.io/nijel> adresinden alabilirsiniz.

İndirdiğiniz arşiv ile eşleşen imzayı doğrulamalısınız. Bu yolla yayımlanmış aynı kodu kullandığınızdan emin olabilirsiniz. Ayrıca en son sürümü indirdiğinizden emin olmak için imzalanma tarihini doğrulamalısınız.

Her arşiv, PGP imzası içeren .asc dosyaları ile eşlik eder. İkisine birden aynı klasörde sahip oldunuz mu, imzayı doğrulayabilirsiniz:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Can't check signature: public key not found

Gördüğünüz gibi gpg, ortak anahtarı bilmediğinden yakınır. Bu noktada aşağıdaki adımlardan birini yapmalısınız:

$ gpg --import phpmyadmin.keyring
  • Anahtar sunucularımızın birinden anahtarı indirin ve içe aktarın:

$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 3D06A59ECE730EB71B511C17CE752F178259BD92
gpg: requesting key 8259BD92 from hkp server pgp.mit.edu
gpg: key 8259BD92: public key "Isaac Bennetch <bennetch@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Bu durumu biraz iyileştirecek - bu noktada verilen anahtardan gelen imzanın doğru olduğunu doğrulayabilirsiniz ancak hala anahtar içinde kullanılan ada güvenemezsiniz:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>"
gpg:                 aka "Isaac Bennetch <isaac@bennetch.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3D06 A59E CE73 0EB7 1B51  1C17 CE75 2F17 8259 BD92

Buradaki sorun herhangi bir kimsenin bu isimde olan anahtarla sorunu olabilir. Aslında anahtarın söz konusu kişi tarafından sahiplenildiğinden emin olmanız gerekir. GNU Gizlilik El Kitabı Validating other keys on your public keyring (Ortak anahtar demetinizdeki diğer anahtarları doğrulama) bölümünde bu konuyu kapsar. En güvenilir yöntem geliştirici ile bizzat tanışmak ve anahtar parmak izlerini takas etmektir, ancak aynı zamanda güvenli web’e güvenebilirsiniz. Bu yolla başkalarının imzaları aracılığıyla geçişli olarak anahtara güvenebilirsiniz. Örneğin nasıl Isaac’in anahtarı Linus’un anahtarına bağlanır görebilirsiniz.

Anahtar güvenilir olduğunda, uyarı görülmeyecek:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>" [full]

İmza geçersiz olmalıdır (arşiv değiştirildi), anahtarın güvenilir olması ya da olmaması gerçeğine bakılmaksızın açık bir hata alırsınız:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: BAD signature from "Isaac Bennetch <bennetch@gmail.com>" [unknown]

phpMyAdmin yapılandırma depolaması

3.4.0 sürümünde değişti: phpMyAdmin 3.4.0 öncesinde bu Bağlantılı Tablolar Altyapısı olarak adlandırılırdı, ancak adı genişletilmiş depolama kapsamından dolayı değiştirildi.

İlave özelliklerin (Yer imleri, açıklamalar, SQL-geçmişi, izleme mekanizması, PDF-üretme, Dönüşümler, İlişkiler vb.) bütün grubu için özel tablo grubu oluşturmanız gerekir. Bu tablolar kendi veritabanınıza veya çoklu kullanıcılı kurulumlar (bu veritabanına, denetim kullanıcısı tarafından erişilebilecektir bu yüzden diğer hiçbir kullanıcı bu hakka sahip olmamalıdır) için merkezi veritabanına yerleştirilebilir.

Sıfır yapılandırma

Çoğu durumda, bu veritbanı yapısı otomatik olarak oluşturulabilir ya da yapılandırılabilir. Buna “Sıfır Yapılandırma” kipi denir ve özellikle paylaşılan barındırma durumlarında faydalı olabilir. “Zeroconf” kipi varsayılan olarak açıktır, etkisizleştirmek için $cfg['ZeroConf'] parametresini false olarak ayarlayın.

Aşağıdaki üç senaryo Sıfır Yapılandırma kipi tarafından ele alınmaktadır:

  • Yapılandırma depolama tablolarının mevcut olmadığı bir veritabanına girerken, phpMyAdmin bunları İşlemler sekmesinden oluşturmanıza olanak sunar.

  • Tabloları zaten mevcut olan bir veritabanına girildiğinde, yazılım otomatik olarak bunu algılar ve bunları kullanmaya başlar. Bu en yaygın bir durumdur; tablolar otomatik olarak başlangıçta oluşturulduktan sonra sürekli olarak kullanıcıyı rahatsız etmeden kullanılır; bu ayrıca, kullanıcının config.inc.php dosyasını düzenlemesi mümkün olmayan paylaşılan barındırmada çok faydalıdır ve genellikle kullanıcının sadece bir veritabanına erişimi vardır.

  • Çoklu veritabanlarına erişilirken, eğer kullanıcı yapılandırma depolaması tablolarını içeren veritabanına ilk defa giriyorsa ondan sonra başka bir veritabanına geçerse, phpMyAdmin ilk veritabanından tabloları kullanmaya devam eder; kullanıcıya yeni veritabanında daha fazla tablo oluşturması için sorulmaz.

Elle yapılandırma

Lütfen ./sql/ dizininize bakın, create_tables.sql adındaki dosyayı burada bulmalısınız. (Eğer Windows sunucusu kullanıyorsanız, 1.23 Win32 makinede MySQL çalıştırıyorum. Her defasında yeni bir tablo oluşturduğumda tablo ve sütun adları küçük harfe değiştiriliyor! konusuna özellikle dikkat edin).

Eğer zaten bu altyapıya sahipseniz ve:

  • MySQL 4.1.2 veya yenisine yükseltmişseniz, lütfen sql/upgrade_tables_mysql_4_1_2+.sql dosyasını kullanın.

  • 2.5.0 veya yenisinden, phpMyAdmin 4.3.0 veya yenisine (<= 4.2.x) yükseltmişseniz, lütfen sql/upgrade_column_info_4_3_0+.sql dosyasını kullanın.

  • 4.3.0 veya yenisinden, phpMyAdmin 4.7.0 veya yenisine yükseltmişseniz, lütfen sql/upgrade_tables_4_7_0+.sql dosyasını kullanın.

ve ondan sonra sql/create_tables.sql dosyasını içe aktararak yeni tabloları oluşturun.

phpMyAdmin’ninizi sizin için tablo oluşturmada kullanabilirsiniz. Lütfen veritabanları ve tablolar oluşturmak için özel (yönetici) yetkilere ihtiyacınız olduğunun farkında olun ve bu betiğin veritabanının adına bağlı olarak bazı ayarlamalara ihtiyacı olabilir.

sql/create_tables.sql dosyası içe aktarıldıktan sonra config.inc.php dosyanız içindeki tablo adlarını belirlemelisiniz. Bunun için kullanılan yönergeler Yapılandırma içinde bulunabilir.

Ayrıca bu tablolar için uygun hakları olan bir denetim kullancısına ($cfg['Servers'][$i]['controluser'] ve $cfg['Servers'][$i]['controlpass'] ayarları) ihtiyacınız olacak. Örneğin aşağıdaki ifadeyi kullanarak oluşturabilirsiniz:

GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost'  IDENTIFIED BY 'pmapass';

Eski sürümden yükseltme

Uyarı

Yeni sürüm paketini asla phpMyAdmin’in varolan bir kurulumu üzerine çıkartmayın, her zaman önce sadece yapılandırma dosyalarını tutarak eski dosyaları silin.

Bu şekilde artık, ciddi güvenlik çıkarımlarına veya çeşitli kırılmalara neden olabilen, dizinde çalışmayan kod bırakmayacaksınız.

Yeni açılmış olan paket içine önceki kurulumunuzdan config.inc.php dosyasını basitçe kopyalayın. Eski sürümden alınan yapılandırma dosyası, bazı değişmiş veya kaldırılmış seçeneklerinden dolayı bazı ince ayarlar gerektirebilir. PHP 5.3 ve sonrası ile uyumluluk için yapılandırma dosyanızın en sonunda bulabileceğiniz set_magic_quotes_runtime(0); ifadesini kaldırın.

libraries/config.default.php dosyasını config.inc.php üzerine kopyalamamalısınız çünkü varsayılan yapılandırma dosyası sürüme özgüdür.

Tam yükseltme birkaç basit adımda gerçekleştirilebilir:

  1. En son phpMyAdmin sürümünü <https://www.phpmyadmin.net/downloads/> adresinden indirin.

  2. Varolan phpMyAdmin klasörünü yeniden adlandırın (örneğin phpmyadmin-eski).

  3. Yeni indirilmiş phpMyAdmin paketini istenen konuma açın (örneğin phpmyadmin).

  4. config.inc.php` dosyasını eski konumundan (phpmyadmin-eski) yeni olan konumuna (phpmyadmin) kopyalayın.

  5. Her şeyin düzgün çalışıp çalışmadığını deneyin.

  6. Önceki sürümün yedeğini kaldırın (phpmyadmin-eski).

Eğer önceki 4.1.2 sürümünden 5.x veya daha yeni sürümüne MySQL sunucunuzu yükselttiyseniz ve phpMyAdmin yapılandırma depolaması kullanıyorsanız, sql/upgrade_tables_mysql_4_1_2+.sql içinde bulunan SQL betiğini çalıştırmalısınız.

Eğer phpMyAdmin’inizi 2.5.0 veya yenisinden 4.3.0 veya yenisine (<= 4.2.x) yükselttiyseniz ve phpMyAdmin yapılandırma depolaması kullanıyorsanız, sql/upgrade_column_info_4_3_0+.sql içinde bulunan SQL betiğini çalıştırmalısınız.

Tarayıcı önbelleğini temizlemeyi ve oturumu kapatıp ve tekrar oturum açarak eski oturumu boşaltmayı unutmayın.

Kimlik doğrulaması kipleri kullanımı

Kullanıcılara kendi veritabanlarına erişim vermek istediğiniz ve diğerleri ile oynamalarını istemediğiniz çoklu kullanıcılı ortam içinde HTTP ve tanımlama bilgisi kimlik doğrulaması kipleri önerilir. Yine de MS Internet Explorer’ın tanımlama bilgileri ile ilgili olarak gerçekten hatalı göründüğünün farkında olun, en azından sürüm 6’ya kadar. Hatta tekli kullanıcılı ortam içinde bile, HTTP veya tanımlama bilgisi kimlik doğrulaması kipini kullanmayı tercih edebilirsiniz böylece kullanıcı adı/parola eşlemeniz yapılandırma dosyasında açıkta olmaz.

HTTP ve tanımlama bilgisi kimlik doğrulaması kipleri daha güvenlidir: MySQL oturum açma bilgisinin phpMyAdmin yapılandırma dosyasında (mümkünse $cfg['Servers'][$i]['controluser'] için hariç) ayarlanmasına ihtiyacı yoktur. Ancak, aklınızda olsun HTTPS protokolü kullanmadığınız sürece, parola düz metin içinde yolculuk eder. Tanımlama bilgisi kipinde, parola geçici tanımlama bilgisi içinde AES algoritması ile şifrelenip saklanır.

Ondan sonra her gerçek kullanıcıya belli bir takım veritabanlarında bir takım yetkiler verilmelidir. Bu yetkilerin etkisini anlamadıkça normal olarak sıradan kullanıcıya genel yetkileri vermemelisiniz (örneğin, süper kullanıcı oluşturuyorsunuz). Örneğin, kullanıcı_tabanlı veritabanındaki tüm yetkiler ile gerçek_kullanıcı kullanıcısını vermek için:

GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';

Kullanıcının burada hemen yapabildiği MySQL kullanıcı yönetimi sistemi tarafından tamamen kontrol etmektir. HTTP veya tanımlama bilgisi kimlik doğrulaması kipi ile $cfg['Servers'] dizilimi içindeki kullanıcı/parola alanlarını doldurmanıza gerek yok.

HTTP kimlik doğrulaması kipi

Not

HTTP kimlik doğrulaması’nda uygun oturum kapatmanın bir yolu yoktur, çoğu tarayıcı farklı başarılı kimlik doğrulaması olana kadar kimlik bilgilerini hatırlar. Bu nedenle bu yöntem, oturumu kapattıkan sonra aynı kullanıcı ile oturum açamayacağınız sınırlamaya sahiptir.

Oturumu Açma kimlik doğrulaması kipi

Bir oturumda kimlik bilgilerini kaydetmenin en temel örneği examples/signon.php olarak mevcuttur:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use session based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */

/* Use cookies for session */
@ini_set('session.use_cookies', 'true');
/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
//session_save_path('/foobar');
@session_start();

/* Was data posted? */
if (isset($_POST['user'])) {
    /* Store there credentials */
    $_SESSION['PMA_single_signon_user'] = $_POST['user'];
    $_SESSION['PMA_single_signon_password'] = $_POST['password'];
    $_SESSION['PMA_single_signon_host'] = $_POST['host'];
    $_SESSION['PMA_single_signon_port'] = $_POST['port'];
    /* Update another field of server configuration */
    $_SESSION['PMA_single_signon_cfgupdate'] = array('verbose' => 'Signon test');
    $id = session_id();
    /* Close that session */
    @session_write_close();
    /* Redirect to phpMyAdmin (should use absolute URL here!) */
    header('Location: ../index.php');
} else {
    /* Show simple form */
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' , "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin single signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">';
        echo $_SESSION['PMA_single_signon_error_message'];
        echo '</p>';
    }
    ?>
    <form action="signon.php" method="post">
    Username: <input type="text" name="user" /><br />
    Password: <input type="password" name="password" /><br />
    Host: (will use the one from config.inc.php by default)
    <input type="text" name="host" /><br />
    Port: (will use the one from config.inc.php by default)
    <input type="text" name="port" /><br />
    <input type="submit" />
    </form>
    </body>
    </html>
    <?php
}
?>

Alternatif olarak ayrıca bu yolu OpenID ile bütünleştirerek examples/openid.php dosyasında gösterildiği gibi kullanabilirsiniz:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin using OpenID
 *
 * This is just example how to use single signon with phpMyAdmin, it is
 * not intended to be perfect code and look, only shows how you can
 * integrate this functionality in your application.
 *
 * It uses OpenID pear package, see https://pear.php.net/package/OpenID
 *
 * User first authenticates using OpenID and based on content of $AUTH_MAP
 * the login information is passed to phpMyAdmin in session data.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */

if (false === @include_once 'OpenID/RelyingParty.php') {
    exit;
}

/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;

/**
 * Map of authenticated users to MySQL user/password pairs.
 */
$AUTH_MAP = array(
    'https://launchpad.net/~username' => array(
        'user' => 'root',
        'password' => '',
        ),
    );

/**
 * Simple function to show HTML page with given content.
 *
 * @param string $contents Content to include in page
 *
 * @return void
 */
function Show_page($contents)
{
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' , "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin OpenID signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION) && isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">' , $_SESSION['PMA_single_signon_message'] , '</p>';
        unset($_SESSION['PMA_single_signon_message']);
    }
    echo $contents;
    ?>
    </body>
    </html>
    <?php
}

/**
 * Display error and exit
 *
 * @param Exception $e Exception object
 *
 * @return void
 */
function Die_error($e)
{
    $contents = "<div class='relyingparty_results'>\n";
    $contents .= "<pre>" . htmlspecialchars($e->getMessage()) . "</pre>\n";
    $contents .= "</div class='relyingparty_results'>";
    Show_page($contents);
    exit;
}


/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
@session_start();

// Determine realm and return_to
$base = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    $base .= 's';
}
$base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];

$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[strlen($returnTo) - 1] != '/') {
    $returnTo .= '/';
}
$returnTo .= 'openid.php';

/* Display form */
if (!count($_GET) && !count($_POST) || isset($_GET['phpMyAdmin'])) {
    /* Show simple form */
    $content = '<form action="openid.php" method="post">
OpenID: <input type="text" name="identifier" /><br />
<input type="submit" name="start" />
</form>
</body>
</html>';
    Show_page($content);
    exit;
}

/* Grab identifier */
if (isset($_POST['identifier']) && is_string($_POST['identifier'])) {
    $identifier = $_POST['identifier'];
} else if (isset($_SESSION['identifier']) && is_string($_SESSION['identifier'])) {
    $identifier = $_SESSION['identifier'];
} else {
    $identifier = null;
}

/* Create OpenID object */
try {
    $o = new OpenID_RelyingParty($returnTo, $realm, $identifier);
} catch (Exception $e) {
    Die_error($e);
}

/* Redirect to OpenID provider */
if (isset($_POST['start'])) {
    try {
        $authRequest = $o->prepare();
    } catch (Exception $e) {
        Die_error($e);
    }

    $url = $authRequest->getAuthorizeURL();

    header("Location: $url");
    exit;
} else {
    /* Grab query string */
    if (!count($_POST)) {
        list(, $queryString) = explode('?', $_SERVER['REQUEST_URI']);
    } else {
        // I hate php sometimes
        $queryString = file_get_contents('php://input');
    }

    /* Check reply */
    try {
        $message = new OpenID_Message($queryString, OpenID_Message::FORMAT_HTTP);
    } catch (Exception $e) {
        Die_error($e);
    }

    $id = $message->get('openid.claimed_id');

    if (!empty($id) && isset($AUTH_MAP[$id])) {
        $_SESSION['PMA_single_signon_user'] = $AUTH_MAP[$id]['user'];
        $_SESSION['PMA_single_signon_password'] = $AUTH_MAP[$id]['password'];
        session_write_close();
        /* Redirect to phpMyAdmin (should use absolute URL here!) */
        header('Location: ../index.php');
    } else {
        Show_page('<p>User not allowed!</p>');
        exit;
    }
}

Daha başka bir şekilde kullanarak kimlik bilgilerini geçmek istiyorsanız, verileri almak ve $cfg['Servers'][$i]['SignonScript'] olarak ayarlamak için PHP içinde sarmalayıcı uygulamak zorundasınız. Çok küçük bir örneği examples/signon-script.php içinde var:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use script based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */


/**
 * This function returns username and password.
 *
 * It can optionally use configured username as parameter.
 *
 * @param string $user User name
 *
 * @return array
 */
function get_login_credentials($user)
{
    /* Optionally we can use passed username */
    if (!empty($user)) {
        return array($user, 'password');
    }

    /* Here we would retrieve the credentials */
    $credentials = array('root', '');

    return $credentials;
}

Yapılandırma kimlik doğrulaması kipi

  • Bu kip bazen daha az güvenli olandır çünkü $cfg['Servers'][$i]['user'] ve $cfg['Servers'][$i]['password'] alanlarını doldurmanızı gerektirir (ve sonuç olarak config.inc.php dosyanızı okuyabilen her kim olursa kullanıcı adı ve parolanızı keşfedebilir).

  • ISP’ler, çoklu kullanıcı kurulumları bölümü içinde yapılandırma dosyanızı nasıl koruyacağınızı anlatan bir giriş vardır.

  • Bu kipte ilave güvenlik için Anamakine kimlik doğrulaması $cfg['Servers'][$i]['AllowDeny']['order'] ve $cfg['Servers'][$i]['AllowDeny']['rules'] yapılandırma yönergelerini dikkate almak isteyebilirsiniz.

  • Tanımlama bilgisi ve http’den farklı olarak, phpMyAdmin sitesinin ilk yüklenmesinde oturum açmak için kullanıcı gerekmez. Bu tasarımındandır ama herhangi bir kullanıcının kurulumunuza erişmesine izin verebilir. Bazı kısıtlama yöntemlerini kullanmak önerilmektedir, belki HTTP-AUTH yönergesiyle .htaccess dosyası veya birinin yönlendiricisinde gelen HTTP isteklerine izin vermemek ya da güvenlik duvarı yetecektir (her ikiside bu kılavuzun kapsamı dışında ama kolaylıkla Google ile aranabilir).

phpMyAdmin kurulumunuzun güvenliğini sağlama

phpMyAdmin takımı uygulamayı güvenli yapmak için zorlamaya çalışır, ancak daima kurulumunuzu daha güvenli yapan yollar vardır:

  • Güvenlik duyurularımızı takip edin ve yeni güvenlik açığı yayımlanır yayımlanmaz phpMyAdmin’i yükseltin.

  • phpMyAdmin’in sadece HTTPS üzerinden hizmet etmesi. Tercihen, HSTS bile kullanmalısınız, öyle ki protokol düşürme saldırılarından korunursunuz.

  • PHP kurulumunuzun üretim siteleri için önerileri takip ettiğinden emin olun, örneğin display_errors etkisizleştirilmelidir.

  • phpMyAdmin’den test dizinini kaldırın, geliştirme yapmıyor ve deneme paketi gerekmiyorsa.

  • phpMyAdmin’den setup dizinini kaldırın, muhtemelen baştaki kurulumdan sonra kullanmayacaksınız.

  • Kimlik doğrulaması yöntemini uygun şekilde seçin - Tanımlama bilgisi kimlik doğrulaması kipi paylaşılan barındırma için muhtemelen en iyi seçimdir.

  • Web sunucusu yapılandırmanızda ./libraries/ veya ./templates/ altklasörlerindeki yardımcı dosyalara erişimi engeller. Bu gibi yapılandırma, olası yolu açıkta bırakmaya ve bu kodda bulunabilmesine olanak veren çapraz taraflı betik yazımı savunmasızlığına engel olur. Apache web sunucusu için genellikle bu dizinlerdeki .htaccess dosyasıyla bu başarı sağlanır.

  • Geçici dosyalara erişimi engeller, bakınız $cfg['TempDir'] (eğer bu web kök klasörünüz içinde bulunuyorsa, ayrıca bakınız Web sunucusu gönderme/kaydetme/içe aktarma dizinleri.

  • Bu genelde, herkese açık bir phpMyAdmin kurulumunu, çoğunlukla iyi hiçbir şey yapamayan robotların erişimine karşı korumak için iyi bir fikirdir. Bunu web sunucunuzun kök dizininde robots.txt dosyasını kullanarak veya web sunucusu yapılandırması sayesinde erişimi sınırlandırarak yapabilirsiniz, bakınız 1.42 Robot’ları phpMyAdmin’e erişimini nasıl önleyebilirim?.

  • MySQL kullanıcılarının phpMyAdmin’e erişebilmesini istemediğiniz durumda, onları sınırlandırmak için $cfg['Servers'][$i]['AllowDeny']['rules'] veya root kullanıcısı erişimini reddetmek için $cfg['Servers'][$i]['AllowRoot'] kullanabilirsiniz.

  • phpMyAdmin’i kimlik doğrulamalı proksi arkasında gizlemeyi düşünün, böylece kullanıcıların MySQL kimlik bilgilerini phpMyAdmin’e vermeden önce kimlik doğrulaması yapmaları gerekir. Web sunucunuzu HTTP kimlik doğrulaması istemesi için yapılandırarak bunu elde edebilirsiniz. Örneğin Apache’de bu şöyle yapılabilir:

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/share/phpmyadmin/passwd
    Require valid-user
    

    Bir kez yapılandırmayı değiştirdiniz mi, kimliğini doğrulayabilen kullanıcıların bir listesini oluşturmanız gerekir. Bu, htpasswd yardımcı uygulaması kullanılarak yapılabilir:

    htpasswd -c /usr/share/phpmyadmin/passwd username
    
  • Eğer otomatikleştirilmiş saldırılardan korkuyorsanız, $cfg['CaptchaLoginPublicKey'] ve $cfg['CaptchaLoginPrivateKey'] ile Captcha’yı etkinleştirmek bir seçenek olabilir.

  • Başarısız oturum açma girişimleri syslog’a (eğer mevcutsa, bakınız $cfg['AuthLog']) günlüklenir. Bu, deneme yanılma saldırısı girişimlerini engellemek için fail2ban gibi bir aracı kullanmaya izin verebilir. Syslog tarafından kullanılan günlük dosyasının Apache hata veya erişim günlük dosyaları ile aynı olmadığını unutmayın.

  • phpMyAdmin’i diğer PHP uygulamaları ile çalıştırmanız durumunda, olası oturum tabanlı saldırıları buna karşı önlemek için phpMyAdmin’in ayrı oturum depolaması kullanması genellikle tavsiye edilir. Bunu başarmak için $cfg['SessionSavePath'] kullanabilirsiniz.

Veritabanı sunucusuna bağlantı için SSL kullanımı

Uzak veritabanı sunucusuna bağlanırken SSL kullanılması tavsiye edilir. SSL kurulumunun yer aldığı birçok yapılandırma seçeneği vardır:

$cfg['Servers'][$i]['ssl']

Tümünde SSL kullanılıp kullanılmayacağını tanımlar. Eğer sadece bunu etkinleştirirseniz, bağlantı şifrelenecektir, ancak bağlantının kimlik doğrulaması olmaz - doğru sunucuyla konuştuğunuzu doğrulayamazsınız.

$cfg['Servers'][$i]['ssl_key'] ve $cfg['Servers'][$i]['ssl_cert']

Bu, istemcinin sunucuya kimliğini doğrulaması için kullanılır.

$cfg['Servers'][$i]['ssl_ca'] ve $cfg['Servers'][$i]['ssl_ca_path']

Sunucu sertifikaları için güvendiğiniz sertifika yetkilileri. Bu, bir güvenilen sunucuyla konuştuğunuzdan emin olmak için kullanılır.

$cfg['Servers'][$i]['ssl_verify']

Bu yapılandırma, sunucu sertifika doğrulamasını etkisizleştirir. Dikkatli kullanın.

Bilinen sorunlar

Sütuna özel yetkileri olan kullanıcılar “Gözat” işlemi yapamazlar

Eğer bir kullanıcı bir tablodaki bazı (ama tümü değil) sütunlarda sadece sütuna özel yetkilere sahipse, “Gözat” işlemi bir hata iletisi ile başarısız olacaktır.

Geçici bir çözüm olarak, tablo olarak aynı isimde yer işaretli bir sorgu oluşturulabilir, bunun yerine “Gözat” bağlantısı kullanarak bu çalışacaktır. Sorun 11922.

‘Http’ kimlik doğrulaması kullanarak oturumu kapattıktan sonra tekrar oturum açma sorunu

‘Http’ auth_type kullanıldığında, tekrar oturum açma imkansız olabilir (oturum kapatma el ile olduğunda ya da bir süre işlem yapılmamasından sonra). Sorun 11898.