远程直接连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

不使用SSH登录远程主机直接连接远程数据库

修改MySQL登录权限

1、登录MySQL

mysql -u root -p
然后输入密码,进入mysql

2、修改mysql库的user表

修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
(默认的账号的host属性都是localhost,意思是这个账号只能本地使用,如果要使用某个账号来远程登录,必须将账号的host属性值更改成%。)

mysql> use mysql;
mysql> update user set host = '%' where user = 'JavaWeb';
mysql> select user,host from user;
mysql> flush privileges;//刷新数据库

在这里插入图片描述

3、防火墙开放3306端口

查看 firewalld 状态
systemctl status firewalld
在这里插入图片描述

开启 firewalld
systemctl start firewalld
在这里插入图片描述
开放端口

// --permanent 永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent 

重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=3306/tcp
删除
firewall-cmd --zone=public --remove-port=3306/tcp --permanent

Navicat直接连接远程数据库报错

【报错】Can’t connect to MySQL server (10060)

1、网络问题

看看能不能ping通
在这里插入图片描述

2、mysql账户设置

mysql账户是否不允许远程连接

--  mysql -u root -p

--  show databases;

--  use mysql;
 
--  select host,user from user

若【要是用】的用户显示host为localhost 则需要授权 root 用户的所有权限并设置远程访问

-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;     //任何远程主机都可以访问数据库  
 
-- FLUSH PRIVILEGES;    //需要输入次命令使修改生效  
 
-- EXIT    //退出 

也可以通过修改表来实现远程:(修改整个user表)

-- use mysql;  
 
-- update user set host = '%' where user = 'root';  
 
-- select host, user from user; 

3、防火墙端口未开放

root@iZ2zee2l6djknfZ ~]# firewall-cmd --list-ports
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 8001/tcp 8001/udp
[root@iZ2zee2l6djknfZ ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@iZ2zee2l6djknfZ ~]# firewall-cmd --reload
success
[root@iZ2zee2l6djknfZ ~]# firewall-cmd --list-port
20/tcp 21/tcp 22/tcp 80/tcp 8888/tcp 39000-40000/tcp 8001/tcp 8001/udp 3306/tcp

可以看出一开始mysql3306端口没有开放 ,然后此处开放,然后刷新就可以了

其他防火墙命令

#centos7查看防火墙所有信息
firewall-cmd --list-all

#centos7查看防火墙开放的端口信息
firewall-cmd --list-ports

#新增一个开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#说明:
#–zone #作用域
#–add-port=80/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
 
#新增多个端口:
firewall-cmd --zone=public --add-port=80-90/tcp --permanent

#删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent #重新加载firewall-cmd --reload

#查看本机已经启用的监听端口centos7以下使用netstat -ant,7使用ss
ss -ant

#centos7启动防火墙
systemctl start firewalld.service

#centos7停止防火墙/关闭防火墙
systemctl stop firewalld.service

#centos7重启防火墙
systemctl restart firewalld.service
 
 
#设置开机启用防火墙
systemctl enable firewalld.service

#设置开机不启动防火墙
systemctl disable firewalld.service

4、查看云服务器商是否配置安全组规则

其实出现这个错误的原因也不外乎以上几个方面,相信按照上面的思路找出原因,定能将问题解决掉

【报错】1045:Access denied for user ‘root’@’localhost’(using password: YES)

错误原因:当登录MySQL数据库出现 Error 1045 错误时,表明你输入的用户名或密码错误被拒绝访问了;MySQL服务搭建后,默认root用户是不能进行远程访问连接的。

解决方法

(1)改表法
可能是你的账号不允许从远程登录,只能在localhost本地登录数据库。建议在数据库搭建时,创建一远程连接的用户或者在localhost的主机上将mysql数据库下的"user"表里的"root"用户开启远程登录(把localhost这个值替换为%)。
(2)授权法
授权格式(mysql中不区分大小写):
GRANT 权限 ON 数据库.* TO “用户名”@ “登录主机” IDENTIFIED BY “密码”;
在这里插入图片描述

参考文章:
MySQL错误:Can’t connect to MySQL server (10060) 解决方案
Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’
Centos7开放3306端口

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值