ubantu+mysql 远程访问失败
参考网上的方法
先是正常安装mysql
安装完之后去mysql/user 表里,把root的host改成了“%”
FLUSH PRIVILEGES;
然后再去/etc/mysql/mysql.conf.d,把mysqld.conf中bind-address都改成了0.0.0.0
重启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命令操作数据库了。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
有可能是服务器或本地防火墙未开放3306端口,您可以尝试通过以下步骤来排除故障:
sudo ufw allow 3306/tcp
sudo ufw status
ping server_ip
sudo ufw status
如果本地防火墙已经开启,请尝试添加规则以允许本地访问MySQL服务端口3306:
sudo ufw allow from any to any port 3306 proto tcp
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
确保以下行未被注释并已修改为正确的IP地址:
bind-address = server_ip_address
sudo service mysql restart
请注意,远程访问MySQL和开放3306端口是一种不安全的做法。建议在必要情况下启用远程访问MySQL,并遵循最佳安全实践以确保服务器的安全。
如果我的回答解决了您的问题,请采纳!