Buyukweb
MySQL/MariaDB Temel Yönetim: Veritabanı, Kullanıcı ve Yetki Yönetimi

MySQL/MariaDB Temel Yönetim: Veritabanı, Kullanıcı ve Yetki Yönetimi

MySQL ve MariaDB veritabanı yönetimi. Veritabanı ve tablo oluşturma, kullanıcı yönetimi, yetkilendirme, yedekleme ve temel SQL komutları.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü14 dakika okuma

MySQL/MariaDB Temel Yönetim

MySQL ve MariaDB, web uygulamalarında en yaygın kullanılan ilişkisel veritabanı yönetim sistemleridir. MariaDB, MySQL'in topluluk destekli fork'udur ve büyük ölçüde uyumludur.

Kurulum

Ubuntu/Debian:

apt install mysql-server     # MySQL
apt install mariadb-server   # MariaDB

systemctl enable --now mysql  # veya mariadb

RHEL/Rocky Linux:

dnf install mysql-server     # MySQL
dnf install mariadb-server   # MariaDB

systemctl enable --now mysqld  # veya mariadb

Güvenli Kurulum

mysql_secure_installation

# Sorular:
# - Root şifresi belirle
# - Anonim kullanıcıları kaldır: Y
# - Root'un uzaktan girişini kapat: Y
# - Test veritabanını kaldır: Y
# - Ayrıcalık tablolarını yeniden yükle: Y

MySQL'e Bağlanma

# Root olarak bağlan
mysql -u root -p

# Belirli veritabanına bağlan
mysql -u kullanici -p veritabani_adi

# Komut satırında çalıştır
mysql -u root -p -e "SHOW DATABASES;"

Veritabanı Yönetimi

-- Veritabanlarını listele
SHOW DATABASES;

-- Veritabanı oluştur
CREATE DATABASE sitem_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Veritabanı seç
USE sitem_db;

-- Veritabanı sil
DROP DATABASE test_db;

-- Tablo listesi
SHOW TABLES;

-- Tablo yapısı
DESCRIBE kullanicilar;
SHOW CREATE TABLE kullanicilar;

Tablo Oluşturma

CREATE TABLE kullanicilar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kullanici_adi VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    sifre_hash VARCHAR(255) NOT NULL,
    olusturulma_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    aktif BOOLEAN DEFAULT TRUE,
    INDEX idx_email (email)
) ENGINE=InnoDB;

-- Tablo değiştir
ALTER TABLE kullanicilar ADD COLUMN telefon VARCHAR(20);
ALTER TABLE kullanicilar DROP COLUMN telefon;
ALTER TABLE kullanicilar MODIFY COLUMN email VARCHAR(150);

Temel SQL Komutları

-- Veri ekle
INSERT INTO kullanicilar (kullanici_adi, email, sifre_hash)
VALUES ('ahmet', '[email protected]', 'hash_degeri');

-- Veri sorgula
SELECT * FROM kullanicilar WHERE aktif = 1;
SELECT kullanici_adi, email FROM kullanicilar ORDER BY id DESC LIMIT 10;

-- Veri güncelle
UPDATE kullanicilar SET aktif = 0 WHERE email = '[email protected]';

-- Veri sil
DELETE FROM kullanicilar WHERE id = 5;

-- JOIN örneği
SELECT k.kullanici_adi, y.baslik
FROM kullanicilar k
INNER JOIN yazilar y ON k.id = y.kullanici_id;

Kullanıcı Yönetimi

-- Kullanıcı oluştur
CREATE USER 'webkullanici'@'localhost' IDENTIFIED BY 'guclu_sifre_2024!';

-- Uzaktan erişim için
CREATE USER 'webkullanici'@'192.168.1.%' IDENTIFIED BY 'guclu_sifre_2024!';

-- Kullanıcıları listele
SELECT User, Host FROM mysql.user;

-- Kullanıcı şifresi değiştir
ALTER USER 'webkullanici'@'localhost' IDENTIFIED BY 'yeni_sifre';

-- Kullanıcı sil
DROP USER 'eskikullanici'@'localhost';

Yetki Yönetimi

-- Tüm yetkiler ver
GRANT ALL PRIVILEGES ON sitem_db.* TO 'webkullanici'@'localhost';

-- Sadece okuma yetkisi
GRANT SELECT ON sitem_db.* TO 'raporkullanici'@'localhost';

-- Belirli tablo yetkileri
GRANT SELECT, INSERT, UPDATE ON sitem_db.kullanicilar TO 'webkullanici'@'localhost';

-- Yetkileri uygula
FLUSH PRIVILEGES;

-- Yetkileri görüntüle
SHOW GRANTS FOR 'webkullanici'@'localhost';

-- Yetkiyi kaldır
REVOKE INSERT ON sitem_db.* FROM 'webkullanici'@'localhost';

Yedekleme ve Geri Yükleme

# Tek veritabanı yedekle
mysqldump -u root -p sitem_db > sitem_db_backup.sql

# Tüm veritabanları yedekle
mysqldump -u root -p --all-databases > all_databases.sql

# Yedekten geri yükle
mysql -u root -p sitem_db < sitem_db_backup.sql

# Sıkıştırılmış yedek
mysqldump -u root -p sitem_db | gzip > sitem_db_$(date +%Y%m%d).sql.gz

# Otomatik yedekleme (cron)
# 0 2 * * * mysqldump -u root -p'sifre' sitem_db > /backups/sitem_$(date +%Y%m%d).sql

Performans İzleme

-- Aktif bağlantılar
SHOW PROCESSLIST;

-- Yavaş sorguları göster
SHOW VARIABLES LIKE 'slow_query_log';
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

-- Tablo istatistikleri
SHOW TABLE STATUS FROM sitem_db;

-- Index kullanımı
EXPLAIN SELECT * FROM kullanicilar WHERE email = '[email protected]';

my.cnf Temel Ayarları

# /etc/mysql/my.cnf
[mysqld]
# Bağlantı limiti
max_connections = 200

# Tampon boyutları (RAM'in %25-50'si)
innodb_buffer_pool_size = 1G

# Slow query log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# Karakter seti
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Büyükweb cPanel hosting paketlerinde phpMyAdmin ile MySQL veritabanlarınızı görsel olarak yönetebilirsiniz.

Authentication Plugin'leri — Modern MySQL

MySQL 8.0+ default authentication caching_sha2_password; eski uygulamalar genelde mysql_native_password bekler. PHP/Node.js bağlantı sorunları çoğunlukla bu uyumsuzluktan:

-- Mevcut auth plugin'leri kontrol
SELECT user, host, plugin FROM mysql.user;

-- PHP < 7.4 ve eski client kütüphaneleri için legacy
ALTER USER 'webuser'@'localhost'
  IDENTIFIED WITH mysql_native_password BY 'password';

-- Modern uygulamalar için (PHP 8.x, Node mysql2)
ALTER USER 'webuser'@'localhost'
  IDENTIFIED WITH caching_sha2_password BY 'password';

-- Unix socket authentication (root için ideal — şifresiz local)
ALTER USER 'root'@'localhost'
  IDENTIFIED WITH auth_socket;
# /etc/mysql/my.cnf — sunucu varsayılan
[mysqld]
default_authentication_plugin = caching_sha2_password   # MySQL 8
# veya MariaDB için
default-authentication-plugin = mysql_native_password
Plugin Güvenlik Uyumluluk Kullanım
caching_sha2_password en yüksek MySQL 8 client gerek Modern uygulama
mysql_native_password orta (SHA1) tüm clientler Eski uygulama / WP plugin
auth_socket (unix) çok yüksek sadece local socket DBA root erişim
pam plugin iyi LDAP/Kerberos Kurumsal SSO

Roles — MySQL 8.0+ ve MariaDB 10.0.5+

Tek tek kullanıcılara GRANT yapmak yerine role ile grup yönetimi:

-- Role oluştur
CREATE ROLE 'app_developer', 'app_readonly', 'app_admin';

-- Role'lere yetki ver
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_developer';
GRANT SELECT ON app_db.* TO 'app_readonly';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_admin';

-- Kullanıcı oluştur ve role'ü ata
CREATE USER 'ahmet'@'localhost' IDENTIFIED BY 'sifre';
GRANT 'app_developer' TO 'ahmet'@'localhost';

-- Default role'ü aktif et (login'de otomatik)
SET DEFAULT ROLE 'app_developer' TO 'ahmet'@'localhost';

-- Aktif role'ü görmek
SELECT CURRENT_ROLE();

-- Manuel role aktive (login sonrası)
SET ROLE 'app_developer';

-- Tüm role'leri kullanıcıdan kaldır
REVOKE 'app_developer' FROM 'ahmet'@'localhost';

-- Role sil (kullanıcılardan otomatik kaldırılır)
DROP ROLE 'app_admin';

Kurumsal pratiği: 10+ kullanıcı varsa role mecbur — tek satır yetki güncellemesi tüm grup'a yansır.

Detaylı Privilege Listesi

MySQL'de yaygın kullanılan ama anlamı belirsiz yetkiler:

Privilege Anlamı Tehlike
ALL PRIVILEGES tüm yetkiler yanlışlıkla = root
SUPER server stop, kill, replication yüksek
PROCESS tüm session'ları görme bilgi sızıntısı
RELOAD FLUSH komutları orta
SHUTDOWN sunucuyu kapatma yüksek
FILE sunucu dosya sistemi okuma YÜKSEK (asla verme)
CREATE USER kullanıcı yönetim yüksek
GRANT OPTION kendi yetkilerini başkalarına verme yüksek
REPLICATION CLIENT binary log durumu düşük
REPLICATION SLAVE binary log okuma (slave) orta
EVENT event scheduler orta
TRIGGER trigger yönetimi orta
LOCK TABLES tablo lock orta
SELECT, INSERT, UPDATE, DELETE DML düşük (per-table OK)

FILE yetkisi özellikle tehlikeli — SELECT INTO OUTFILE ile sunucu dosya sistemine yazabilir.

WordPress için İdeal Kullanıcı Yetkileri

WordPress sık olarak ALL PRIVILEGES ile kurulur — gereksiz yetkili. Minimal hardened set:

-- WordPress için minimal yetki
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'guclu_sifre_min_16char_!@#';
GRANT SELECT, INSERT, UPDATE, DELETE,
      CREATE, DROP, ALTER, INDEX,
      CREATE TEMPORARY TABLES,
      LOCK TABLES, EVENT, TRIGGER
ON wp_db.* TO 'wp_user'@'localhost';

-- Plugin update'leri için CREATE/DROP gerekli (auto-update)
-- Eğer auto-update kapalıysa CREATE/DROP/ALTER kaldırılabilir → daha güvenli

FLUSH PRIVILEGES;

Production öneri:

-- Auto-update kapalıyken
GRANT SELECT, INSERT, UPDATE, DELETE ON wp_db.* TO 'wp_user'@'localhost';

SUPER, FILE, PROCESS asla WordPress kullanıcısına verilmemeli.

Per-User Resource Limits

Çok kullanıcılı/multi-tenant ortamda bir kullanıcının diğerlerini etkilememesi için:

-- Saatlik query/connection limitleri
ALTER USER 'shared_user'@'%'
  WITH MAX_QUERIES_PER_HOUR 1000
       MAX_CONNECTIONS_PER_HOUR 100
       MAX_USER_CONNECTIONS 10
       MAX_UPDATES_PER_HOUR 500;

-- Listeyi gör
SELECT user, host, max_queries, max_connections, max_user_connections
FROM mysql.user;

-- Sıfırla (tüm sınırları kaldır)
ALTER USER 'shared_user'@'%'
  WITH MAX_QUERIES_PER_HOUR 0
       MAX_CONNECTIONS_PER_HOUR 0
       MAX_UPDATES_PER_HOUR 0;

Büyükweb cPanel hosting paketlerinde bu limitler CloudLinux ile node-level zorlanır; her hesap kendi resource quota'sına sahip → tek hesap diğerlerini yavaşlatamaz.

SSL/TLS — Şifreli Bağlantı Zorunlu

Production veritabanlarında şifresiz MySQL trafiği yasak:

# /etc/mysql/my.cnf
[mysqld]
require_secure_transport = ON
ssl-ca = /etc/mysql/ssl/ca.pem
ssl-cert = /etc/mysql/ssl/server-cert.pem
ssl-key = /etc/mysql/ssl/server-key.pem
-- Belirli kullanıcı için SSL zorla
ALTER USER 'app_user'@'%' REQUIRE SSL;

-- Daha sıkı: client cert şart
ALTER USER 'app_user'@'%' REQUIRE X509;

-- Çok sıkı: belirli cert subject + issuer
ALTER USER 'app_user'@'%' REQUIRE
  SUBJECT '/CN=app.example.com'
  AND ISSUER '/CN=Internal CA';

-- Test
SHOW STATUS LIKE 'Ssl_cipher';
-- Ssl_cipher boşsa SSL kapalı
# Self-signed cert kuruluş — production için Let's Encrypt
mysql_ssl_rsa_setup --datadir=/var/lib/mysql

# Client bağlantısı
mysql -u app_user -p \
  --ssl-ca=ca.pem \
  --ssl-cert=client-cert.pem \
  --ssl-key=client-key.pem \
  -h db.example.com

Audit Logging — KVKK / SOC2 Uyum

MySQL Enterprise ücretli; MariaDB Audit Plugin ücretsiz alternatif:

-- MariaDB
INSTALL PLUGIN server_audit SONAME 'server_audit';

SET GLOBAL server_audit_logging = ON;
SET GLOBAL server_audit_events = 'CONNECT,QUERY,TABLE';
SET GLOBAL server_audit_file_path = '/var/log/mysql/audit.log';
SET GLOBAL server_audit_file_rotate_size = 100000000;  -- 100 MB
SET GLOBAL server_audit_file_rotations = 9;

-- Belirli kullanıcılar exclude
SET GLOBAL server_audit_excl_users = 'monitoring,backup';
-- MySQL 8 (Percona Audit Plugin ücretsiz alternatif)
INSTALL PLUGIN audit_log SONAME 'audit_log.so';

SET GLOBAL audit_log_format = JSON;
SET GLOBAL audit_log_policy = ALL;

Pratik audit query:

# Belirli kullanıcının son aktivitesi
grep "user='app_user'" /var/log/mysql/audit.log | tail -100

# DDL (CREATE/DROP/ALTER) hareketleri
grep -E "(CREATE|DROP|ALTER) (TABLE|DATABASE|USER)" /var/log/mysql/audit.log

# Failed connection attempts
grep "FAILED_CONNECT" /var/log/mysql/audit.log

Encryption at Rest — Veri Disk Şifreleme

# /etc/mysql/my.cnf — InnoDB tablespace encryption (MySQL 5.7+, MariaDB 10.1+)
[mysqld]
plugin-load-add = file_key_management.so
file_key_management_filename = /etc/mysql/encryption/keyfile
file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key

innodb_encrypt_tables = ON
innodb_encrypt_log = ON
innodb_encryption_threads = 4
-- Tablo bazlı şifreleme
ALTER TABLE sensitive_data ENCRYPTION='Y';

-- Yeni tabloları otomatik şifrele
CREATE TABLE pii_data (...) ENCRYPTION='Y';

-- Şifreli tabloları listele
SELECT table_name, create_options
FROM information_schema.tables
WHERE create_options LIKE '%ENCRYPTION%';

KVKK kapsamında kişisel veri içeren tablolar için zorunlu sayılır.

Connection Origin — Host Patterns

'user'@'host' sözdizimindeki host pattern'i kritik:

Pattern Anlam Güvenlik
'user'@'localhost' sadece unix socket en güvenli
'user'@'127.0.0.1' sadece TCP loopback güvenli
'user'@'192.168.1.10' tek IP güvenli
'user'@'192.168.1.%' iç ağ subnet makul
'user'@'10.%.%.%' tüm 10.x.x.x dikkat
'user'@'%' her yerden TEHLİKELİ
'user'@'%.example.com' reverse DNS güvenilmez (DNS spoofing)
-- BAD: Wildcard host
CREATE USER 'admin'@'%' IDENTIFIED BY 'pass';

-- GOOD: Belirli host
CREATE USER 'admin'@'10.0.0.5' IDENTIFIED BY 'pass';

-- Birden fazla iznin gerek halinde, her biri ayrı kullanıcı
CREATE USER 'admin'@'10.0.0.5' IDENTIFIED BY 'pass';
CREATE USER 'admin'@'10.0.0.6' IDENTIFIED BY 'pass';

% host pattern'i genelde Galera Cluster + ProxySQL gibi setup'lar haricinde gereksiz.

Backup için Özel Kullanıcı

-- mysqldump için minimum yetki
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'backup_pass';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER, RELOAD ON *.* TO 'backup'@'localhost';

-- Mariabackup için
CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY 'pass';
GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR ON *.* TO 'mariabackup'@'localhost';

-- Replication slave kullanıcısı
CREATE USER 'repl'@'10.0.0.%' IDENTIFIED BY 'repl_pass';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'10.0.0.%';

Backup kullanıcısı asla uygulama tarafından kullanılmaz; sadece script + cron.

Şifre Güvenliği — validate_password Plugin

# /etc/mysql/my.cnf
[mysqld]
plugin-load-add = validate_password.so
validate_password_policy = STRONG          # LOW / MEDIUM / STRONG
validate_password_length = 14
validate_password_mixed_case_count = 2
validate_password_number_count = 2
validate_password_special_char_count = 2
validate_password_dictionary_file = /etc/mysql/common-passwords.txt
-- Test
SELECT VALIDATE_PASSWORD_STRENGTH('123456');         -- 0 = zayıf
SELECT VALIDATE_PASSWORD_STRENGTH('Strong!P@ss123'); -- 100 = mükemmel

-- Şifre süresi (90 gün geçerli)
ALTER USER 'app_user'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;

-- Hesabı geçici kilitle
ALTER USER 'app_user'@'%' ACCOUNT LOCK;

-- Aç
ALTER USER 'app_user'@'%' ACCOUNT UNLOCK;

Common Security Mistakes

'app'@'%' ile tüm yerden erişim
'app'@'10.0.0.5' belirli IP

Şifresiz uzaktan root
PermitRootLogin localhost only + auth_socket

GRANT ALL PRIVILEGES her şeye
✅ Belirli database + minimal privilege

Şifre .bash_history'de kaldı
mysql_config_editor set --login-path=local --user=app --password

Eski mysql.user MD5 hash'leri
UPGRADE to caching_sha2_password

Production'da phpMyAdmin public erişim
✅ HTTP Basic Auth + IP whitelist + path obfuscation

Audit log yok
✅ MariaDB Audit Plugin + retention 6-12 ay

phpMyAdmin Alternatifleri

Tool Tip Notlar
phpMyAdmin web en yaygın; saldırı hedefi → güvenlik dikkat
Adminer web (tek dosya) hafif, modern UI
DBeaver desktop cross-DB, ücretsiz, JDBC
TablePlus desktop (Mac/Win) hızlı, modern, native
HeidiSQL desktop (Win) klasik, güçlü
MySQL Workbench desktop resmi, ER modeling
DataGrip desktop JetBrains, ücretli ama mükemmel
Sequel Ace desktop (Mac) open source, hafif

Production öneri: Web tabanlı tool'lar internal network only + VPN arkasında. Public phpMyAdmin = saldırı yüzeyi.

Sıkça Sorulan Sorular

Yetki değişikliği anında etkili mi?

GRANT ve REVOKE immediately etkili. Eski MySQL 5.x'te FLUSH PRIVILEGES gerekti, modern sürümlerde otomatik. Ancak mevcut session'ı etkilemez — kullanıcı reconnect olduğunda yeni yetkilere göre çalışır.

"MySQL Access denied for user" — debug nasıl?

-- 1. Kullanıcı var mı?
SELECT user, host FROM mysql.user WHERE user = 'app_user';

-- 2. Doğru host'tan mı bağlanıyor?
SELECT @@hostname, @@socket;
SHOW PROCESSLIST;

-- 3. Yetkiler kontrol
SHOW GRANTS FOR 'app_user'@'%';

-- 4. Auth plugin uyumlu mu?
SELECT user, plugin FROM mysql.user WHERE user = 'app_user';

"WordPress kuruluyor ama bağlanamıyor" tipik sebep?

  1. MySQL 8.0 default caching_sha2_password; PHP < 7.4 desteklemez → mysql_native_password'e geç
  2. 'wp_user'@'localhost' yerine 'wp_user'@'127.0.0.1' (TCP vs socket)
  3. bind-address = 127.0.0.1 ama PHP başka host'tan bağlanıyor
  4. Firewall port 3306 kapalı

MySQL ile MariaDB değiştirilebilir mi (drop-in replacement)?

Çoğunlukla evet — MariaDB MySQL'in fork'u, syntax + protokol uyumlu. Ancak MySQL 8.x özellikleri (window function bazı edge case'leri, JSON gelişmeleri) MariaDB'de farklı veya yok. WordPress, Joomla, Drupal her ikisinde de sorunsuz. Custom uygulamalarda test gerekli.

SUPER privilege'ini ne zaman vermeliyim?

Asla bir uygulama kullanıcısına. Sadece DBA/admin'e. SUPER = read_only bypass, kill any session, replication master config, audit log silme. Compromise = catastrophic.

Replikasyon kurulurken hangi yetki minimum?

-- Slave host'tan master'a bağlanan replication user
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'slave_ip';

SLAVE master binary log okuma; CLIENT slave durumu sorgulama.

"Too many connections" hatası — ne yapmalı?

-- Mevcut bağlantı sayısı
SHOW STATUS LIKE 'Threads_connected';

-- Limit
SHOW VARIABLES LIKE 'max_connections';

-- Geçici artır
SET GLOBAL max_connections = 500;

-- Kalıcı (my.cnf)
max_connections = 500

Çoğu durumda asıl çözüm connection pooling (ProxySQL/Sequelize pool) veya idle connection cleanup.

Multi-tenant SaaS'ta her tenant için ayrı kullanıcı mı?

Schema-per-tenant mimarisinde evet — tenant1_user sadece tenant1_db'ye yetkili, izolasyon güçlü. Shared schema (row-level) mimarisinde tek app user, kod seviyesinde tenant_id filter. Schema-per-tenant DB sayısını şişirir (her tenant ~10 MB minimum); shared schema daha verimli ama erişim hatası tüm tenant'ı sızdırır.

Audit log fazla disk yer kaplıyor — ne yapayım?

server_audit_events ile sadece kritik event'leri logla — CONNECT,DDL (DML değil). Logrotate ile günlük rotation + 30 gün retention + S3 archive. server_audit_excl_users = 'monitoring' ile gürültü filtrele.

Kullanıcı şifresini sızdı — hızlı yenile?

-- 1. Hemen lock
ALTER USER 'compromised'@'%' ACCOUNT LOCK;

-- 2. Şifre sıfırla
ALTER USER 'compromised'@'%' IDENTIFIED BY 'yeni_guclu_sifre';

-- 3. Aktif session'ları kill
SELECT id FROM information_schema.processlist WHERE user = 'compromised';
KILL <id>;

-- 4. Audit log incele — son 24 saat ne yapmış?
grep "user='compromised'" /var/log/mysql/audit.log | tail -1000

-- 5. Aç
ALTER USER 'compromised'@'%' ACCOUNT UNLOCK;

Büyükweb'de MySQL/MariaDB

Büyükweb cPanel hosting paketlerinde MySQL 8 / MariaDB 10.6+ + phpMyAdmin + Remote MySQL ayarları:

  • cPanel > Veritabanları > MySQL Veritabanları → DB ve kullanıcı oluşturma
  • cPanel > Remote MySQL → IP whitelist ile uzaktan erişim
  • CloudLinux + LVE limit ile per-user resource quota

VDS sunucu ve fiziksel dedicated paketlerinde root + tam kontrol — yukarıdaki tüm güvenlik katmanları (encryption at rest, audit plugin, SSL connection, Galera Cluster, Master-Slave) self-managed.

Plesk hosting paketlerinde MariaDB default + Plesk UI ile DB/user yönetim.

Yapılandırma desteği için 0850 302 60 70.

İlgili Rehberler

İlgili Büyükweb Hizmetleri

Veritabanı performansı ve güvenilirliği için Türkiye lokasyonlu sunucu paketlerimiz:

Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.

Veritabanı Yönetimi İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#mysql#mariadb#kullanıcı yönetimi#veritabanı#database#veri yönetimi

Bu yazıyı paylaş