MSSQL Server 2022'de Veritabanlarını, Kullanıcıları ve İzinleri Yönetin


Yaygın olarak MSSQL Server olarak bilinen Microsoft SQL Server, Microsoft Corporation tarafından geliştirilen ilişkisel bir veritabanı yönetim sistemidir (RDBMS). Büyük miktarlarda veriyi depolamak ve yönetmek için kullanılır ve web tabanlı, istemci/sunucu ve bağımsız uygulamalar dahil olmak üzere çeşitli uygulamalarda kullanılabilir.

MS SQL Server kurumsal sektörlerde kullanım alanı bulur; buna finansal hizmetler, e-ticaret ve sağlık hizmetleri de dahildir. Bunun temel nedeni, çok sayıda eşzamanlı kullanıcıyı yönetebilmesi ve hassas verileri depolamak ve yönetmek için güvenli ve güvenilir bir platform sağlamasıdır. MSSQL ayrıca .NET, Java, Node.js vb. gibi çok sayıda programlama dilini ve platformunu da destekler. Bu, onu çok çeşitli uygulamalarda kullanılabilecek çok yönlü bir veritabanı platformu haline getirir.

MSSQL aşağıdakileri içeren bir dizi özellik sunar:

  • Ölçeklenebilirlik: Büyük miktarlarda veriyi işleyebilir ve giderek artan sayıda kullanıcıya ve uygulamaya uyum sağlayacak şekilde ölçeklenebilir.
  • Güvenlik: Verileri korumak ve düzenlemelere uygunluğu sağlamak için şifreleme, erişim kontrolü ve denetim gibi güçlü güvenlik özellikleri sağlar.
  • Yüksek kullanılabilirlik: Yüksek kullanılabilirlik sağlamak ve kesinti süresini en aza indirmek için kümeleme ve çoğaltma gibi özellikler içerir.
  • Entegrasyon: MSSQL, .NET, Java ve Node.js dahil olmak üzere çeşitli programlama dilleri ve platformlarıyla entegre olarak uygulamaların geliştirilmesini ve dağıtılmasını kolaylaştırır.
  • İş zekası: Ayrıca veri madenciliği, veri ambarı ve OLAP (Çevrimiçi Analitik İşleme) gibi kullanıcıların büyük miktarda veriden öngörü elde etmesine olanak tanıyan gelişmiş analiz ve raporlama özelliklerini de içerir.
  • Performans: Hızlı ve verimli veri alımı ve işlenmesini sağlamak için sorgu optimizasyonu ve dizine ekleme gibi özellikler sağlar.
  • Bulut yetenekleri: MSSQL, hibrit bulut senaryoları desteğiyle şirket içinde veya bulutta dağıtılabilir.

MS SQL Server 2022'de Veritabanlarını, Kullanıcıları ve İzinleri nasıl yöneteceğimizi derinlemesine incelerken bu kılavuzda bana katılın.

Başlarken

Bu konunun özüne dalmadan önce sisteminizde MSSQL Server 2022'nin kurulu olması gerekmektedir. Bu, ortamınıza bağlı olarak çeşitli şekillerde yapılabilir. Aşağıda MSSQL sunucusu 2022'yi kurmanıza yardımcı olacak özel kılavuzlardan bazıları bulunmaktadır.

  • Microsoft SQL Server 2022'yi Docker/Podman Container'da çalıştırın
  • Microsoft SQL Server 2022'yi Rocky Linux 8/AlmaLinux 8'e yükleyin
  • Microsoft SQL Server 2022'yi Ubuntu 20.04'e Yükleme

Kurulduktan sonra aşağıda gösterildiği gibi devam edin

1. SQL Server komut satırı araçlarını yükleyin

MS SQL Server 2022'deki veritabanlarını yönetmek için SQL Server Management Studio (SSMS), Azure Data Studio ve komut satırı araçları dahil olmak üzere çeşitli araçları kullanabilirsiniz.

Bu kılavuz için MSSQL Server 2022 veritabanlarını komut satırını kullanarak nasıl yöneteceğimizi öğreneceğiz. SQL Server komut satırı araçlarını yükleyeceğiz: sqlcmd ve bcp.

Sisteminize bağlı olarak repository’yi ekleyin ve aşağıdaki komutları kullanarak sqlcmd ve bcp kurulumunu yapın.

  • Debian/Ubuntu

Depoyu sisteme ekleyerek başlayın.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list

Eklendikten sonra sisteminizi güncelleyin ve sqlcmd ile bcp'yi yükleyin:

sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev

Şimdi PATH ortamını dışa aktarın:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
  • Rocky Linux/Alma Linux/CentOS/RedHat'ta

Depoyu şu komutla ekleyin:

curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/msprod.repo

Eklendikten sonra sqlcmd ve bcp paketlerini yükleyin:

sudo yum remove mssql-tools unixODBC-utf16-devel
sudo yum install mssql-tools unixODBC-devel

Şimdi PATH ortamını dışa aktarın

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
  • SLES'te

SUSE Linux'a mssql araçlarını kurmak da mümkündür. Depoyu ekleyerek başlayın:

sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/prod.repo
sudo zypper --gpg-auto-import-keys refresh

Eklendikten sonra mssql araçlarını şu komutla yükleyin:

sudo zypper install mssql-tools unixODBC-devel

Ortamı dışa aktarın:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
  • MacOS/OS-X'te

HomeBrew'u kullanarak MacOS/OS-X'e sqlcmd ve bcp'yi yükleyebilirsiniz. Repo'yu şu komutla ekleyin:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release

Daha sonra mssql-tools'u şu komutla yükleyin:

brew update
brew install mssql-tools

2. MSSQL Server 2022'de Veritabanlarını Yönetin

Artık MSSQL Server 2022'yi yönetmek için Transact-SQL dil ifadelerini kullanabiliriz. Öncelikle aşağıdaki sözdizimine sahip komutu kullanarak veritabanına erişin:

sqlcmd -S IP_ADDRESS -U sa -P '<YourPassword>'

Komutta birkaç bayrak vardır:

  • -S : SQL Server adını/IP Adresini belirtir
  • -U : Kullanıcı adını ayarlar
  • -P: Kullanıcı şifresini sağlar

MSSQL'deki varsayılan kullanıcı SA'dır ve şifre kurulum sırasında sağlanmıştır. Aşağıda örnek bir yürütme verilmiştir.

MSSQL Server 2022'ye bağlandıktan sonra artık veritabanlarını yönetebilirsiniz.

A. MSSQL'de Veritabanı Oluşturma

MSSQL Server 2022'de veritabanı oluşturmak için aşağıdaki sözdizimine sahip bir komut kullanın:

CREATE DATABASE [database_name];

Örneğin:

CREATE DATABASE sampledb;
GO

Veritabanı oluşturulduktan sonra şu komutla veritabanlarını listeleyebilirsiniz:

SELECT Name from sys.databases;
GO

Örnek çıktı:

MSSQL'de Tablolar Oluşturun

Artık yukarıdaki veritabanına tablolar ekleyebiliriz. Bu demo için my_table adında basit bir tablo ekleyeceğim:

USE sampledb;
CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT );
GO

Tabloya veri eklemek için:

INSERT INTO my_table (id, name, age)
VALUES (1, 'John', 25)
GO

Tablodaki verileri görüntülemek için:

SELECT id, name, age FROM my_table
GO

Örnek Çıktı:

MSSQL'de Veritabanı|Tablo Silme

Ayrıca MSSQL'deki bir veritabanını veya tabloyu da silebilirsiniz. Bir tabloyu silmek için aşağıdaki sözdizimine sahip komutu kullanın:

DROP TABLE [table_name]
GO

Örneğin;

DROP TABLE my_table;
GO

Bir veritabanını silmek için aşağıdaki sözdizimine sahip komutu kullanın:

DROP DATABASE [database_name]
GO

Örneğin:

DROP DATABASE sampledb;
GO

3. MSSQL Server 2022'de Kullanıcıları ve İzinleri Yönetin

Varsayılan olarak MSSQL, “sa” kullanıcı adına sahip yönetici kullanıcı olan bir kullanıcıyla birlikte gelir. Ancak başka kullanıcılar oluşturmak ve onlara çeşitli veritabanlarına erişim izni vermek mümkündür.

MSSQL'de kullanıcı yönetimi birkaç kavram vardır:

  • Giriş: MSSQL sunucusu örneğine bağlanmak için oturum açmanız gerekir. Kullanıcının kimliğini doğrulamak ve veritabanı motoruna erişim izni vermek için kullanılır. Oturum açma işlemi, SQL Server Management Studio (SSMS) kullanılarak veya CREATE LOGIN T-SQL komutu kullanılarak oluşturulabilir.
  • Kullanıcı: Kullanıcı, belirli bir veritabanıyla ilişkili bir güvenlik sorumlusudur. Veritabanındaki verilere erişim ve değişiklik yapma izinlerini vermek için kullanılır. Bir kullanıcı SSMS kullanılarak veya T-SQL CREATE USER komutu kullanılarak oluşturulabilir.
  • Kapsam: Oturum açma, ana veritabanında bulunan ve sunucudaki herhangi bir veritabanına bağlanmak için kullanılabilen, sunucu düzeyinde bir nesnedir. Öte yandan kullanıcı, belirli bir veritabanı bağlamında var olan veritabanı düzeyinde bir nesnedir.
  • Kimlik Doğrulama: Bir oturum açma işlemi, Windows Kimlik Doğrulaması veya SQL Server Kimlik Doğrulaması kullanılarak MSSQL sunucusu tarafından doğrulanır. Buna karşılık, bir kullanıcının kimliği, oturum açma kimlik bilgileri kullanılarak veritabanı motoru tarafından doğrulanır.
  • İzinler: Oturum açma işlemlerine sunucu düzeyinde izinler verilirken, kullanıcılara veritabanı düzeyinde izinler verilir. Bu, oturum açma bilgilerinin sunucudaki herhangi bir veritabanına erişebileceği, ancak kullanıcının yalnızca ilişkili olduğu belirli veritabanına erişebileceği anlamına gelir.

A. MSSQL'de Oturum Açma Kullanıcısı Oluşturma

Daha önce açıklandığı gibi, oturum açan kullanıcı, veritabanı sunucusuna bağlanan bir kullanıcının veya uygulamanın kimliğini doğrulamak için kullanılır.

Oturum açma kullanıcısı oluşturmak için komutu aşağıdaki sözdizimiyle kullanın:

CREATE LOGIN login_name WITH PASSWORD = 'password';
GO

Örneğin;

CREATE LOGIN testuser WITH PASSWORD = 'Passw0rd!';
GO

Oluşturulduktan sonra MSSQL veritabanı sunucusunda oturum açmak için bunu kullanabilirsiniz:

sqlcmd -S 127.0.0.1 -U testuser 

Örnek Çıktı:

Varsayılan olarak, oturum açma işleminin herhangi bir veritabanına veya veritabanı nesnesine erişim izni yoktur. Ancak, oturum açma işlemi veritabanı sunucusuna bağlanma yeteneğine sahiptir ve veritabanları oluşturma veya sunucu ayarlarını yönetme gibi yönetim görevlerini gerçekleştirmek için sunucu düzeyinde izinler verilebilir. İzinleri atamak için devam edin ve bir kullanıcıyı etiketleyin.

Bir girişi silmek için şunu kullanın:

DROP LOGIN [username]
GO

Oturum açma parolasını değiştirmek için şunu kullanın:

ALTER LOGIN [login_name] WITH PASSWORD = 'new_password';
GO

[login_name] yerine parolasını değiştirmek istediğiniz oturum açma adını yazın ve 'new_password' yerine yapılandırmak istediğiniz yeni parolayı yazın.

B. MSSQL'de Kullanıcı Oluşturma

Bir oturum açma işlemi oluşturulduktan sonra, söz konusu kullanıcıya belirli veritabanlarına ve veritabanı nesnelerine erişim izni verilmesi için oturum açma işleminin bir veritabanı kullanıcısıyla ilişkilendirilmesi gerekir. Bu ilişkilendirme olmadan, oturum açma bilgileri hiçbir veri tabanına erişemeyecektir. Bir kullanıcı, oturum açma işlemine belirli veritabanlarına ve veritabanı nesnelerine erişim izni vermek için kullanılır.

Şimdi yönetici kullanıcı olarak giriş yapın ve daha önce oluşturulan giriş bilgilerine bir kullanıcı ekleyin. Komutun sözdizimi şöyledir:

CREATE USER user_name FOR LOGIN login_name;

Örneğin:

CREATE USER my_user FOR LOGIN testuser;
GO

Bir kullanıcıyı silmek için komutu sözdizimiyle birlikte kullanın:

DROP USER [username]
GO

Şifreyi değiştirmek için;

ALTER USER [userName] WITH PASSWORD = 'New Password'
GO

Mevcut kullanıcıları komutla görüntüleyin;

SELECT * FROM sys.database_principals WHERE Type = 'S'
GO

C. MSSQL'de Oturum Açma|Kullanıcıya İzin Verme

MSSQL'de izinleri ve çeşitli kaynaklara erişimi yönetmek için kullanılan çeşitli yerleşik kullanıcı rolleri vardır. Bu roller, kullanıcılara ve gruplara izin verme sürecini basitleştirmek için tasarlanmıştır. MSSQL'de yaygın olarak kullanılan kullanıcı rollerinden bazıları şunlardır:

Girişler, "sysadmin", "securityadmin", "dbcreator gibi sunucu düzeyinde izinlere ve rollere sahip olabilir. " ve "processadmin ", kullanıcılar ise veritabanı düzeyinde izinlere sahiptir. Bir kullanıcıya tablolar, görünümler, saklı prosedürler ve işlevler gibi veritabanı nesnelerine erişim izni verilebilir. Kullanıcılara "db_owner", "db_datareader", "db_datawriter" ve "db_ddladmin" gibi veritabanı düzeyinde roller atanabilir “

  1. Girişler İçin: (Bu izinleri vermek için ana veritabanını kullanın)

    • SysAdmin: Bu rolün MSSQL örneğine tam yönetim erişimi vardır ve sunucuda herhangi bir eylemi gerçekleştirebilir.
    • DbCreator: Bu rol veritabanlarını oluşturabilir, değiştirebilir ve bırakabilir.
    • SecurityAdmin: Bu rol, kullanıcıların oturum açma bilgilerini, kullanıcıları ve rolleri yönetmesine olanak tanır.
    • BackupOperator: Bu rol, kullanıcıların bir veritabanını yedeklemesine ve geri yüklemesine olanak tanır.
    • BulkAdmin: Bu rol, kullanıcıların toplu içe ve dışa aktarma işlemlerini yürütmesine olanak tanır.
    • DDLAdmin: Bu rol, kullanıcıların tablolar, görünümler ve saklı prosedürler gibi veritabanı nesnelerini oluşturmasına, değiştirmesine ve bırakmasına olanak tanır.
  2. Kullanıcılar için:

    • DbOwner: Bu rolün belirli bir veritabanına tam yönetim erişimi vardır ve bu veritabanı üzerinde herhangi bir eylemi gerçekleştirebilir.
    • DataReader: Bu rol, kullanıcıların bir veritabanındaki tüm kullanıcı tablolarındaki tüm verileri okumasına olanak tanır.
    • DataWriter: Bu rol, kullanıcıların bir veritabanındaki tüm kullanıcı tablolarına veri eklemesine, güncellemesine ve silmesine olanak tanır.

İzinleri verebilmek için oluşturulan kullanıcıya|Giriş'e ayrıcalıklar eklenebilir, önce MSSQL sunucusuna yönetici kullanıcı olarak bağlanın;

sqlcmd -S 127.0.0.1 -U sa

İzinleri vermek için sp_addrolemember komutunu kullanabiliriz. Kullanıcı için yukarıdaki rollerden herhangi birini ekleyebilirsiniz.

  • Veritabanı yazar rolü verme:
USE [database_name]
GO
EXEC sp_addrolemember 'db_datawriter', 'username'
GO
  • Veritabanı okuyucu rolü verme:
USE [database_name]
GO
EXEC sp_addrolemember 'db_datareader', 'username'
GO
  • DBcreator rolünü verme:
USE master
GO
EXEC sp_addsrvrolemember 'dbcreator',  'loginname';
GO
  • Sistem yöneticisi rolünün verilmesi:
USE master
GO
EXEC sp_addsrvrolemember 'sysadmin', 'loginname'
GO

Yukarıdaki komutların çalışması için, veritabanı_adı'nı veritabanının gerçek adıyla ve kullanıcı adı'nı, kullandığınız gerçek giriş adıyla değiştirmeniz gerekir. rolü vermek istiyorum.

İşe yarayıp yaramadığını göstermek için kullanıcıya DBCreator rolünü ekleyebiliriz:

USE sampledb
CREATE USER  my_user FOR LOGIN testuser;
GO
EXEC sp_addrolemember 'db_datareader', 'my_user';
GO

Kullanıcı için eklenen rolleri görüntüleyin;

1> EXEC sp_helpuser 'my_user';
2> GO
UserName       RoleName     LoginName        DefDBName    DefSchemaName UserID     SID                                                                                                                                                                         
-------------- ------------ ---------------- ------------ ------------- ---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
my_user        public       testuser         master       dbo           7          0x138EB720C61D394F96CBD43E42A800E9                                                                                                                                          
1> 

Eklendikten sonra, bir veritabanı oluşturup silip silemeyeceğimizi test edeceğiz:

D. MSSQL'de Oturum Açma\Kullanıcı İzinlerini İptal Etme

Kullanıcıların izinlerini iptal etmek için aşağıdaki sözdizimine sahip bir komut kullanın:

REVOKE [role] FROM [user_name];
GO

Örneğin:

REVOKE db_datawriter FROM [user_name];
GO

Giriş izinlerini iptal etmek için şunu kullanın:

ALTER SERVER ROLE [role] DROP MEMBER [login];

Örneğin:

ALTER SERVER ROLE dbcreator DROP MEMBER testuser;

Karar

Bu, MS SQL Server 2022'de Veritabanlarının, Kullanıcıların ve İzinlerin nasıl yönetileceğine ilişkin bu kılavuzun sonunu işaret ediyor. Umarım bu bilgilendirici olmuştur.

Bu sayfada daha fazlasını görün:

Warpgate Kullanarak SSH ve MySQL Bastion Sunucusu Nasıl Kurulur

Azure Data Studio'yu Rocky Linux 8|AlmaLinux 8'e yükleyin

Microsoft SQL Server 2022'yi Docker/Podman Container'da çalıştırın

İlgili makaleler