Android

MySQL veritabanı sunucusuna uzak bağlantılara nasıl izin verilir

Mysql Sunucusuna Uzaktan Bağlanmak/Sqlyog ile Cpanele Bağlanmak

Mysql Sunucusuna Uzaktan Bağlanmak/Sqlyog ile Cpanele Bağlanmak

İçindekiler:

Anonim

Varsayılan olarak, MySQL sunucusu yalnızca localhost'tan gelen bağlantıları dinler, yani sadece aynı ana bilgisayarda çalışan uygulamalar tarafından erişilebilir.

Ancak, bazı durumlarda, MySQL sunucusuna uzak konumdan erişmek gerekir. Örneğin, yerel sisteminizden uzak MySQL sunucusuna bağlanmak istediğinizde veya uygulamanın veritabanı sunucusundan farklı bir makinede çalıştığı çok sunuculu bir dağıtım kullanırken. Bir seçenek MySQL sunucusuna SSH Tüneli üzerinden erişmek, diğeri ise MySQL sunucusunu uzak bağlantıları kabul edecek şekilde yapılandırmaktır.

Bu kılavuzda, bir MySQL sunucusuna uzak bağlantılara izin vermek için gerekli adımları uygulayacağız. Aynı talimatlar MariaDB için de geçerlidir.

MySQL Sunucusunu Yapılandırma

İlk adım, MySQL sunucusunu belirli bir IP adresini veya makinedeki tüm IP adreslerini dinleyecek şekilde ayarlamaktır.

MySQL sunucusu ve istemcileri özel bir ağ üzerinden birbirleriyle iletişim kurabiliyorsa, en iyi seçenek MySQL sunucusunu yalnızca özel IP'de dinleyecek şekilde ayarlamaktır. Aksi takdirde, sunucuya ortak bir ağ üzerinden bağlanmak istiyorsanız, MySQL sunucusunu makinedeki tüm IP adreslerini dinleyecek şekilde ayarlayın.

Bunu yapmak için MySQL yapılandırma dosyasını düzenlemeniz ve bind-address seçeneğinin değerini eklemeniz veya değiştirmeniz gerekir. Tek bir IP adresi ve IP aralıkları ayarlayabilirsiniz. Adres 0.0.0.0 ise, MySQL sunucusu tüm ana IPv4 arayüzlerindeki bağlantıları kabul eder. Sisteminizde IPv6 yapılandırılmışsa, 0.0.0.0 yerine :: kullanın.

MySQL yapılandırma dosyasının konumu dağıtıma bağlı olarak değişir. Ubuntu ve Debian'da dosya /etc/mysql/mysql.conf.d/mysqld.cnf bulunurken, CentOS gibi Red Hat tabanlı dağıtımlarda dosya /etc/mysql/mysql.conf.d/mysqld.cnf bulunur.

Dosyayı metin düzenleyicinizle açın:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address ile başlayan bir satır arayın ve değerini bir MySQL sunucusunun dinlemesi gereken IP adresine ayarlayın.

Varsayılan olarak, değer 127.0.0.1 olarak ayarlanmıştır (yalnızca localhost'ta dinler).

Bu örnekte, değeri 0.0.0.0 değiştirerek MySQL sunucusunu tüm IPv4 arayüzlerini dinleyecek şekilde ayarlayacağız

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

skip-networking içeren bir satır varsa, satırı silin veya satırın başına # ekleyerek yorum yapın.

MySQL 8.0 ve sonraki sürümlerde, bağlantı bind-address yönergesi mevcut olmayabilir. Bu durumda, Bölüm.

Tamamlandığında, değişikliklerin etkili olması için MySQL hizmetini yeniden başlatın. Yalnızca kök veya sudo ayrıcalıklarına sahip kullanıcılar hizmetleri yeniden başlatabilir.

Debian veya Ubuntu üzerinde MySQL hizmetini yeniden başlatmak için şunu yazın:

sudo systemctl restart mysql

Hizmet çalışmasını yeniden başlatmak için CentOS gibi RedHat tabanlı dağıtımlarda:

sudo systemctl restart mysqld

Uzak Makineden Bir Kullanıcıya Erişim Verme

Sonraki adım, uzak kullanıcıya veritabanına erişime izin vermektir.

MySQL sunucusunda kök kullanıcı olarak aşağıdakileri yazarak oturum açın:

sudo mysql

mysql -uroot -p

MySQL kabuğunun içinden, uzak kullanıcıya erişim vermek için GRANT deyimini kullanın.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Nerede:

  • database_name kullanıcının bağlanacağı veritabanının adıdır. user_name MySQL kullanıcısının adıdır. ip_address , kullanıcının bağlanacağı IP adresidir. Kullanıcının herhangi bir IP adresinden bağlanmasına izin vermek için % tuşunu kullanın. user_password kullanıcı user_password .

Örneğin, IP 10.8.0.5 sahip bir istemci makineden 10.8.0.5 parolasıyla foo adlı bir kullanıcıya veritabanı dbname erişimine izin vermek için şunu çalıştırırsınız:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Güvenlik Duvarını Yapılandırma

Son adım, güvenlik duvarınızı uzak makinelerden 3306 numaralı bağlantı noktasında (MySQL varsayılan bağlantı noktası) trafiğe izin verecek şekilde yapılandırmaktır.

iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Belirli bir IP adresinden erişime izin ver:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW, Ubuntu'daki varsayılan güvenlik duvarı aracıdır. İnternet'teki herhangi bir IP adresinden erişime izin vermek (çok güvensiz):

sudo ufw allow 3306/tcp

Belirli bir IP adresinden erişime izin ver:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

Güvenlik DuvarıD, CentOS'ta varsayılan güvenlik duvarı yönetim aracıdır. İnternet'teki herhangi bir IP adresinden erişime izin vermek (çok güvensiz) yazın:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Belirli bir bağlantı noktasındaki belirli bir IP adresinden erişime izin vermek için yeni bir FirewallD bölgesi oluşturabilir veya zengin bir kural kullanabilirsiniz. mysqlzone adında yeni bir bölge oluşturun:

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Değişiklikleri Doğrulama

Uzak kullanıcının MySQL sunucusuna bağlanabildiğini doğrulamak için aşağıdaki komutu çalıştırın:

mysql -u user_name -h mysql_server_ip -p

Burada user_name , erişim izni verdiğiniz kullanıcının adıdır ve mysql_server_ip , MySQL sunucusunun çalıştığı ana bilgisayarın IP adresidir.

Her şey doğru şekilde kurulursa, uzak MySQL sunucusunda oturum açabilirsiniz.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

Aşağıdaki hata, oturum açmaya çalıştığınız kullanıcının uzak MySQL sunucusuna erişim izninin olmadığını gösterir.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Sonuç

Varsayılan olarak en popüler açık kaynaklı veritabanı sunucusu olan MySQL, gelen bağlantıları yalnızca localhost üzerinden dinler.

Bir MySQL sunucusuna uzaktan bağlantılara izin vermek için aşağıdaki adımları gerçekleştirmeniz gerekir:

  1. MySQL sunucusunu tüm veya belirli bir arabirimi dinleyecek şekilde yapılandırın Uzak kullanıcıya erişim verin Güvenlik duvarınızdaki MySQL bağlantı noktasını açın.
mysql mariadb