Ubuntu 18.04’e MySQL Nasıl Kurulur

Giriş

MySQL , genellikle 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 . Verilerini yönetmek için ilişkisel bir veritabanı ve SQL (Yapılandırılmış Sorgu Dili) kullanır.

Kurulumun kısa sürümü basittir: paket dizininizi güncelleyin, paketi kurun mysql-serverve ardından içerilen güvenlik komut dosyasını çalıştırın.

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

Bu eğitim, MySQL 5.7 sürümünün Ubuntu 18.04 sunucusuna nasıl kurulacağını açıklayacaktır. Ancak, mevcut bir MySQL kurulumunu 5.7 sürümüne güncellemek istiyorsanız, bunun yerine bu MySQL 5.7 güncelleme kılavuzunu okuyabilirsiniz .

Önkoşullar

Bu öğreticiyi takip etmek için şunlara ihtiyacınız olacak:

  • Ayrıcalıklara sahip kök olmayan bir kullanıcı ve bir güvenlik duvarı dahil olmak üzere, bu ilk sunucu kurulum kılavuzunu izleyerek bir Ubuntu 18.04 sunucusu kuruldu .sudo

Adım 1 – MySQL’i Kurmak

Ubuntu 18.04’te, varsayılan olarak APT paket havuzunda yalnızca MySQL’in en son sürümü bulunur. Yazma sırasında, bu MySQL 5.7’dir.

Yüklemek için sunucunuzdaki paket dizinini şu şekilde güncelleyin apt:

sudo apt update

Ardından varsayılan paketi kurun:

sudo apt install mysql-server

Bu MySQL’i kuracak, 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 bunu ele alacağız.

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

Yeni kurulumlar için, dahil edilen güvenlik komut dosyasını çalıştırmak isteyeceksiniz. Bu, uzak kök oturum açma işlemleri ve örnek kullanıcılar gibi daha az güvenli varsayılan seçeneklerden bazılarını değiştirir. MySQL’in eski sürümlerinde, veri dizinini manuel olarak da başlatmanız gerekiyordu, ancak bu şimdi otomatik olarak yapılıyor.

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

sudo mysql_secure_installation

Bu, sizi MySQL kurulumunuzun güvenlik seçeneklerinde bazı değişiklikler yapabileceğiniz bir dizi bilgi isteminden geçirecektir. İlk istem, MySQL şifrenizin gücünü test etmek için kullanılabilecek Parola Doğrulama Eklentisini kurmak isteyip istemediğinizi soracaktır. Seçiminiz ne olursa olsun, bir sonraki soru MySQL root kullanıcısı için bir şifre belirlemeniz olacaktır . Seçtiğiniz güvenli bir şifreyi girin ve ardından onaylayın.

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çma işlemlerini devre dışı bırakacak ve MySQL’in yaptığınız değişikliklere anında saygı göstermesi için bu yeni kuralları yükleyecektir.

MySQL veri dizinini başlatmak için, mysql_install_db5.7.6’dan önceki sürümler ve mysqld --initialize5.7.6 ve sonraki sürümler için kullanırsınız . Ancak, MySQL’i 1. Adımda açıklandığı gibi Debian dağıtımından kurduysanız, veri dizini otomatik olarak başlatıldı; hiçbir şey yapmak zorunda değilsin. Komutu yine de çalıştırmayı denerseniz, aşağıdaki hatayı görürsünüz:Çıktı

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

Kök MySQL kullanıcısı için bir parola belirlemiş olsanız bile , bu kullanıcının MySQL kabuğuna bağlanırken bir parola ile kimlik doğrulaması yapacak şekilde yapılandırılmadığını unutmayın. İsterseniz, 3. Adım’ı uygulayarak bu ayarı düzenleyebilirsiniz.

Adım 3 – (İsteğe Bağlı) Kullanıcı Kimlik Doğrulamasını ve Ayrıcalıklarını Ayarlama

MySQL 5.7 (ve sonraki sürümler) çalıştıran Ubuntu sistemlerinde, kök MySQL kullanıcısı auth_socketvarsayılan olarak bir parola yerine eklentiyi kullanarak kimlik doğrulaması yapacak şekilde ayarlanmıştır . Bu, birçok durumda daha fazla güvenlik ve kullanılabilirlik sağlar, ancak harici bir programın (örn. PhpMyAdmin) kullanıcıya erişmesine izin vermeniz gerektiğinde işleri karmaşıklaştırabilir.

MySQL’e kök olarak bağlanmak için bir parola kullanmak için , kimlik doğrulama yöntemini konumundan olarak auth_socketdeğiştirmeniz gerekecektir mysql_native_password. Bunu yapmak için terminalinizden MySQL istemini açın:

sudo mysql

Ardından, aşağıdaki komutla MySQL kullanıcı hesaplarınızın her birinin hangi kimlik doğrulama yöntemini kullandığını kontrol edin:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Bu örnekte, kök kullanıcının aslında auth_socketeklentiyi kullanarak kimlik doğrulaması yaptığını görebilirsiniz . Kök hesabını bir parolayla kimlik doğrulaması yapacak şekilde yapılandırmak için aşağıdaki ALTER USERkomutu çalıştırın . passwordSeçtiğiniz güçlü bir parola ile değiştirdiğinizden emin olun ve bu komutun 2. Adımda belirlediğiniz kök parolayı değiştireceğini unutmayın :

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

Ardından, FLUSH PRIVILEGESsunucuya hibe tablolarını yeniden yüklemesini ve yeni değişikliklerinizi yürürlüğe koymasını söyleyen çalıştır :

FLUSH PRIVILEGES;

Kökün artık auth_socketeklentiyi kullanarak kimlik doğrulaması yapmadığını onaylamak için her bir kullanıcınız tarafından kullanılan kimlik doğrulama yöntemlerini tekrar kontrol edin :

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Bu örnek çıktıda, kök MySQL kullanıcısının artık bir parola kullanarak kimlik doğrulaması yaptığını görebilirsiniz. Bunu kendi sunucunuzda onayladıktan sonra MySQL kabuğundan çıkabilirsiniz:

exit

Alternatif olarak, bazıları iş akışlarına özel bir kullanıcıyla MySQL’e bağlanmanın daha uygun olduğunu görebilir. Böyle bir kullanıcı oluşturmak için MySQL kabuğunu bir kez daha açın:

sudo mysql

Not: Önceki paragraflarda açıklandığı gibi, root için parola kimlik 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:

mysql -u root -p

Oradan yeni bir kullanıcı oluşturun ve ona güçlü bir şifre verin:

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

Ardından, yeni kullanıcınıza uygun ayrıcalıkları verin. Örneğin, şu komutla, kullanıcı ayrıcalıklarını veritabanı içindeki tüm tablolara ve kullanıcı ayrıcalıklarını ekleme, değiştirme ve kaldırma yetkisini verebilirsiniz:

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

Bu noktada FLUSH PRIVILEGESkomutu tekrar çalıştırmanıza gerek olmadığını unutmayın . Beğendiğiniz ifadelerini kullanarak hibe tabloları değiştirmek Bu komut yalnızca gereklidir INSERTUPDATEya DELETE. Mevcut bir kullanıcıyı değiştirmek yerine yeni bir kullanıcı oluşturduğunuz için FLUSH PRIVILEGESburada gereksizdir.

Bunu takiben MySQL kabuğundan çıkın:

exit

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şlamalıydı. Bunu test etmek için durumunu kontrol edin.

systemctl status mysql.service

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

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
 Main PID: 3754 (mysqld)
    Tasks: 28
   Memory: 142.3M
      CPU: 1.994s
   CGroup: /system.slice/mysql.service
           └─3754 /usr/sbin/mysqld

MySQL çalışmıyorsa, ile başlayabilirsiniz sudo systemctl start mysql.

Ek bir kontrol için, mysqladminyönetim komutlarını çalıştırmanıza izin veren bir istemci olan aracı kullanarak veritabanına bağlanmayı deneyebilirsiniz . Örneğin, bu komut MySQL’e root ( -u root) olarak bağlanmayı , şifre sormayı ( -p) ve sürümü döndürmeyi söyler .

sudo mysqladmin -p -u root version

Buna benzer çıktı görmelisiniz:Çıktı

mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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      5.7.21-1ubuntu1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

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

Kaynak