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_socket
. Bir 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 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 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 USER
MySQL 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_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 :
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
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 :
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
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:
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 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
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
-p
sammy
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.