解决虚拟机上的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'

至此,我遇到的问题终于解决;

若有后续,随缘补充。

posted @ 2023-01-14 13:28  先娶国王后取经  阅读(1351)  评论(0编辑  收藏  举报