Linux

MySQL’i Ubuntu 20.04’e Nasıl Kurulur

sunucu linux kernel
Share

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-serverpaketi kurun:

sudo apt install mysql-server

 

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, 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:

Output
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:

Output
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:

Output
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 Yve ardından tuşlarına basabilirsiniz. ENTERBu, 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.7MySQL (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

  1. 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 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:

  1. 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:

  1. CREATE USER username@host IDENTIFIED WITH authentication_plugin BY password;

‘ den sonra CREATE USERbir 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 :

  1. 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_passwordBu 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 :

  1. 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 ALTERsonra bu komutla bir kullanıcı oluşturabilirsiniz:

  1. 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:

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

Bu PRIVILEGEörnek sözdizimindeki değer, kullanıcının belirtilen databaseve ü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 DROPyanı sıra INSERTUPDATE, ve DELETEsunucudaki herhangi bir tablodan gelen verilere güç verir. Ayrıca kullanıcıya ile veri sorgulama , anahtar kelime SELECTile 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

  1. 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 , 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:

  1. 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 PRIVILEGESBunu takiben, komutu çalıştırmak iyi bir uygulamadır . CREATE USERBu, önceki ve GRANTifadelerin bir sonucu olarak sunucunun önbelleğe aldığı tüm belleği boşaltacaktır :

  1. FLUSH PRIVILEGES;

Ardından MySQL istemcisinden çıkabilirsiniz:

  1. exit

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

  1. 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.

  1. systemctl status mysql.service

Aşağıdakine benzer bir çıktı göreceksiniz:

Output
● 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.

mysqladminEk 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

  1. sudo mysqladmin -p -u sammy version

Şuna benzer bir çıktı görmelisiniz:

Output
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: