Ubuntu’nun yeni sürümüyle beraber mysql kurulumu ve ayarları ile bir takım değişiklikler yapıldı. Artık Ubuntu 14.04 de olduğu gibi kurulum esnasında bizden şifre istemiyor. Bash scriptleri ile kurulum yaparken kurulum bölünmesin diye böyle bir karar alınmış olabilir. Artık şifreyi belirlemek için mysql_secure_installation
komutundan yararlanıyoruz. Bu yazıda mysql remote connection yani uzaktan bağlantı ayarları nasıl olur onu anlatmaya çalışacağım.
Buradan şifre belirledikten ve remote bağlantılara da izin verdikten sonra mysql config dosyası üzerinden de mysql server servisini dışarıya açmamız gerekiyor. Bunun için bind-adress
satırını 0.0.0.0
olarak değiştiriyoruz.
Ardından mysql sunucusunu service mysql restart
ile yeniden başlatıyoruz. Artık netstat -tlnp
ile baktığımızda da 127.0.0.1
üzerinden değil 0.0.0.0
dinleme yaptığını görebiliriz.
Şimdi uzaktan root kullanıcısı ve belirlediğimiz şifre ile bağlanmaya çalıştığımızda izin verilmedi hatası aldığımızı göreceğiz. Yani dışarıdan sunuya erişebiliyoruz fakat mysql bizi kabul etmiyor. Bunun için mysql üzerinden root kullanıcısına uzaktan bağlantı izni vermemiz gerekiyor. mysql komutu ile mysql komut satırını başlatıp alttaki komutları çalıştırıyoruz. Burada şifre de belirtmemiz gerekiyor:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MYSQLSIFREMIZ' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Artık sqlyog, mysql workbench gibi programlarla mysql sunucusuna root kullanıcısı üzerinden bağlanabiliriz
mysql 8 ile birlikte ortalık biraz daha karıştı. Şifreleme algoritması değişti. Eğer bağlantı sorunları yaşarsanız alttaki komutlar ile farklı türde kullanıcılar oluşturmayı deneyin.
DROP USER 'root'@'%'; CREATE USER 'root'@'%' IDENTIFIED BY 'MYSQLSIFRENIZ'; CREATE USER 'root'@'localhost' IDENTIFIED BY 'MYSQLSIFRENIZ'; CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MYSQLSIFRENIZ'; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MYSQLSIFRENIZ'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'MYSQLSIFRENIZ'; GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
ubuntu 20 de mysql in listen adresini değiştireceğiniz config dosyası da standart yerinde değil. /etc içinde kaybolsanız aradığınız dosya şurada: /etc/mysql/mysql.conf.d/mysqld.cnf