Navicat远程连接Linux下的mariadb数据库

本文详细介绍了当遇到无法远程连接MySQL数据库的问题时,如何检查防火墙设置和端口开放情况,以及如何通过增加远程登录用户并授权来解决Host‘XXX’isnotallowedtoconnecttothismariadbserver错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:为了方便修改管理数据库。(当然你可以完全不需要远程连接,自己慢慢用sql语句操作数据库)

首先连接不到的可能性:
1.防火墙是否开启并打开了sql的端口(默认3306)。
个人情况:使用firewall-cmd --zone=public --list-ports确认防火墙状态。显示防火墙根本没开启!!
当然,开启了的话可以使用firewall-cmd --zone=public --add-port=3306/tcp --permanent打开3306端口。
在腾讯云服务器也可以不用那么麻烦,直接在安全组添加3306的规则就好(自行百度)

2.以上完成后还是不行,报:Host ‘XXX’ is not allowed to connect to this mariadb server 错误

增加允许远程连接 MySQL 用户并授权。

1)登陆mysql

2)创建远程登陆用户并授权,在要链接的服务器上操作

mysql> grant all PRIVILEGES on db_name.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;

上面的语句表示将数据库 db_name 的所有权限授权给 username 这个用户,允许 username 用户在 xxx.xxx.xx.x 这个 IP 进行远程登陆,并设置 username 用户的密码为 password。

分析参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

db_name.* 表示上面的权限是针对于哪个表的,db_name指的是数据库名称,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“.”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

username表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

xxx.xxx.xx.x 表示允许远程连接的 IP 地址,你的IP,如果想不限制链接的 IP 则设置为“%”即可。

password 为用户username的密码。

最后执行了上面的语句后,一般都会立即生效,返回值如下:

Query OK, 0 rows affected (0.01 sec)

如果没有上面的语句那么请执行下面的命令,即可立即生效。

Mysql> flush privileges

完美解决!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值