远程连接MySQL数据库

起因

我想要在Windows下的DataGrip远程连接到我服务器的MySQL,但是总是连接被拒绝。之后突然想到我的MySQL基本没有配置过,是不是不能远程连接。

然后查询下发现,出于安全的考虑,默认情况下MySQL只允许本地连接,不允许从别的服务器远程连接。

后来主要参考卡拉云的方法,感谢这个文章

编辑 MySQL 配置文件

首先打开 mysqld.cnf 配置文件。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

image-20220503141056992

找到 bind - address = 127.0.0.1

image-20220503141108617

默认情况下, bind - address 的值为 127.0.0.1 ,所以只能监听本地连接。我们需要将这个值改为远程连接 ip 可访问,可使用通配符 ip 地址 *::0.0.0.0 ,当然也可以是单独的固定 ip,这样就仅允许指定 ip 连接,更加安全。

我是修改成了0.0.0.0

保存退出

  • Ctrl X保存退出
  • 提示:save modified [buffer]...? ,选择 :yes
  • 又提示:file name to write :***.launch ,选择:Ctrl+T
  • 在下一个界面用 上下左右按键 选择要保存的文件名
  • 然后直接点击 Enter 按键即可保存.

如果修改无法保存(该文件为只读文件)

  • 切换到mysqld.cnf目录下
  • sudo [chmod] 777 mysqld.cnf
  • 修改保存后需要继续把权限修改回来,否则配置文件不会生效
  • sudo chmod 644 mysqld.cnf

然后重启 MySQL 服务,使刚刚编辑的 mysqld.cnf 文件生效:

sudo systemctl restart mysql

image-20220503160900047

之前是直接说拒绝连接,现在可以通过密码确认了。但是继续出现了问题,我输入了密码之后显示错误、

[HY000][1130] null,  message from server: "Host '125.47.27.199' is not allowed to connect to this MySQL server".

创建远程登录用户

搜索问题发现,虽然我设置了可以从别的地方远程登录,但是还没有给账号远程登录的权限,我得说明能让哪些用户访问哪些特定得数据库和表。

将用做远程登录的账号 host 改为任意主机(%)或者是固定主机 ip 。可以使用 RENAME USER 命令来实现:

RENAME USER 'username'@'localhost' TO 'username'@'%';

还有第二种方法,专门创建一个新的账号用于远程登录,我这里参考的是别人的第二个方法,自己专门创建了一个用于远程登录的账号。这是创建账号的命令(password输入你自己的密码)

CREATE USER 'syz-remote'@'%' IDENTIFIED BY 'password';

同时还要为这个账号授权

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'syz-remote'@'%' with grant option;

我之前没有授权,然后使用Golang连接数据库报错,可以查看该文章

(203条消息) Error 1044: Access denied for user ‘syz-remote‘@‘%‘ to database ‘webapp‘_weixin_46272577的博客-CSDN博客

Error 1044: Access denied for user 'syz-remote'@'%' to database 'webapp'

最后,运行 FLUSH PRIVILEGES 命令,刷新 MySQL 的系统权限相关表,更新缓存。

FLUSH PRIVILEGES;

至此,我的DataGrip也成功的连接上了我的服务器上的MySQL

image-20220504002423896

参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
远程连接 MySQL 数据库,你需要确保以下几个步骤已经完成: 1. 在 MySQL 服务器上启用远程访问:默认情况下,MySQL 服务器只允许本地访问。你需要编辑 MySQL 配置文件,通常是 my.cnf 或 my.ini 文件,将 `bind-address` 参数设置为服务器的 IP 地址或 `0.0.0.0`,以允许来自其他主机的连接。保存并重启 MySQL 服务。 2. 创建数据库用户并授予权限:在 MySQL 中,每个用户都有特定的主机(host)权限。你需要创建一个具有远程访问权限的用户并为其授予适当的权限。可以使用以下命令创建用户: ```sql CREATE USER 'username'@'%' IDENTIFIED BY 'password'; ``` 然后,为该用户授予访问数据库的权限: ```sql GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%'; ``` 这将授予用户对指定数据库的所有权限。 3. 配置防火墙和网络设置:确保服务器上的防火墙允许来自客户端连接的流量通过 MySQL 的默认端口(通常是 3306)。如果你使用的是云服务提供商,还需要检查其安全组或网络配置,确保允许远程 MySQL 连接。 完成上述步骤后,你可以在客户端使用 MySQL 客户端工具连接到远程 MySQL 数据库。例如,可以使用 MySQL 命令行工具或图形化工具(如 Navicat、MySQL Workbench 等)进行连接。在连接时,提供服务器的 IP 地址、端口、用户名和密码即可。 请注意,远程连接 MySQL 数据库可能会带来安全风险。确保采取适当的安全措施,如使用强密码、限制访问权限等,以保护你的数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值