原因:mysql安装好后,默认监听3306端口,并且只允许localhost访问,只允许root用户在localhost上登录。
我的环境:
Ubuntu16.04
MySQL8.0
方法:所以要远程连接上mysql数据库。1,确保3306号端口开放;2,允许其他IP访问;3,允许root用户在其他IP上登录。
解决1:确保3306端口开放
打开3306号端口:sudo ufw allow 3306
查看端口状态:sudo ufw status # allow就是开放的。
关闭防火墙:sudo ufw disable
开启防火墙:sudo ufw enable
解决2:允许其他IP访问
进入到 /etc/mysql/mysql.conf.d 目录 # 一般mysql默认会安装在这个目录下。如果不是,可以使用sudo find / -name "mysql.cnf"来查找文件。
修改mysqld.cnf文件
把bind-address从127.0.0.0改为0.0.0.0
解决3:允许root用户在其他IP上登录
使用root用户登录mysql数据库:mysql -u root -p
进入到mysql数据库:use mysql;
查看user表的host和user数据:select host, user from user; # 会发现root用户允许的host是localhost。
修改数据:update user set host='%' where user='root'; # 把user为root的host改为%,表示允许root用户在所有IP上登录。
重启mysql:/etc/init.d/mysql restart