一、环境:
Ubuntu 20.04
MySQL8.0.29
问题:
现在市面上主要使用的是经典的MySQL5.7版本,MySQL8.0是个较新的版本,二者的远程连接有点不一样,刚安装好的MySQL8.0不能远程连接的主要原因有以下几点:
①3306端口未打开;
②默认是允许本机即localhost或者说127.0.0.1(二者同义)访问,不允许其他计算机进行远程连接;
③默认只允许root用户在localhost上登录。
二、解决方法:
①针对3306端口未打开:
首先要确保服务器上的3306端口是打开的(这里针对使用腾讯云或者阿里云等租用云服务器的用户而言,如果你是自己的服务器,那在服务器上打开一下就行,但是腾讯或者阿里云的云服务器,你在服务器上配置了也没用,你必须得在其控制台进行配置):
②针对默认是允许本机即localhost或者说127.0.0.1(二者同义)访问,不允许其他计算机进行远程连接:(5.7版本不需要修改这个)
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改bind-address从127.0.0.0改为0.0.0.0
③针对默认只允许root用户在localhost上登录:
# 使用root用户登录mysql数据库,进入到mysql数据库
mysql -u root -p
# 切换到mysql数据库
use mysql;
# 查看user表的host和user数据:会发现root用户允许的host是localhost
select host, user from user;
# 修改数据:把user为root的host改为%,表示允许root用户在所有IP上登录
update user set host='%' where user='root';
# 重启mysql:
/etc/init.d/mysql restart