[Erste Schritte mit MySQL] (2) Externe Remote-Verbindung zur MySQL-Datenbank
Dieser Artikel basiert auf Ubuntu 20.04 LTS und MySQL 8.0.29.
Externe Remote-Verbindungsmethode der MySQL-Datenbank
- Terminalterminal:
mysql -h x.x.x.x -P 3306 -u root -p密码
- Verwalten Sie, indem Sie über Navicat, phpMyAdmin und andere Datenbankverwaltungssoftware eine Verbindung zur MySQL-Datenbank herstellen.
- Toolkits für Programmiersprachen wie Python und Java stellen eine Verbindung zu MySQL-Datenbanken her.
Wenn von außen kein Zugriff auf Ihr MySQL möglich ist, beheben Sie das Problem bitte anhand der folgenden drei Aspekte:
1. Bindungsadresse der MySQL-Konfigurationsdatei
Verwenden Sie zunächst netstat -ntpl | grep 3306
die Adresse, auf die der Testdatenbank-Port lauscht:
# 如果显示127.0.0.1则说明端口只监听了本地地址,所以远程无法访问。
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
# 如果0.0.0.0则说明端口监听所有地址,远程可以访问该端口。
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
Wenn der MySQL-Port nur 127.0.0.1 überwacht, lautet die Lösung:
Suchen Sie die MySQL-Konfigurationsdatei. Mein Pfad besteht darin, MySQL zu /etc/mysql/mysql.conf.d/mysqld.cnf
finden bind-address = 127.0.0.1
, zu ändern bind-address = 0.0.0.0
und dann neu zu starten. sudo service mysql restart
Verwenden Sie dann netstat -ntpl | grep 3306
die vom Testdatenbank-Port überwachte Adresse, um festzustellen, in welche geändert wurde 0.0.0.0:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
2. Ob das Konto externen Zugriff erlaubt
Melden Sie sich auf dem Server an, auf dem MySQL ausgeführt wird, und prüfen Sie, ob der Host des Kontos localhost ist:
# 用root账号登录
mysql -uroot -p
# 使用mysql数据库
USE mysql
# 查看user表
SELECT host,user FROM user;
# 如果user的host为'localhost'则仅限本地访问,'%'就是所有主机都可连接'
# 更改host
UPDATE user SET host='%' WHERE user='root';
#更改完刷新权限或重启MySQL
flush privileges;
sudo service mysql restart
3. Ob der Datenbankport geöffnet ist
- Ob die Firewall den 3306-Port der Datenbank oder andere benutzerdefinierte Ports einschränkt.
- Ob die Sicherheitsgruppe und die Ein- und Ausgangsregeln des Cloud-Servers Port 3306 oder andere benutzerdefinierte Ports geöffnet haben.
Sotelnet ip port
testen Sie, ob der Port geöffnet ist:
Zum Beispiel, um Port 80 mit der IP-Adresse xxxx zu testen:telnet x.x.x.x 80
# 端口连通:
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
# 端口无法连通:
Trying x.x.x.x...
telnet: Unable to connect to remote host: Connection refused