ubantu+mysql 远程访问

ubantu+mysql 远程访问失败

img

参考网上的方法
先是正常安装mysql
安装完之后去mysql/user 表里,把root的host改成了“%”

img

FLUSH PRIVILEGES;
然后再去/etc/mysql/mysql.conf.d,把mysqld.conf中bind-address都改成了0.0.0.0

img

重启mysql
开启服务器的3306

结果仍然报错

先检查防火墙是否开启,sudo ufw status
建议先关掉防火墙看下远程链接能否正常: sudo ufw disable
如果还不行, 建议是重新创建一个远程访问权限的用户:
mysql> CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
mysql> GRANT ALL PRIVILEGES ON . TO '用户名'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
重新链接再看

权限有没有刷新呢
参考https://blog.csdn.net/Empty_mountain/article/details/123254540

检查下3306端口是否开放:

firewall-cmd --permanent --add-port=3306/tcp

刷新端口开放:


firewall-cmd --reload

其次检查密码是否正确。
再次,不行的话,创建一个新的用户来测试下是否可以连接:


mysql> CREATE USER 'xxb'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 
mysql> FLUSH PRIVILEGES;

然后使用xxb 123456 看下能否连接成功

mysql> FLUSH PRIVILEGES;

MySQL远程连接失败总结|Ubuntu

https://blog.csdn.net/Pluton_1/article/details/128107753

操作脚本如下



mysql -u root -p 
# 输入密码,进入控制台

use mysql;
update user set Host='%' where User='root'; 
flush privileges #刷新权限

引用chatgpt-plus的思路整理如下:
要在Ubuntu上远程访问MySQL服务器,需要按照以下步骤进行配置:

确保MySQL服务器可以接受远程连接。默认情况下,MySQL服务器只允许本地连接。可以通过以下命令检查:
sudo netstat -plunt | grep mysqld
如果看到MySQL服务器监听在 127.0.0.1:3306 或者 localhost:3306,则表示只允许本地连接。如果要允许远程连接,则需要修改MySQL服务器的配置文件。

修改MySQL服务器配置文件。编辑MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,找到以下行:

bind-address = 127.0.0.1
将其改为:

bind-address = 0.0.0.0
这将允许MySQL服务器接受来自任意IP地址的连接。

重启MySQL服务器:
sudo systemctl restart mysql
授予MySQL用户远程访问权限。在MySQL服务器上登录MySQL控制台:
mysql -u root -p
在MySQL控制台中,输入以下命令:

GRANT ALL PRIVILEGES ON . TO 'username'@'%' IDENTIFIED BY 'password';
其中,username和password是你要授予远程访问权限的MySQL用户的用户名和密码。%表示允许来自任意IP地址的连接。如果只想允许某个IP地址的连接,可以将%改为该IP地址。

重启MySQL服务,使配置生效:
sudo systemctl restart mysql
完成以上配置后,就可以在其他计算机上使用MySQL客户端工具,通过IP地址和端口号连接到Ubuntu上的MySQL服务器了。例如,在另一台计算机上使用命令行的MySQL客户端工具连接:

mysql -h ubuntu_ip_address -P 3306 -u username -p
其中,ubuntu_ip_address是Ubuntu计算机的IP地址,username是在MySQL服务器上授予远程访问权限的MySQL用户的用户名。连接成功后,就可以使用MySQL命令操作数据库了。

该回答引用ChatGPT
根据提供的信息和截图,可以初步判断问题出现在防火墙上。 您需要在Ubuntu系统上检查防火墙设置。 您可以尝试在系统终端中扫描MySQL端口(即3306)以查看它是否开放。

命令如下:

sudo apt-get update
sudo apt-get install nmap
sudo nmap -Pn -sV 服务器IP

如果端口是关闭的,您需要在Ubuntu系统上打开端口。您可以使用以下命令打开3306端口:

sudo ufw allow mysql

如果您使用其他防火墙,请相应地调整命令。

如果您使用的是云服务器,则还需要管理云服务器的安全组策略,确保在该安全组中允许访问MySQL端口。

如果以上操作都正常,但仍然无法远程连接MySQL,请确保您的MySQL用户名和密码是否正确,并且已将您的用户名授权访问远程MySQL。您可以尝试在终端中连接MySQL以检查是否有问题:

命令如下:

mysql -h 服务器IP - u 用户名 - p

如果在这些尝试之后问题仍然存在,请检查MySQL日志以获取更多信息。

请注意:在开启远程访问MySQL时,需要确保网络和MySQL服务器的安全性,以防止恶意用户访问您的服务器。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
有可能是服务器或本地防火墙未开放3306端口,您可以尝试通过以下步骤来排除故障:

  1. 检查远程服务器的3306端口是否已经开放,您可以使用以下命令检查端口状态:
sudo ufw allow 3306/tcp
sudo ufw status
  1. 在本地机器上检查是否能够ping通服务器,您可以使用以下命令检查服务器是否可达:
ping server_ip
  1. 检查本地计算机上的防火墙是否已经允许访问mysql服务端口3306,您可以使用以下命令检查本地防火墙状态:
sudo ufw status

如果本地防火墙已经开启,请尝试添加规则以允许本地访问MySQL服务端口3306:

sudo ufw allow from any to any port 3306 proto tcp
  1. 检查mysql服务端口是否已设置正确的监听地址,您可以编辑mysqld.cnf配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

确保以下行未被注释并已修改为正确的IP地址:

bind-address = server_ip_address
  1. 最后,请确保在所有更改后重启MySQL服务:
sudo service mysql restart

请注意,远程访问MySQL和开放3306端口是一种不安全的做法。建议在必要情况下启用远程访问MySQL,并遵循最佳安全实践以确保服务器的安全。
如果我的回答解决了您的问题,请采纳!