当前位置:   article > 正文

解决mac远程连接数据库的所有问题_macos 开放端口

macos 开放端口

解决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
  • 1

查看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
  • 1
  • 2
  • 3

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

远程登陆没有权限

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

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

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

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

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

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

查看是否更改成功:

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

开放端口

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

查看一下防火墙状态:

service iptables status
  • 1

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

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

然后我们打开3306端口:

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

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

systemctl restart firewalld
  • 1

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

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

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

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

然后重启防火墙就OK了

更改密码的加密模式

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

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

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

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

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

换一个软件吧

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/857182
推荐阅读
相关标签
  

闽ICP备14008679号