Vývojáři aplikací mohou mít potíže s připojením k databázi hostované na jiném než místním serveru. V tomto článku vyřešíme běžnou chybu, ke které dochází při vzdáleném připojení k databázi MySQL zvenčí sítě nebo z jiného hostitele.
SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server
dojde k chybě, když je požadavek na připojení odmítnut serverem MySQL.
Chcete-li povolit vzdálená připojení, musíme provést následující kroky –
- Povolte vzdálená připojení z konfigurace
- Vytvořte nového uživatele a povolte mu připojení k databázovému serveru z konkrétního hostitele (nebo všech hostitelů)
- Vyprázdnit oprávnění
Povolte vzdálená připojení z konfigurace MySQL
/etc/mysql/my.cnf
nebo /etc/my.cnf
nebo /etc/mysql/mysql.conf.d/mysqld.cnf
. Umístění konfiguračního souboru MySQL závisí na verzi MySQL, kterou používáte. Zkontrolujte všechna tato umístění a zjistěte, zda můžete najít konfigurační soubor. Připojte se k našemu serveru Discord a dejte nám vědět, pokud jste konfigurační soubor ještě nenašli. Možná vám můžeme pomoci.
Po nalezení konfiguračního souboru jej otevřete a komentujte řádek bind-address = 127.0.0.1
.
Stačí přidat # před řádek, abyste to okomentovali.
# bind-address = 127.0.0.1
Vytvořit nového uživatele MySQL
Přihlaste se do MySQL jako root –
sudo mysql
Or
mysql -u root -p
V závislosti na zvolené metodě budete vyzváni k zadání hesla. sudo
heslo, pokud se přihlašujete pomocí sudo
.
Jakmile jste v příkazovém řádku MySQL, vytvořte nového uživatele –
> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Nahraďte prosím „uživatelské jméno ‘ s požadovaným uživatelským jménem, ‘nastavit heslo “ se silným heslem a „ip-adresa se vzdálenou IP adresou ve výše uvedeném příkazu. Pokud je vytvořen nový uživatel, měli byste vidět následující zprávu –
Query OK, 0 rows affected (0.02 sec)
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Nahraďte prosím uživatelské jméno v předchozím příkazu skutečným uživatelským jménem a ip-adresa s IP adresou vzdáleného počítače (hostitel). Po dokončení prosím vyprázdněte oprávnění, aby se změny projevily.
> FLUSH PRIVILEGES;
Povolit všechna vzdálená připojení
Stejně jako v předchozím příkazu jsem dal pokyn k nahrazení ip-adresy IP adresou vzdáleného počítače. Povolena budou pouze připojení z tohoto vzdáleného počítače. Můžeme však také použít zástupný znak „%“, abychom povolili všechna připojení, bez ohledu na to, zda jsou z vašeho počítače nebo od toho chlapíka ze sklepa, který potřebuje přístup k vaší databázi z osobních důvodů. 😉 Pro přístup do databáze však budou muset zadat správné přihlašovací údaje.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
Povolit připojení z rozsahu IP adres
Pokud jsou vzdálené servery ve stejné síti, jejich IP adresám lze snadno povolit vzdálená připojení bez potřeby více uživatelů MySQL.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';
Všimněte si, jak byl poslední oktet adresy IP nahrazen znakem * ve výše uvedeném příkazu. To umožňuje všem serverům s touto IP adresou začínat 172.19.0.