Linux

MySQL’i Ubuntu 22.04’e Nasıl Kurulur

Adım 1 — MySQL’i Yükleme

Ubuntu 22.04’te MySQL’i APT paket deposunu kullanarak kurabilirsiniz. Bu yazının yazıldığı sırada, varsayılan Ubuntu deposunda bulunan MySQL sürümü 8.0.28 sürümüdür.

Yüklemek için, yakın zamanda yapmadıysanız sunucunuzdaki paket dizinini güncelleyin:

sudo apt update

Ardından mysql-server paketi kurun:

sudo apt install mysql-server

systemctl start Sunucunun şu komutu kullanarak çalıştığından emin olun :

sudo systemctl start mysql.service

Bu komutlar MySQL’i kuracak ve başlatacak, ancak sizden bir parola belirlemenizi veya başka herhangi bir yapılandırma değişikliği yapmanızı istemeyecektir. Bu, MySQL kurulumunuzu güvensiz bıraktığından, bundan sonra buna değineceğiz.

Adım 2 — MySQL’i Yapılandırma

MySQL’in yeni kurulumları için, veritabanı yönetim sisteminin içerdiği güvenlik komut dosyasını çalıştırmak isteyeceksiniz. Bu komut dosyası, uzak root oturum açmalarına izin vermemek ve örnek kullanıcıları kaldırmak gibi şeyler için daha az güvenli varsayılan seçeneklerden bazılarını değiştirir .

Uyarı mysql_secure_installation : Temmuz 2022’den itibaren, komut dosyasını başka bir yapılandırma yapmadan çalıştırdığınızda bir hata oluşacaktır . Bunun nedeni, bu betiğin kurulumun root MySQL hesabı için bir parola belirlemeye çalışmasıdır, ancak Ubuntu kurulumlarında varsayılan olarak bu hesap bir parola kullanarak bağlanacak şekilde yapılandırılmamıştır.

Temmuz 2022’den önce, bu komut dosyası, root hesap parolasını belirlemeye ve istemlerin geri kalanına devam etmeye çalıştıktan sonra sessizce başarısız oluyordu. Ancak, bu yazıdan itibaren, bir şifre girip onayladıktan sonra komut dosyası aşağıdaki hatayı döndürecektir:

Output ... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

New password:

Bu, komut dosyasını, yalnızca terminal pencerenizi kapatarak çıkabileceğiniz özyinelemeli bir döngüye yönlendirecektir.

Komut dosyası , mysql_secure_installation MySQL kurulumunuzu güvende tutmak için yararlı olan bir dizi başka eylemi gerçekleştirdiğinden, verilerinizi yönetmek için MySQL’i kullanmaya başlamadan önce yine de çalıştırmanız önerilir. Yine de bu özyinelemeli döngüye girmekten kaçınmak için, önce root MySQL kullanıcınızın kimlik doğrulamasını ayarlamanız gerekir.

İlk önce MySQL istemini açın:

sudo mysql

Ardından, root kullanıcının kimlik doğrulama yöntemini parola kullanan bir yöntemle değiştirmek için aşağıdaki ALTER USER komutu çalıştırın. Aşağıdaki örnek, kimlik doğrulama yöntemini şu şekilde değiştirir : mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Bu değişikliği yaptıktan sonra MySQL isteminden çıkın:

exit

Bunu takiben, mysql_secure_installation betiği sorunsuz bir şekilde çalıştırabilirsiniz.

Güvenlik komut dosyası tamamlandıktan sonra MySQL’i yeniden açabilir ve root kullanıcının kimlik doğrulama yöntemini varsayılana, auth_socketBir parola kullanarak root MySQL kullanıcısı olarak kimlik doğrulaması yapmak için şu komutu çalıştırın:

mysql -u root -p

Ardından, bu komutu kullanarak varsayılan kimlik doğrulama yöntemini kullanmaya geri dönün:

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

Bu, komutu kullanarak bir kez daha root kullanıcınız olarak MySQL’e bağlanabileceğiniz anlamına gelir .sudo mysql

Güvenlik komut dosyasını şununla çalıştırın sudo:

sudo mysql_secure_installation

Bu sizi MySQL kurulumunuzun güvenlik seçeneklerinde bazı değişiklikler yapabileceğiniz bir dizi istemden geçirecektir. İlk istem, yeni MySQL kullanıcılarının geçerli sayılmadan önce parola gücünü test etmek için kullanılabilecek Parola Doğrulama Eklentisini kurmak isteyip istemediğinizi soracaktır.

Parola Doğrulama Eklentisini kurmayı seçerseniz, oluşturduğunuz ve parola ile kimlik doğrulaması yapan herhangi bir MySQL kullanıcısının, seçtiğiniz politikayı karşılayan bir parolaya sahip olması gerekir:

OutputSecuring the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
 2

Validate Password Plugin’i kurmayı seçip seçmediğinizden bağımsız olarak, sonraki istem MySQL root kullanıcısı için bir şifre belirlemek olacaktır. Seçtiğiniz güvenli bir şifreyi girin ve onaylayın:

OutputPlease set the password for root here.
New password:
Re-enter new password:

root MySQL kullanıcısı için bir parola ayarlamış olsanız bile , bu kullanıcının şu anda MySQL kabuğuna bağlanırken bir parola ile kimlik doğrulaması yapacak şekilde yapılandırılmadığını unutmayın.

Parola Doğrulama Eklentisini kullandıysanız, yeni parolanızın gücü hakkında geri bildirim alırsınız. Ardından komut dosyası, yeni girdiğiniz şifre ile devam etmek mi yoksa yeni bir şifre girmek mi istediğinizi soracaktır. Az önce girdiğiniz parolanın gücünden memnun olduğunuzu varsayarak Y, komut dosyasına devam etmek için girin:

OutputEstimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Oradan , sonraki tüm sorular için varsayılanları kabul etmek için Yve ardından tuşlarına basabilirsiniz. ENTER Bu, bazı anonim kullanıcıları ve test veritabanını kaldıracak, uzak kök oturum açmalarını devre dışı bırakacak ve MySQL’in yaptığınız değişikliklere hemen uyması için bu yeni kuralları yükleyecektir.

Komut dosyası tamamlandığında, MySQL kurulumunuz güvence altına alınacaktır. Artık MySQL istemcisi ile özel bir veritabanı kullanıcısı oluşturmaya geçebilirsiniz.

Adım 3 — Özel Bir MySQL Kullanıcısı Oluşturma ve Ayrıcalıklar Verme

Kurulumun ardından MySQL, veritabanınızı yönetmek için kullanabileceğiniz bir root kullanıcı hesabı oluşturur. Bu kullanıcının MySQL sunucusu üzerinde tam ayrıcalıkları vardır, yani her veritabanı, tablo, kullanıcı vb. üzerinde tam kontrole sahiptir. Bu nedenle, bu hesabı yönetim işlevleri dışında kullanmaktan kaçınmak en iyisidir. Bu adım, yeni bir kullanıcı hesabı oluşturmak ve ona ayrıcalıklar vermek için root MySQL kullanıcısının nasıl kullanılacağını özetlemektedir.

MySQL 5.7 (ve sonraki sürümleri) çalıştıran Ubuntu sistemlerinde, root auth_socket MySQL kullanıcısı, bir parola yerine varsayılan olarak eklentiyi kullanarak kimlik doğrulaması yapacak şekilde ayarlanmıştır . Bu eklenti, MySQL istemcisini çağıran işletim sistemi kullanıcısının adının, komutta belirtilen MySQL kullanıcısının adıyla eşleşmesini gerektirir, bu nedenle, root MySQL kullanıcısına erişmek için ayrıcalıklarla mysqlçağırmanız gerekir :sudo

sudo mysql

Not: MySQL’i başka bir öğretici ile yüklediyseniz ve root için parola doğrulamasını etkinleştirdiyseniz , MySQL kabuğuna erişmek için farklı bir komut kullanmanız gerekir. Aşağıdakiler MySQL istemcinizi normal kullanıcı ayrıcalıklarıyla çalıştıracak ve yalnızca kimlik doğrulaması yaparak veritabanı içinde yönetici ayrıcalıkları kazanacaksınız:

mysql -u root -p

CREATE USERMySQL istemine eriştiğinizde, bir ifadeyle yeni bir kullanıcı oluşturabilirsiniz . Bunlar şu genel sözdizimini takip eder:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

‘ den sonra CREATE USER bir kullanıcı adı belirlersiniz. Bunu hemen bir @ işaret ve ardından bu kullanıcının bağlanacağı ana bilgisayar adı izler. Bu kullanıcıya yalnızca yerel olarak Ubuntu sunucunuzdan erişmeyi planlıyorsanız, localhost. Hem kullanıcı adını hem de ana bilgisayarı tek tırnak içine almak her zaman gerekli değildir, ancak bunu yapmak hataları önlemeye yardımcı olabilir.

Kullanıcınızın kimlik doğrulama eklentisini seçme konusunda birkaç seçeneğiniz vardır. Daha auth_socket önce bahsedilen eklenti, geçerli kullanıcıların veritabanına erişmek için bir parola girmesini gerektirmeden güçlü güvenlik sağladığı için kullanışlı olabilir. Ancak, harici programların MySQL ile etkileşime girmesi gerektiğinde işleri karmaşıklaştırabilecek uzak bağlantıları da önler.

Alternatif olarak, kullanıcının MySQL’in varsayılan eklentisi olan . MySQL belgeleri , güçlü güvenlik özellikleri nedeniyle bir şifre ile giriş yapmak isteyen kullanıcılar için bu eklentiyi önerir. WITH authentication_plugincaching_sha2_password

ile kimlik doğrulaması yapan bir kullanıcı oluşturmak için aşağıdaki komutu çalıştırın caching_sha2_passwordsammyTercih ettiğiniz kullanıcı adı ve passwordseçtiğiniz güçlü bir şifre ile değiştirdiğinizden emin olun :

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Not : PHP’nin bazı sürümlerinde sorunlara neden olan bilinen bir sorun vardır caching_sha2_passwordmysql_native_password Bu veritabanını bir PHP uygulamasıyla (örneğin phpMyAdmin) kullanmayı planlıyorsanız, bunun yerine eski, ancak yine de güvenli eklentiyle kimlik doğrulaması yapacak bir kullanıcı oluşturmak isteyebilirsiniz :

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Emin değilseniz, her zaman şu komutla kimlik doğrulaması yapan caching_sha2_pluginve daha ALTER sonra bu komutla bir kullanıcı oluşturabilirsiniz:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Yeni kullanıcınızı oluşturduktan sonra onlara uygun ayrıcalıkları verebilirsiniz. Kullanıcı ayrıcalıkları vermek için genel sözdizimi aşağıdaki gibidir:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

Bu PRIVILEGE örnek sözdizimindeki değer, kullanıcının belirtilen database ve üzerinde gerçekleştirmesine izin verilen eylemleri tanımlar table. Her birini virgülle ayırarak aynı kullanıcıya tek komutta birden çok ayrıcalık verebilirsiniz. *Ayrıca veritabanı ve tablo adları yerine yıldız işaretleri ( ) girerek bir kullanıcıya global olarak ayrıcalıklar verebilirsiniz . SQL’de yıldız işaretleri, “tüm” veritabanlarını veya tabloları temsil etmek için kullanılan özel karakterlerdir.

CREATE Örneklemek gerekirse, aşağıdaki komut bir kullanıcıya , ALTER, ve veritabanlarına, tablolara ve kullanıcılara genel ayrıcalıkların DROP yanı sıra INSERTUPDATE, ve DELETE sunucudaki herhangi bir tablodan gelen verilere güç verir. Ayrıca kullanıcıya ile veri sorgulama , anahtar kelime SELECT ile yabancı anahtarlar oluşturma ve ayrıcalığı ile işlem yapma imkanı verir. Ancak, kullanıcılara yalnızca ihtiyaç duydukları izinleri vermelisiniz, bu nedenle kendi kullanıcı ayrıcalıklarınızı gerektiği gibi ayarlamaktan çekinmeyin. REFERENCESFLUSHRELOAD

Kullanılabilir ayrıcalıkların tam listesini resmi MySQL belgelerinde bulabilirsiniz .

Kullanıcınıza bu ayrıcalıkları vermek için kendi MySQL kullanıcı adınızla GRANTdeğiştirerek bu ifadeyi çalıştırın : sammy

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Bu ifadenin de içerdiğini unutmayın WITH GRANT OPTION. Bu, MySQL kullanıcınızın sistemdeki diğer kullanıcılara sahip olduğu tüm izinleri vermesini sağlar.

Uyarı : Bazı kullanıcılar MySQL kullanıcılarına , root ALL PRIVILEGES kullanıcının ayrıcalıklarına benzer geniş süper kullanıcı ayrıcalıkları sağlayacak olan ayrıcalığı vermek isteyebilir , örneğin:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Bu MySQL kullanıcısına erişimi olan herkes sunucudaki her veritabanı üzerinde tam kontrole sahip olacağından, bu tür geniş ayrıcalıklar kolayca verilmemelidir .

FLUSH PRIVILEGES Bunu takiben, komutu çalıştırmak iyi bir uygulamadır . CREATE USER Bu, önceki ve GRANT ifadelerin bir sonucu olarak sunucunun önbelleğe aldığı tüm belleği boşaltacaktır :

FLUSH PRIVILEGES;

Ardından MySQL istemcisinden çıkabilirsiniz:

exit

Gelecekte, yeni MySQL kullanıcınız olarak oturum açmak için aşağıdaki gibi bir komut kullanırsınız:

mysql -u sammy -p

Bayrak -p, MySQL istemcisinin kimlik doğrulaması için sizden MySQL kullanıcınızın şifresini istemesine neden olacaktır.

Son olarak MySQL kurulumunu test edelim.

Adım 4 — MySQL’i Test Etme

Nasıl yüklediğinize bakılmaksızın, MySQL otomatik olarak çalışmaya başlamış olmalıdır. Bunu test etmek için durumunu kontrol edin.

systemctl status mysql.service

Çıktı aşağıdakine benzer olacaktır:

Output● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-04-11 16:04:39 UTC; 2h 36min ago
    Process: 2593 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 2601 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1119)
     Memory: 354.3M
        CPU: 19.944s
     CGroup: /system.slice/mysql.service
             └─2601 /usr/sbin/mysqld

MySQL çalışmıyorsa, bu komut ile başlatabilirsiniz sudo systemctl start mysql.

mysqladmin Ek bir kontrol için, yönetim komutlarını çalıştırmanıza izin veren bir istemci olan aracı kullanarak veritabanına bağlanmayı deneyebilirsiniz . Örneğin, bu komut, sammy ( ) adlı bir MySQL kullanıcısı olarak bağlanmayı, bir parola sormayı ( ) ve sürümü döndürmeyi söylüyor. Özel MySQL kullanıcınızın adını değiştirdiğinizden emin olun ve istendiğinde o kullanıcının şifresini girin:-u sammy-psammy

sudo mysqladmin -p -u sammy version

Aşağıda çıktının bir örneği aşağıda verilmiştir:

Outputmysqladmin  Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version          8.0.28-0ubuntu4
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 2 hours 31 min 57 sec

Threads: 2  Questions: 25  Slow queries: 0  Opens: 160  Flush tables: 3  Open tables: 79  Queries per second avg: 0.000

Bu, MySQL’in çalışır durumda olduğu anlamına gelir.

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu