Yerel makineme MySQL Community Edition 5.5'i yükledim ve harici kaynaktan bağlanabilmem için uzaktan bağlantılara izin vermek istiyorum.
Bunu nasıl yapabilirim?
sudo mysql_secure_installation
. Bilginize.
Yerel makineme MySQL Community Edition 5.5'i yükledim ve harici kaynaktan bağlanabilmem için uzaktan bağlantılara izin vermek istiyorum.
Bunu nasıl yapabilirim?
sudo mysql_secure_installation
. Bilginize.
Yanıtlar:
MySQL'de varsayılan olarak buna izin verilir.
Varsayılan olarak devre dışı bırakılan şey uzaktan root
erişimdir. Bunu etkinleştirmek istiyorsanız, bu SQL komutunu yerel olarak çalıştırın:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ve sonra aşağıdaki satırı bulun ve genellikle Unix / OSX sistemlerinde yaşayan dosyanızda yorum yapın . Bazı durumlarda dosyanın konumu /etc/mysql/mysql.conf.d/mysqld.cnf) olabilir.my.cnf
/etc/mysql/my.cnf
Bir Windows sistemiyse, MySQL kurulum dizininde bulabilirsiniz, genellikle böyle bir şey C:\Program Files\MySQL\MySQL Server 5.5\
ve dosya adı olacaktır my.ini
.
Hattı değiştir
bind-address = 127.0.0.1
için
#bind-address = 127.0.0.1
Değişikliklerin etkili olması için MySQL sunucusunu ( Unix / OSX ve Windows ) yeniden başlatın .
my.cnf
ve bind-address
içinde bir yönerge bulamayanlara , benim durumumda (Ubuntu 16.04.2'de MySQL sürüm 14.14) dosyanın konumunun/etc/mysql/mysql.conf.d/mysqld.cnf
Yukarıdakilerin hepsini yaptıktan sonra hala root
uzaktan giriş yapamadım , ancak bağlantı noktasına Telnetting bağlantıların kabul 3306
edildiğini doğruladı MySQL
.
MySQL'deki kullanıcılara bakmaya başladım ve farklı şifreleri olan birden fazla root kullanıcısı olduğunu fark ettim .
select user, host, password from mysql.user;
Yani içinde MySQL
ben root için tüm şifreleri set tekrar ve nihayet uzaktan olarak giriş olabilir root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Deneyimlerimden sadece bir not, yapılandırma dosyasını bu yolun altında bulabilirsiniz /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Bir süre bu yolu bulmak için mücadele ettim)
sudo find /etc -iname 'mysql*.cnf'
Benim durumumda cent OS'de uzak bir mysql sunucusuna bağlanmaya çalışıyordum. Birçok çözümden geçtikten sonra (tüm ayrıcalıkları vermek, ip bağlantılarını kaldırmak, ağ oluşturmayı sağlamak) sorun hala çözülmüyordu.
Anlaşıldığı gibi, çeşitli çözümlere bakarken, iptables ile karşılaştım, bu da mysql portunun 3306 bağlantılarını kabul etmediğini fark etmemi sağladı.
İşte bu sorunu nasıl kontrol ettiğim ve çözdüğüm hakkında küçük bir not.
telnet (mysql sunucusu ip) [portNo]
iptables -A GİRİŞ -i eth0 -p tcp -m tcp --port 3306 -j KABUL
hizmet iptables dur
Bu yardımcı olur umarım.
MySQL Kullanıcısı için joker uzaktan erişimi ayarlamak üzere lütfen aşağıdaki adımları izleyin.
(1) cmd'yi açın.
(2) C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin yoluna gidin ve bu komutu çalıştırın.
mysql -u kök -p
(3) Kök parolasını girin.
(4) İzin vermek için aşağıdaki komutu yürütün.
'ŞİFRE' İLE TANIMLANMIŞ 'KULLANICI ADI' @ 'IP' ÜZERİNE TÜM AYRINTILARI VERİN;
KULLANICI ADI: MySQL sunucusuna bağlanmak istediğiniz kullanıcı adı.
IP: MySQL sunucusuna erişime izin vermek istediğiniz genel IP adresi.
ŞİFRE: Kullanılan kullanıcı adının şifresi.
Kullanıcının herhangi bir IP adresinden bağlanmasına izin vermek için IP% ile değiştirilebilir.
(5) Komutu ve çıkışı izleyerek önbellekleri yıkayın.
SIVA AYRICALIKLARI;
çıkış; veya \ q
MySQL sunucu işleminiz yalnızca 127.0.0.1 veya :: 1'de dinliyorsa, uzaktan bağlanamazsınız. İçinde bir bind-address
ayarınız varsa/etc/my.cnf
sorunun kaynağı olabilir.
Ayrıca localhost
kullanıcı olmayanlar için de ayrıcalıklar eklemeniz gerekir .
127.0.0.1
?
MySQL'i yüklediyseniz brew
, varsayılan olarak yalnızca yerel arayüzü dinler. Düzenlemeye gerektiğini düzeltmek için /usr/local/etc/my.cnf
ve değiştirmek bind-address
gelen 127.0.0.1
etmek *
.
Sonra koş brew services restart mysql
.
Uzaktan oturum açma işlemi. Uzaktan giriş varsayılan olarak kapalıdır.Tüm iplere erişim vermek için tüm ip için manuel olarak açmanız gerekir.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Spesifik Ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
sonra
flush privileges;
Kullanıcı Ana Makinenizi ve Parolanızı kontrol edebilirsiniz
SELECT host,user,authentication_string FROM mysql.user;
Şimdi göreviniz bunu değiştirmek
bind-address = 127.0.0.1
Bunu şurada bulabilirsiniz:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Eğer orada bulamazsanız, o zaman deneyin
sudo nano /etc/mysql/my.cnf
buna yorum yap
#bind-address = 127.0.0.1
Ardından Mysql'yi yeniden başlatın
sudo service mysql restart
Şimdi uzaktan girişin tadını çıkarın
Sadece FYI Ben saatlerce bu sorunla saçımı çıkardı .. sonunda barındırma sağlayıcımı arıyorum ve benim durumumda bir bulut sunucusu kullanarak 1and1 için kontrol panelinde onlar klonlamak ve bağlantı noktası eklemek zorunda ikincil bir güvenlik duvarı var bulundu 3306. Bir kez eklediğimde doğrudan içeri girdim ..
Bu blog Yerel Ağ üzerinde bir MySQL sunucusu nasıl kurulur MySQL
sıfırdan kurulumunda yararlı olacaktır
Ve OS X kullanıcıları için, bind-address parametresinin my.ini dosyasında değil, genellikle launchd plist içinde ayarlandığını unutmayın. Yani benim durumumda, ben kaldırıldı <string>--bind-address=127.0.0.1</string>
dan /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Geri döngü / yerel adrese (örneğin ) mysqld
bir bağlanma adresi ayarlanmışsa 127.0.0.1
, uzak ana bilgisayarlardan sunucuya erişilemez, çünkü geri döngü arayüzüne herhangi bir uzak ana bilgisayardan erişilemez.
Herhangi bir ana bilgisayardan bağlantı kabul etmek için bu seçeneği 0.0.0.0
( ::
IPv4 + 6 için) olarak veya yalnızca bir arabirimde bağlantılara izin vermek istiyorsanız harici olarak erişilebilir başka bir adrese ayarlayın.
Uzaktan kök erişimini etkinleştirmek tehlikeli olabilir. Daha kısıtlayıcı izinlere sahip kullanıcı hesapları oluştursaydınız tercih edilirdi. Aşağıdaki üç adım bunu yapmalıdır.
İle başlayan satırın bind-address ...
en azından my.ini veya my.cnf dosyanızda yorumlandığından emin olun . Eğer yoksa, devam et. Bu dosyayı C:\ProgramData\MySQL\MySQL Server 8.0
Windows'ta bulabilirsiniz .
Daha sonra, bağlantı kurduğunuz kullanıcı hesabının localhost
Ana Bilgisayar Eşleştirmeleriyle Sınırla alanında olmadığından emin olun. Tavsiye edilmese de, %
test alanına bu alanı koyabilirsiniz . Bunu, MySQL Workbench ile sunucuya yerel bir bağlantı açıp menü çubuğundan Sunucu> Kullanıcılar ve Ayrıcalıklar'a gidip bağlanmak istediğiniz kullanıcı hesabını bularak yapabilirsiniz.
"Eşleşen Ana Bilgisayarlarla Sınırla" alanı, yerel olarak bağlanmanıza izin vermeyen bir alandır. Yani kabul edilen bağlantıları bir IP adresi modeliyle sınırlar. İdeal olarak, MySQL sunucusuna statik bir IP adresinden veya alt ağdan erişmeniz gerekir, böylece olabildiğince kısıtlayıcı olabilirsiniz.
bazı zamanlarda pencerelerde pc adını kullanmanız gerekir
ilk adım) mysql yapılandırma dosyasına koy:
mysqld.cnf SET bağlama adresi = 0.0.0.0
(tcp / ip üzerinden bağlantıların yeniden oluşturulmasını sağlamak için)
ikinci adım) mysql, tablo kullanıcıları, windows propierties pc adı ile, kullanıcı ip yapmak