解决虚拟机上的mysql只能被本地访问这个问题
为了让任意IP都能访问到该mysql,我们可以从两个方面来考虑
1、查看mysql这个数据库(安装mysql时默认会创建的一个数据库)中user表里root账号所对应的host是不是为%
注:当host的值为%时,表示可被任意IP访问;当host的值为localhost时,表示只能被本地访问。
一般来说,若不做任何修改,新安装的mysql,root账号所对应的host为localhost;所以我们只需将localhost改为%即可。
# 登入mysql mysql -u root -p # 选择mysql数据库 use mysql; # 查看user表 select user, host from user; # 修改host update user set host='%' where user='root';
# 刷新
flush privileges;
至此,一般可解决任意IP访问该mysql数据库。
但事情往往又不是那么简单!
由于现在最新版的Ubuntu或centos都是默认安装mysql8.x;而实际开发过程用的更多的是5.7.
故此不能使用默认安装方式安装mysql,本人查看了网上资料,亲自试验了使用deb压缩包安装的方法。
具体安装方法:https://blog.csdn.net/m0_46470316/article/details/111127185
注:这种手动安装方式比默认安装麻烦多了,且容易出错;但目前还没有发现更简单的方法安装低版本的MySQL。
好不容易安装成功,但你会发现无法远程连接该数据库,只能本地访问,即使用上了第一种方法将host改为%都没用。
此问题根本原因没有去深究,我猜想也许和下载的.deb包中的默认配置有关有;具体解决步骤如下:
# 查看mysql安装目录 whereis mysql # 一般来说配置文件在/etc/mysql中 # 进入/etc/mysql cd /etc/mysql # 编辑my.cnf文件,插入如下两行代码(表示允许任意ip地址访问) [mysqld] bind-address=0.0.0.0 # 重启mysql sudo service mysql restart # 若后续出现如下问题请参考https://www.cnblogs.com/csyblog/p/10670802.html Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
至此,我遇到的问题终于解决;
若有后续,随缘补充。