环境:
- Ubuntu 20.04
- MySQL8.0
原因:mysql安装好后
- 默认监听3306端口,并且只允许localhost访问
- 只允许root用户在localhost上登录
解决方案:
- ① 保障3306端口是开放的
sudo ufw allow 3306 # 打开3306号端口
sudo ufw status # 查看端口状态,allow就是开放的。
sudo ufw disable # 关闭防火墙
sudo ufw enable # 开启防火墙
- ② 允许其他IP访问
进入到 /etc/mysql/mysql.conf.d 目录 # 一般mysql默认会安装在这个目录下。如果不是,可以使用sudo find / -name "mysql.cnf"来查找文件。
修改mysqld.cnf文件
把bind-address从127.0.0.0改为0.0.0.0
- ③ 允许root用户在其他IP上登录
# 使用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