MySQL’i Ubuntu 20.04’e Nasıl Kurulur
MySQL , yaygın olarak popüler LAMP (Linux, Apache, MySQL, PHP/Python/Perl) yığınının bir parçası olarak kurulan açık kaynaklı bir veritabanı yönetim sistemidir . İlişkisel modeli uygular ve verilerini yönetmek için Structured Query Language (SQL olarak daha iyi bilinir) kullanır.
Bu eğitim, MySQL sürüm 8.0’ın bir Ubuntu 20.04 sunucusuna nasıl kurulacağını ele alacaktır. Bunu tamamlayarak, bir sonraki web sitenizi veya uygulamanızı oluşturmak için kullanabileceğiniz çalışan bir ilişkisel veritabanına sahip olacaksınız.
Önkoşullar
Bu öğreticiyi takip etmek için ihtiyacınız olacak:
- Kök olmayan bir yönetici kullanıcıya ve UFW ile yapılandırılmış bir güvenlik duvarına sahip bir Ubuntu 20.04 sunucusu. Bunu ayarlamak için Ubuntu 20.04 için ilk sunucu kurulum kılavuzumuzu izleyin .
Adım 1 — MySQL’i Yükleme
Ubuntu 20.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.27 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
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, DBMS’nin içerdiği güvenlik komut dosyasını çalıştırmak isteyeceksiniz. Bu komut dosyası, uzak kök oturum açmaları ve örnek kullanıcılar gibi şeyler için daha az güvenli varsayılan seçeneklerden bazılarını değiştirir.
Güvenlik komut dosyasını şununla çalıştırın 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 parolayla kimlik doğrulaması yapan herhangi bir MySQL kullanıcısının, seçtiğiniz politikayı karşılayan bir parolaya sahip olması gerekir. Girerek seçebileceğiniz en güçlü ilke düzeyi 2
, parolaların en az sekiz karakter uzunluğunda olmasını ve büyük harf, küçük harf, sayısal ve özel karakterlerin bir karışımını içermesini gerektirir:
Securing 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:
Please set the password for root here.
New password:
Re-enter new password:
Kök 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:
Estimated 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 Y
ve 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 kök 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 kök MySQL kullanıcısının nasıl kullanılacağını özetlemektedir.
5.7
MySQL (ve sonraki sürümleri) çalıştıran Ubuntu sistemlerinde , kökauth_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, kök MySQL kullanıcısına erişmek için ayrıcalıklarla mysql
çağırmanız gerekir :sudo
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 gerekecektir. 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:
CREATE USER
MySQL istemine eriştiğinizde, bir ifadeyle yeni bir kullanıcı oluşturabilirsiniz . Bunlar şu genel sözdizimini takip eder:
‘ 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_plugin
caching_sha2_password
ile kimlik doğrulaması yapan bir kullanıcı oluşturmak için aşağıdaki komutu çalıştırın caching_sha2_password
. sammy
Tercih ettiğiniz kullanıcı adı ve password
seçtiğiniz güçlü bir şifre ile değiştirdiğinizden emin olun :
Not : PHP’nin bazı sürümlerinde sorunlara neden olan bilinen bir sorun vardır caching_sha2_password
. mysql_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 :
Emin değilseniz, her zaman şu komutla kimlik doğrulaması yapan caching_sha2_plugin
ve daha ALTER
sonra bu komutla bir kullanıcı oluşturabilirsiniz:
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:
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 INSERT
, UPDATE
, 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.REFERENCES
FLUSH
RELOAD
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 GRANT
değiştirerek bu ifadeyi çalıştırın :sammy
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 , kökALL 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:
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 :
Ardından MySQL istemcisinden çıkabilirsiniz:
Gelecekte, yeni MySQL kullanıcınız olarak oturum açmak için aşağıdaki gibi bir komut kullanırsınız:
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.
Aşağıdakine benzer bir çıktı göreceksiniz:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld
MySQL çalışmıyorsa, 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
-p
sammy
Şuna benzer bir çıktı görmelisiniz:
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
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.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec
Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038
Bu, MySQL’in çalışır durumda olduğu anlamına gelir.
Çözüm
Artık sunucunuzda kurulu temel bir MySQL kurulumuna sahipsiniz. İşte atabileceğiniz sonraki adımlara birkaç örnek:
Merhaba, makaleniz gerçekten yararlı oldu. Ancak, Ubuntu 20.04’ü kurarken karşılaştığım bazı zorluklar vardı. Bu konuda daha fazla bilgi alabileceğim bir kaynak önerebilir misiniz? Teşekkürler.
Merhaba, makaleyi okudum ve gerçekten bilgilendirici buldum. Ancak, kurulum süreci sırasında karşılaşılan herhangi bir olası sorunu ele alarak, makalenin daha kapsamlı bir rehber olmasını sağlamanızı öneririm. Yine de, teşekkürler!
Merhabalar,
Değerli yorumunuz için teşekkür ederiz. En kısa sürede makaleyi güncelleyeceğiz.