解决mac远程连接数据库的所有问题

解决mac远程连接数据库的所有问题

背景

在mac上弄了一个centso7.9的虚拟机,打算学习一下mysql数据库。

先吐槽一下装mysql的艰辛历程:

我的虚拟机是arm架构,起初安装的是8.0.34版本,未曾想到这个版本安装完毕之后有很大的问题,就是啥啥文件都没有呗,感觉装了一个假的mysql,后来决定安装8.0.28版本,很顺利,很舒服。不知道大家有没有遇到过这个问题,求指点。

我的需求是想在本机连接上虚拟机中的mysql数据库,分享一下这个 过程遇到的一些问题和解决方案供大家参考。

我的mac本机安装的mysql版本也是8.0.28。

问题

3306端口被占用,无法进行远程连接

linux终端输入:

netstat -apn | grep 3306

查看3306端口(因为数据库是通过3306端口连接的),我这里是没有占用的,如果你的出现127.0.0.1:3306,这说明这个端口被127.0.0.1占用了,可能需要你查看一下该端口的进程然后kill掉。

[root@localhost etc]# netstat -apn|grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      19130/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      19130/mysqld

然后再检查3306端口,如果出现上图的:::3306,则说明3306的端口可以被连接。

远程登陆没有权限

如果你继续尝试连接,结果发现报了错误:

ERROR 1130 (HY000): Host '192.168.252.129' is not allowed to connect to this MySQL server

这说明root用户名不能远程登陆,这就需要你**设置远程访问权限**。

linux连接上mysql, 将数据库中的 user 表中用户名为 ‘root’ 的用户的 host 字段更新为 ‘%’,意味着用户可以从任何主机访问数据库。

在 MySQL 中,host 字段用于指定允许连接到数据库的主机地址。当 host 字段的值为 ‘%’ 时,表示该用户可以从任何主机连接到数据库,这通常用于授权超级用户 ‘root’ 从任何地方连接到 MySQL 数据库。

USE mysql;
UPDATE USER SET host='%' WHERE user='root'; 
FLUSH PRIVILEGES;	//刷新访问权限表

查看是否更改成功:

mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.00 sec)

开放端口

完成上面两步如果还是没有连接,可能是防火墙打开了,这个时候你需要关闭防火墙,远端才能连接上。

查看一下防火墙状态:

service iptables status

如果你没有iptables这个文件,那么参照这个解决方案安装iptables-services

服务 iptables 信息读取出错:没有那个文件或目录

然后我们打开3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

打开端口后,需要重启一下防火墙:

systemctl restart firewalld

查看已打开的防火墙端口:可以看见我们已经是打开了3306这个端口

[root@localhost etc]# firewall-cmd --list-ports
3306/tcp

另外如果想要关闭端口只需要

firewall-cmd --zone=public --remove-port=3306/tcp --permanent

然后重启防火墙就OK了

更改密码的加密模式

最开始使用的是sequel pro,连接的时候出现了问题
在这里插入图片描述

在数据库中更改一下密码的加密模式

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';

这里的yourusername改为root,如果需要远程连接的话localhost更改成%yourpassword填写为你的密码。

然后再重试远程连接,应该就可以了。

换一个软件吧

好不容易连接上sequel pro,结果告诉我出现了未知错误,这咋办
在这里插入图片描述
晕,决定放弃使用sequel pro。了解到sequel pro已经很久没有维护了,但是 Sequel Pro 的合作者 Jakub Kašpar 自己开发了sequel Ace,这个在app store能下载,果然顺利连上了。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值